[返回电脑前线首页]·[所有跟帖]·[ 回复本帖 ] ·[热门原创] ·[繁體閱讀]·[版主管理]
AI利器 CUDA的前世今生
送交者: 憨厚熊[♂★★声望品衔10★★♂] 于 2023-10-25 19:45 已读 33972 次  

憨厚熊的个人频道

CUDA是什么? 6park.com

CUDA是Compute Unified Device Architecture的缩写,意思是统一计算设备架构。它是NVIDIA推出的一种基于C语言的编程框架,可以让开发者在GPU上编写和运行通用的程序。GPU是什么?GPU是Graphics Processing Unit的缩写,意思是图形处理单元。它是一种专门为图形处理而设计的芯片,可以实现高清晰度的3D渲染和视频编解码。 6park.com

为什么要用GPU做通用计算? 6park.com

因为GPU有一个特点,就是它有很多个核心,每个核心都可以同时执行一个线程。线程是什么?线程是程序中最小的执行单元,可以理解为一条指令序列。为什么要用多个核心来执行多个线程?因为这样可以提高并行计算的效率。并行计算是什么?并行计算是指同时执行多个计算任务,以达到加速的目的。为什么要加速计算?因为有些计算任务非常复杂和耗时,比如科学计算、机器学习、密码学等,如果用单个核心或者单个CPU来执行,可能要花费很长的时间。 6park.com

CUDA的诞生 要了解CUDA是怎么诞生的,我们要回到2006年,那时候,NVIDIA已经在图形处理市场占据了优势,而它的竞争对手ATI则逐渐失去了市场份额。NVIDIA不满足于此,它想要在技术上更进一步,它有一个大胆的想法,就是让GPU不仅能够处理图形任务,还能够处理通用的计算任务。这样一来GPU就可以在科学计算、机器学习、密码学等领域发挥更大的作用。但是要实现这个想法并不容易,因为当时的GPU和CPU之间存在着很大的差异和障碍,比如:

- GPU和CPU之间使用PCIe(Peripheral Component Interconnect Express)接口来通信,这个接口的带宽和延迟都很低,导致数据传输效率很差。 - GPU和CPU之间使用不同的指令集和编程模型,导致程序开发和移植困难。 - GPU和CPU之间使用不同的内存空间和管理方式,导致内存访问和同步复杂。 - GPU和CPU之间使用不同的调度和执行机制,导致任务分配和协调困难。 6park.com

为了解决这些问题,NVIDIA需要找到一个合作伙伴,一个能够提供强大的CPU,并且愿意支持NVIDIA的想法的合作伙伴。而这个合作伙伴就是Intel,Intel在那时候是CPU市场的霸主,它拥有强大的技术实力和市场影响力。但在当时,Intel也开始遇到一系列的挑战和压力: 6park.com

- Intel的CPU已经遇到了摩尔定律(Moore’s Law)的瓶颈,即单核心性能提升越来越难。 6park.com

- Intel的CPU已经遇到了功耗墙(Power Wall)的限制,即功耗增加越来越快。 6park.com

- Intel的CPU已经遇到了多核心扩展(Multi-Core Scaling)的困难,即多核心并行效率越来越低。 6park.com

- 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。这种计算平台不仅可以处理图形任务,还可以处理通用的计算任务,这是一种创新的技术突破,也是一种革命性的市场变革。 6park.com

CUDA引发革命 6park.com

CUDA的诞生引发了一场革命。它让GPU不再只是一个图形处理器,而是一个通用计算器;它让开发者不再只是一个游戏制作人,而是一个科学家、一个工程师、一个艺术家;它让计算不再只是一个数字运算,而是一个创造奇迹。CUDA在各个领域都展现了惊人的性能和潜力,比如:- 在科学计算方面,CUDA可以加速各种物理、化学、生物、天文等模拟和计算,比如分子动力学、流体力学、量子力学、蛋白质折叠、天体碰撞等。- 在机器学习方面,CUDA可以加速各种神经网络、深度学习、自然语言处理、计算机视觉等算法和应用,比如图像识别、语音识别、自然语言生成、人脸识别等。- 在密码学方面,CUDA可以加速各种加密、解密、哈希、签名等算法和应用,比如AES、RSA、SHA、ECDSA等。- 在艺术方面,CUDA可以加速各种图像处理、视频处理、音频处理等算法和应用,比如滤镜、特效、合成、降噪等。 6park.com

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支持了动态并行性和统一虚拟地址空间。 6park.com

- 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进行的曝光。 6park.com

CUDA的未来

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

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

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

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

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

CUDA在各个领域都展现了惊人的性能和潜力,它让计算不再只是一个数字运算,而是一个创造奇迹。CUDA在每一代都有新的功能和优化,它在不断地演进和创新。CUDA的未来可能会支持更多的编程语言和框架、更多的硬件平台和设备、更多的计算模型和范式、更多的优化技术和工具。


贴主:憨厚熊于2023_10_25 19:52:33编辑
喜欢憨厚熊朋友的这个贴子的话, 请点这里投票,“赞”助支持!
[举报反馈]·[ 憨厚熊的个人频道 ]·[-->>参与评论回复]·[用户前期主贴]·[手机扫描浏览分享]·[返回电脑前线首页]
帖子内容是网友自行贴上分享,如果您认为其中内容违规或者侵犯了您的权益,请与我们联系,我们核实后会第一时间删除。

所有跟帖:        ( 主贴楼主有权删除不文明回复,拉黑不受欢迎的用户 )


    用户名:密码:[--注册ID--]

    标 题:

    粗体 斜体 下划线 居中 插入图片插入图片 插入Flash插入Flash动画


         图片上传  Youtube代码器  预览辅助

    打开微信,扫一扫[Scan QR Code]
    进入内容页点击屏幕右上分享按钮

    楼主本栏目热帖推荐:

    >>>>查看更多楼主社区动态...






    [ 留园条例 ] [ 广告服务 ] [ 联系我们 ] [ 个人帐户 ] [ 版主申请 ] [ Contact us ]