(原标题:自便CUDA的控制)
如果您但愿不错经常碰面,接待标星保藏哦~
来源:实质由半导体行业不雅察(ID:icbank)编译自HPCwire,谢谢。
跟着东说念主工智能不断浸透到生计的各个领域,这些用具将开动在哪种软件上仍然是一个问题。软件堆栈(或协同职责以在估量系统上达成特定功能的软件组件逢迎)的遴荐在以 GPU 为中心的东说念主工智能任务估量需求中变得越来越挫折。
跟着 AI 和 HPC 应用不断突破估量才智的极限,软件堆栈的遴荐会显赫影响性能、成果和蛊惑东说念主员的坐褥力。
面前,软件堆栈竞争中有三个主要参与者:Nvidia 的估量谐和建立架构 (CUDA)、英特尔的 oneAPI 和 AMD 的 Radeon Open Compute (ROCm)。天然它们各有优舛错,但 Nvidia 的 CUDA 持续占据主导地位,主如若因为其硬件在 HPC 和面前的 AI 领域处于进局面位。
在这里,咱们将深入磋商每个软件堆栈的复杂性——探索它们的功能、硬件相沿以及与流行的 AI 框架 PyTorch 的集成。此外,咱们将终末快速了解两种高档 HPC 谈话:Chapel 和 Julia。
Nvidia 的 CUDA
Nvidia 的 CUDA 是该公司专有的并行估量平台和软件堆栈,用于在其 GPU 上进行通用估量。CUDA 提供了一个应用法子编程接口 (API),使软件或者运用 Nvidia GPU 的并行处理才智来加快估量。
来源必须提到 CUDA,因为它在 AI 和 GPU 密集型 HPC 任务的软件堆栈领域占据主导地位,这是有充分原理的。CUDA 自 2006 年就已存在,这使其领有悠久的第三方相沿历史和闇练的生态系统。很多库、框架和其他用具都挑升针对 CUDA 和 Nvidia GPU 进行了优化。对 CUDA 堆栈的永恒相沿是其相关于其他堆栈的主要上风之一。
Nvidia 提供了一套全面的用具集行为 CUDA 平台的一部分,包括 CUDA 编译器,如Nvidia CUDA Compiler (NVCC)。还有很多用于调试和优化 CUDA 应用法子的调试器和分析器以及用于分发 CUDA 应用法子的蛊惑用具。此外,CUDA 的悠久历史催生了大宗的文档、教程和社区资源。
在究诘 AI 任务时,CUDA 对 PyTorch 框架的相沿也至关挫折。该软件包是一个基于 Torch 库的开源机器学习库,主要用于估量机视觉和天然谈话处理中的应用。PyTorch 对 CUDA 提供了平淡且完善的相沿。PyTorch 中的 CUDA 集成过程高度优化,可在 Nvidia GPU 上进行高效的检修和推理。一样,CUDA 的闇练意味着不错探问 PyTorch 不错使用的广宽库和用具。
除了大宗加快库除外,Nvidia 还为 AI 磋商东说念主员和软件蛊惑东说念主员提供了完好意思的深度学习软件堆栈。该堆栈包括流行的 CUDA 深度神经相聚库 (cuDNN),这是一个 GPU 加快的 度神经相聚基元库。CuDNN 可加快平淡使用的深度学习框架,包括 Caffe2 、Chainer 、Keras 、MATLAB 、MxNet 、PaddlePaddle 、PyTorch和TensorFlow。
更挫折的是,CUDA 旨在与扫数 Nvidia GPU 配合使用,从破费级 GeForce 显卡到高端数据中心 GPU,为用户提供可使用硬件的平淡多功能性。
尽管如斯,CUDA 仍有革新空间,而 Nvidia 的软件堆栈也存在一些用户必须谈判的舛错。来源,尽管 CUDA 不错免费使用,但它是 Nvidia 领有的专有工夫,因此不是开源的。这种情况将蛊惑东说念主员锁定在 Nvidia 的生态系统和硬件中,因为在 CUDA 上蛊惑的应用法子无法在非 Nvidia GPU 上开动,除非进行紧要代码更正或使用兼容层。一样,CUDA 的专有性质意味着软件堆栈的蛊惑阶梯图皆备由 Nvidia 终结。蛊惑东说念主员对 CUDA 代码库的孝顺或修改才智有限。
蛊惑东说念主员还必须谈判 CUDA 的许可老本。CUDA 自身关于非交易用途是免费的,但交易应用可能需要购买奋斗的 Nvidia 硬件和软件许可证。
AMD 的 ROCm
AMD 的 ROCm 是很多蛊惑东说念主员遴荐的另一种软件堆栈。天然 CUDA 可能占据主导地位,但 ROCm 却名满全国,因为它是用于 GPU 估量的开源软件堆栈。此功能允许蛊惑东说念主员自界说和孝顺代码库,促进社区内的互助和翻新。ROCm 的一个关节上风是它相沿 AMD 和 Nvidia GPU,从而达成跨平台蛊惑。
这一特殊功能由异构估量可移植接口 (HIP)达成,它使蛊惑东说念主员或者创建可在不同 GPU 平台上开动的可移植应用法子。天然 ROCm 相沿破费级和专科级 AMD GPU,但其主要重心是 AMD 专为专科职责负载盘算的高端 Radeon Instinct 和 Radeon Pro GPU。
与 CUDA 一样,ROCm 提供了一系列用于 GPU 编程的用具。这些用具包括 C/C++ 编译器(如 ROCm 编译器逢迎、AOMP 和 AMD 优化 C/C++ 编译器)以及 Fortran 编译器(如 Flang)。此外,还有适用于各式领域的库,举例线性代数、FFT 和深度学习。
尽管如斯,与 CUDA 比较,ROCm 的生态系统相对较新,需要在第三方相沿、库和用具方面奋发自强。与 CUDA 提供的大宗文档、教程和相沿比较,进入商场的迟到也意味着文档和社区资源愈加有限。关于 PyTorch 来说,情况尤其如斯,它相沿 ROCm 平台,但由于其历史和闇练度较短,需要在性能、优化和第三方相沿方面赶上 CUDA。ROCm 上 PyTorch 的文档和社区资源比 CUDA 的更有限。不外,AMD在这方面正在获得进展。
与 Nvidia 一样,AMD 也提供了大宗的ROCm 库。AMD 为深度学习提供了一个与 cuDNN 额外的库,名为 MIOpen,用于 PyTorch 的 ROCm 版块(以过甚他流行用具)。
此外,天然 ROCm 同期相沿 AMD 和 Nvidia GPU,但由于驱动法子支出和优化挑战,其在 Nvidia 硬件上开动时的性能可能无法与 CUDA 相匹配。
英特尔的 oneAPI
英特尔的 oneAPI 是一种谐和的跨平台编程模子,相沿针对各式硬件架构和加快器进行蛊惑。它相沿多种架构,包括来自不同供应商的 CPU、GPU、FPGA 和 AI 加快器。它旨在为异构估量提供与供应商无关的责罚决议,并运用 SYCL 等行业尺度。此功能意味着它不错在 AMD 和 Nvidia 等外部供应商的架构以及英特尔的硬件上开动。
与 ROCm 一样,oneAPI 是一个开源平台。因此,与 CUDA 比较,富利配资oneAPI 有更多的社区参与和对代码库的孝顺。oneAPI 相沿开源蛊惑,相沿多种编程谈话和框架,包括带有 SYCL 的 C/C++、Fortran、Python 和 TensorFlow。此外,oneAPI 为异构估量提供了谐和的编程模子,简化了跨不同硬件的蛊惑。
一样,与 ROCm 一样,oneAPI 也存在一些与堆栈闇练度联系的舛错。行为一个较年青的平台,oneAPI 需要在第三方软件相沿和针对特定硬件架构的优化方面赶上 CUDA。
从 PyTorch 中的具体用例来看,与闇练的 CUDA 集成比较,oneAPI 仍处于早期阶段。PyTorch 不错运用 oneAPI 的数据并行 Python (DPPy) 库在 Intel CPU 和 GPU 上进行漫衍式检修,但对 oneAPI GPU 的原生 PyTorch 相沿仍处于蛊惑阶段,尚未准备好参预坐褥。
话虽如斯,值得提神的是,oneAPI 的上风在于其基于绽开尺度的门径和跨平台可移植性的后劲。如果操心供应商锁定况且在不同硬件架构上开动 PyTorch 模子的才智是优先事项,那么 oneAPI 可能是一个可行的遴荐。
面前,如果 Nvidia GPU 上的最大性能是 PyTorch 职责负载蛊惑东说念主员的主要意见,那么 CUDA 仍然是首选,因为它领有完善的生态系统。也即是说,寻求与供应商无关的责罚决议的蛊惑东说念主员或主要使用 AMD 或英特尔硬件的蛊惑东说念主员可能但愿分裂依赖 ROCm 或 oneAPI。
天然 CUDA 在生态系统蛊惑方面处于进局面位,但其专有性质和硬件特异性可能会使 ROCm 和 oneAPI 成为某些蛊惑东说念主员更故意的责罚决议。此外,跟着时代的推移,这些堆栈的社区相沿和文档将持续增长。CUDA 面前可能占据主导地位,但这种情况在将来几年可能会发生变化。
轮廓出堆栈
总体而言,很多蛊惑东说念主员更心爱创建孤苦于硬件的应用法子。在 HPC 中,出于性能原因,硬件优化是合理的,但很多当代法子员更心爱专注于他们的应用法子,而不是底层硬件的微细离别。
PyTorch 即是这一趋势的一个很好的例子。Python 并不是一种额外快的谈话,但 Hugging Face 上 92% 的模子都是PyTorch 特有的。只有硬件供应商在其库上构建了 PyTorch 版块,用户就不错专注于模子,而不消操心底层硬件的互异。天然这种可移植性很好,但它并不可保证性能,而这恰是底层硬件架构可能弘扬作用的场地。
天然,Pytorch 基于 Python,这是很多法子员最酷爱的第一谈话。这种谈话频繁以易用性疏浚性能(尤其是并行编程等高性能功能)。当使用 Python 启动 HPC 神志时,它们倾向于迁徙到基于漫衍式 C/C++ 和 MPI 或使用 OpenMP 的线程应用法子的可彭胀高性能代码。这些遴荐频繁会导致“两种谈话”问题,蛊惑东说念主员必须经管其代码的两个版块。
面前,两种“较新”的谈话 Chapel 和 Julia 提供了一种易于使用的谈话责罚决议,可提供高性能编码环境。除其他外,这些谈话试图“轮廓”编写并行 HPC 集群、多核处理器和 GPU/加快器环境应用法子所需的很多细节。在它们的基础上,它们仍然依赖于上头提到的供应商 GPU 库,但频繁不错浅近构建或者在开动时识别和允洽底层硬件环境的应用法子。
1
Chapel
Chapel(Cascade 高坐褥力谈话)领先由 Cray 蛊惑,是一种并行编程谈话,旨在达成比面前编程谈话(即“Fortran/C/C++ 加 MPI”)更高档别的抒发。收购 Cray 的惠普企业面前相沿该谈话的蛊惑,将其行为 Apache 许可证第 2 版下的开源神志。面前版块为2.0 版,Chapel 网站发布了一些令东说念主印象深远的并行性能数据。
Chapel 默许编译为二进制可引申文献,但也不错编译为 C 代码,用户不错遴荐编译器。Chapel 代码不错编译为可从 C、Fortran 或 Python(过甚他谈话)调用的库。Chapel 通过为 Nvidia 和 AMD 图形处理单位生成代码来相沿 GPU 编程。
Chapel可用的库越来越多。最近有一个名为 Chainn 的神经相聚库可用于 Chapel,它挑升用于使用并行编程构建深度学习模子。Chainn 在 Chapel 中的达成使用户或者运用该谈话的并行编程功能,并在从条记本电脑到超等估量机的大规模上检修深度学习模子。
2
Julia
Julia 由麻省理工学院蛊惑,旨在成为上述双谈话问题的快速、纯真且可彭胀的责罚决议。 Julia 的蛊惑职责始于 2009 年,那时 Jeff Bezanson、Stefan Karpinski、Viral B. Shah 和 Alan Edelman 入辖下手创建一种既高档又快速的绽开式工夫估量谈话。
与 Python 一样,Julia使用快速的即时编译器提供反应式阐发编程环境(REPL 或 read–eval–print loop ) 。该谈话语法雷同于 Matlab,并提供很多高档功能,包括:
1、多重分配:一个函数不错凭据输入类型有多种达成(门径)(易于创建可移植和自允洽代码)
2、动态类型系统:用于文档、优化和转念的类型
3、性能接近 C 等静态类型谈话。
4、内置包经管器
5、专为并行和漫衍式估量而盘算
6、不错编译为二进制可引申文献
Julia 还领有适用于 CUDA、ROCm、OneAPI 和 Apple 的GPU 库,可与机器学习库 Flux.jl(以过甚他库)一皆使用。Flux 是用 Julia 编写的,为 Julia 的原生 GPU 相沿提供了轻量级的轮廓。
Chapel 和 Julia 都提供了一种高档且可移植的 GPU 编程门径。与很多荫藏底层硬件细节的谈话一样,它们可能会有一些性能亏本。不外,蛊惑东说念主员频繁景色殉国几个百分点的性能来疏浚易移植性。
https://www.hpcwire.com/2024/06/21/spelunking-the-hpc-and-ai-gpu-software-stacks/
点这里加关怀,锁定更多原创实质
*免责声明:本文由作家原创。著作实质系作家个东说念主不雅点,半导体行业不雅察转载仅为了传达一种不同的不雅点,不代表半导体行业不雅察对该不雅点赞同或相沿,如果有任何异议,接待联系半导体行业不雅察。
今天是《半导体行业不雅察》为您共享的第3805期实质,接待关怀。
『半导体第一垂直媒体』
及时 专科 原创 深度
公众号ID:icbank
心爱咱们的实质就点“在看”共享给小伙伴哦