分享

【干货】英伟达CUDA的前世今生

 imnobody2001 2024-03-05 发布于广东

图片

各位看官,小生三体智人,这厢有礼了,是一名新生代IT民工。

突发!英伟达将已经在网上公示的许可条款中“禁止使用转换层在其他硬件平台上运行基于 CUDA 的软件“的警告已添加到安装 CUDA 11.6 及更新版本时所附的最终用户许可协议(EULA)中。

为何?一个警告,会引起国内IT圈一阵哗然!这取决于CUDA的地位,它在AI领域就是神一样的存在,YYDS,是NVIDIA的“命根子”。这表面上是为了防止像ZLUDA类项目,实则是为了防止中国 GPU 厂商借助转换层利用 CUDA 代码。

那么,CUDA是什么

CUDA是Compute Unified Device Architecture的缩写,意思是统一计算设备架构。它是NVIDIA推出的一种基于C语言的编程框架,可以让开发者在GPU上编写和运行通用的程序。

图片

CUDA是一种基于GPU的通用计算框架是NVIDIA和intel在2006年合作开发的一种创新的技术方案,它让GPU和CPU通过一种新的互连技术来高效地交换数据,它让GPU不仅能够处理图形任务,还能够处理科学计算、机器学习、密码学等领域的复杂和耗时的计算任务。

CUDA是怎么诞生的?

2006年,NVIDIA已经在图形处理市场占据了优势,而它的竞争对手ATI则逐渐失去了市场份额。NVIDIA不满足于此,想在技术上更进一步,于是有一个大胆的想法,就是让GPU不仅能够处理图形任务,还能够处理通用的计算任务。这样一来GPU就可以在科学计算、机器学习、密码学等领域发挥更大的作用。

要实现这个想法并不容易,因为当时的GPU和CPU之间存在着很大的差异:

  • - GPU和CPU之间使用PCIe接口来通信,这个接口的带宽和延迟都很低,导致数据传输效率很差。
  • - GPU和CPU之间使用不同的指令集和编程模型,导致程序开发和移植困难
  • - GPU和CPU之间使用不同的内存空间和管理方式,导致内存访问和同步复杂。
  • - GPU和CPU之间使用不同的调度和执行机制,导致任务分配和协调困难。
为了解决这些问题,NVIDIA需要找到一个合作伙伴,一个能够提供强大的CPU,并且愿意支持NVIDIA的想法的合作伙伴。而这个合作伙伴就是Intel,Intel在那时候是CPU市场的霸主,它拥有强大的技术实力和市场影响力。而当时的Intel也面临着以下挑战:
  • Intel的CPU已遭遇摩尔定律(Moore’s Law)的瓶颈;
  • Intel的CPU已遭遇遇到功耗墙(Power Wall)的限制;
  • Intel的CPU已遭遇多核心扩展(Multi-Core Scaling)的困难;
  • Intel的CPU已遭遇新兴领域(Emerging Fields)的竞争,即科学计算、机器学习、密码学等领域对CPU提出了更高的要求。

Intel也有动机去寻找一种新的技术方案,一种能够提高CPU性能、降低CPU功耗、增强CPU并行性、拓展CPU应用范围的技术方案,而这种技术方案就是CUDA

在2006年秋天,NVIDIA和Intel达成了一项历史性的合作协议,他们共同开发了一种基于CUDA的新型GPU,即G80 GPU(GeForce 8800 GTX)。

图片

这款GPU不仅具有强大的图形处理能力,还有强大的通用计算能力,可以和intel的CPU,即Core 2 Duo,通过一种新的互连技术,即NvLink来高效地交换数据。

这样一来,NVIDIA和intel就完成了一种基于CUDA的新型计算平台,即GPU+CPU。这种计算平台不仅可以处理图形任务,还可以处理通用的计算任务,这是一种创新的技术突破,也是一种革命性的市场变革。

图片

CUDA的革命

CUDA诞生后,就开始了一场革命

它让GPU不再只是一个图形处理器,而是一个通用计算器;它让开发者不再只是一个游戏制作人,而是一个科学家、一个工程师、一个艺术家;它让计算不再只是一个数字运算,而是一个创造奇迹。

CUDA在各个领域都展现了惊人的性能和潜力,比如:

图片

- 在科学计算方面,CUDA可以加速各种物理、化学、生物、天文等模拟和计算,比如分子动力学、流体力学、量子力学、蛋白质折叠、天体碰撞等。
- 在机器学习方面,CUDA可以加速各种神经网络、深度学习、自然语言处理、计算机视觉等算法和应用,比如图像识别、语音识别、自然语言生成、人脸识别等。
- 在密码学方面,CUDA可以加速各种加密、解密、哈希、签名等算法和应用,比如AES、RSA、SHA、ECDSA等。
- 在艺术方面,CUDA可以加速各种图像处理、视频处理、音频处理等算法和应用,比如滤镜、特效、合成、降噪等。

图片

CUDA的演进

CUDA的革命并没有停止,它在不断地演进和创新。
从2006年的第一代CUDA1.0到至今的第十二代CUDA12.0,CUDA在每一代都有新的功能和优化,比如:
图片
- CUDA1.0:支持了128个线程块,每个线程块支持512个线程,总共有65536个线程。
- CUDA2.0:支持了512个线程块,每个线程块支持1024个线程,总共有524288个线程。
- CUDA3.0:支持了1024个线程块,每个线程块支持1024个线程,总共有1048576个线程。
- CUDA4.0:支持了动态并行性和统一虚拟地址空间。
- CUDA5.0:支持了动态库和GPU指针。
- CUDA6.0:支持了统一内存和多GPU协作。
- CUDA7.0:支持了C++11和NVVM编译器。
- CUDA8.0:支持了半精度浮点数和张量核心。
- CUDA9.0:支持了协作组和图形处理器。
- CUDA10.0:支持了异步任务流和多进程服务。
CUDA 11.0:支持了新的NVIDIA A100  GPU、多实例GPU(MIG)、新的互连技术。

CUDA 12.0:支持了新的 NVIDIA Hopper 和 NVIDIA Ada Lovelace 架构功能,并为所有GPU提供了额外的编程模型增强,包括新的PTX指令和通过更高级别的 C 和C++ API进行的曝光。

CUDA在每一代都有新的功能和优化,它在不断地演进和创新。CUDA的未来可能会支持更多的编程语言和框架、更多的硬件平台和设备、更多的计算模型和范式、更多的优化技术和工具。

CUDA未来可能会支持以下新功能:

- 支持更多的编程语言和框架,比如Python、Java、Rust等。

- 支持更多的硬件平台和设备,比如ARM、RISC-V手机、平板等。

- 支持更多的计算模型和范式,比如量子计算、神经元计算、符号计算等。

- 支持更多的优化技术和工具,比如自动并行化、自动调优、自动调试等。

【小编观点】:
国产ARM CPU+国产GPU/GPGPU/AI芯片” 将成为中国通用计算领域的主要未来,是最有可能在关键领域实现对“Intel CPU+NVIDIA GPU”国外算力的最佳组合替代方案。
因此,建议国内GPU/AI芯片厂商加紧与国产ARM路线CPU自研厂商(鲲鹏、飞腾等)进行通力合作,打造真正属于中国的国产AI算力,保障好中国的关键行业。

参考文献:
“汇川科技”公众号:CUDA的前世今生 (qq.com)

免责申明

本号聚焦相关芯片等技术分享,内容观点不代表本号立场,可追溯内容均注明来源。发布文章若存在版权等问题,请留言联系删除,谢谢。


行业交流

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多