CUDA是Nvidia于2006年推出的一套通用并行计算架构,旨在解决在GPU上的并行计算问题。其易用性和便捷性能够方便开发者方便的进行GPU编程,充分利用GPU的并行能力,可以大幅提高程序的性能。
自从CUDA诞生以来,CUDA生态系统也迅速的发展,包括了大量的软件开发工具、服务和解决方案。CUDA Toolkit包括了库、调试和优化工具、编译器和运行时库。
AMD ROCm是Radeon Open Compute (platform)的缩写,是2015年AMD公司为了对标CUDA生态而开发的一套用于HPC和超大规模GPU计算提供的开源软件开发平台,ROCm只支持Linux平台。
同样ROCm包含一些列的开发工具、软件框架、库、编译工具、编程模型等。
下图整理了Nvidia的CUDA生态和AMD的ROCm生态的对照。
2.1 编程模型和API
NVIDIA
|
AMD
|
功能描述
|
CUDA
|
HIP
|
为C/C++开发GPU加速程序提供全面的环境,API、Runtime、编译器、调试工具等。
|
OpenCL
|
OpenCL
|
面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,
|
OpenACC
|
|
并行计算指令,研究人员和技术程序员最常用的GPU并行编程模型。
|
|
OpenMP
|
OpenMP是一套编译器指令、库例程和环境变量的规范,可用于指定Fortran和C/C++程序中的高级并行性。
|
2.2 编译及工具链
NVIDIA
|
AMD
|
功能描述
|
NVCC
|
ROCmCC / HCC
|
编译器
|
CUDA-GDB
|
ROCgdb
|
debug工具
|
|
HIPify
|
将CUDA原生代码转换为HIP原生c++代码
|
Nvidia Nsight
|
ROCm Profiling Tools
|
性能分析工具
|
nvidia-smi
|
rocm-msi
|
系统管理界面和命令行界面的工具
|
2.3 GPU加速库
CUDA和ROCm的基础框架提供众多的支持库,包括基础数学库、AI支持库、通信库、并行库等一些列,下面将列出来做个对照:
NVIDIA
|
AMD
|
功能描述
|
cuBLAS
|
rocBLAS
|
基本线性代数库(basic linear algebra,BLAS)
|
cuFFT
|
rocFFT
|
快速傅里叶变换库(Fast Fourier Transforms)
|
CUDA Math Library
|
|
标准数学函数库
|
cuRAND
|
|
随机数生成(random number generation,RNG)
|
cuSOLVER
|
rocSOLVER
|
密集和稀疏直接求解器
|
cuSPARSE
|
rocSPARSE / rocALUTION
|
稀疏矩阵BLAS
|
cuTENSOR
|
rocWMMA
|
张量线性代数库
|
AmgX
|
|
用于模拟和隐式非结构化方法线性解算器
|
NVIDIA
|
AMD
|
功能描述
|
Thrust
|
Parallel STL / rocThrust
|
C++并行算法和数据结构库
|
NVIDIA
|
AMD
|
功能描述
|
nvJPEG
|
|
用于JPEG解码的高性能GPU加速库
|
Nvidia Performance Primitive
|
|
提供GPU加速的图像、视频和信号处理功能
|
Nvidia Video Codec SDK
|
|
硬件加速视频编码和解码的一整套API、示例和文档
|
NVIDIA
|
AMD
|
功能描述
|
NVSHMEM
|
|
OpenSHMEM标准的GPU内存,具有扩展以提高GPU性能。
|
NCCL
|
RCCL
|
多GPU、多节点通信
|
2.4 开发工具
参考资料:
从
ROC
m 3.9开始,该版本的
roc
m-smi已被弃用。
您可以在找到新的实现
可以通过更改分支来使用
roc
m-smi的旧
ROC
m版本。 仅master分支将具有此弃用通知
原始的
roc
m-smi CLI是通过解析和操作amdgpu sysfs池(和debugfs池)中的sysfs文件来实现的。 这样做是为了支持最终用户使用,但是表达了拥有SMI命令库的愿望,该愿望主要由Chris Freehill实现。 这导致拥有2个存储库,它们执行95%的相同任务,并与相同的文件进行交互,但彼此之间是完全隔离的。 由于这种分离,我们拥有一个项目而不是另一个项目中存在的功能,以及不一致的测试和性能。 因此,从
ROC
m 3.8开始,我们决定更改SMI CLI以使用该库以实现尽可能多的功能。 在
ROC
m 3.8中将
roc
m_s
Backend.AI是简化的基于容器的计算集群协调器,它承载各种编程语言和流行的计算/ ML框架,并具有可插拔的异构加速器支持,包括
CUDA
和
ROC
M。 它按需或使用可自定义的作业调度程序批量分配和隔离基础计算资源,以供多租户计算会话使用。 它的所有功能都以REST / GraphQL / WebSocket API的形式公开。
服务器端组件
如果要自己运行Backend.AI群集,则需要安装和配置以下服务器端组件。 LGPLv3许可所有服务器端组件,以促进开源社区中的非专有开放式创新。
如果仅按原样运行服务器端组件(例如,仅作为守护程序运行或在不修改代码的情况下导入组件),则无需打开服务/系统代码。 请联系我们(contact-at-lablup-com)以获得商业咨询,以及有关各个用例的更多许可详细信息/选项。
有关服务器安装和配置的详细信息,请访问。
API网关管理器
它将外部API请求从前端服务路由到各个代理。 它还可以监视和扩展多个代理程序的集群(几十到数百个)。
程序包名称空间: ai.backend.gateway和ai.backend.manager
roc
FFT
roc
FFT是用于计算用HIP编写的快速傅立叶变换(FFT)的软件库。 它是AMD基于的软件
生态
系统的一部分。 除AMD GPU设备外,该库还可以使用HIP工具与
CUDA
编译器一起编译,以在Nvidia GPU设备上运行。
安装预构建的软件包
从下载预构建的软件包,或者单击github版本标签并下载源,这可能比预构建的软件包更新。 发行说明可用于每个发行版的“发行版”选项卡。
sudo apt update && sudo apt install
roc
fft
从源头建造
roc
FFT使用hipcc编译,并使用cmake。 可以提供许多选项来定制自定义构建,但是以下命令将为支持的AMD GPU构建共享库:
mkdir build && cd build
cmake -DCMAKE_CXX_COMPILER=hipcc ..
make -j
可以使用-DBUILD_SH
什么是Antares:
Antares是用于多平台内核生成和优化(针对
CUDA
/
ROC
m / CPU / DirectX12 / Graphcore / OneAPI)的自动引擎。
Antares简化了大多数TVM的低级功能,使其更易于在Microsoft相关平台上供DNN开发人员使用。
Antares遵循“所有平台的一种语言语法”的原则,以减少不同平台上的描述复杂性。
快速入门文档
Antares功能:
Antares可以将DNN模型中的计算运算符转换为目标设备的低级源代码(例如,内核,着色器等)。
Antares还可以使用高效的机制和算法在端到端设备上自动调整和优化这些DNN运算符。
Antares可以在以下情况下特别为您提供帮助:
您想修改细粒度的DNN工作负载,但Tensorflow / Pytorch的内置实现受到限制。
您会注意到一些操作员效率低下,并且想要轻
MD
ROC
m平台旨在支持以下操作系统:
Ubuntu 20.04.1(5.4和5.6-oem)和18.04.5(内核5.4)
CentOS 7.9(3.10.0-1127)和RHEL 7.9(3.10.0-1160.6.1.el7)(使用devtoolset-7运行时支持)
CentOS 8.3(4.18.0-193.el8)和RHEL 8.3(4.18.0-193.1.1.el8)(不需要devtoolset)
SLES 15 SP2
CUDA
是什么?
CUDA
,全称是Compute Unified Device Architecture,英伟达在2007年推出这个统一计算架构,为了让GPU有可用的编程环境,从而能通过程序控制底层的硬件进行计算。说白了就是让C和C++不仅能调用CPU,还能调用英伟达公司的GPU,这就是
CUDA
的意义,并且可以通过执行大量的线程而达到并行的目的。3.0才开始支持C++,从7.开始支持C++11。
CUDA
软件体系可以分为三层结构:
CUDA
函数库 (
CUDA
Library) 最高层
CUDA
运行时间A
安装ubuntu系统更新内核,但是在win和Ubuntu双系统的前提下(可能)导致内核更新不成功,我安装成功的内核是5.13.39.
内核更新不成功的原因是自己在安装ubuntu系统时没有手动分区,直接清空磁盘安装,所以安装系统时还是手动分区
关闭bios安全启动,并设置ubuntu的启动引导为第一引导
navi6800xt(gfx1030)显卡安装5.0及以上
安装后重启
ROC
m安装
此版本为5.1.0
sudo apt
PyTorch for
ROC
m是一种新的开源深度学习框架,旨在利用AMD
ROC
m软件堆栈的优异性能。这个框架可以在AMD GPU硬件上运行,支持
Linux
操作系统。这个框架提供了对AMD
ROC
m软件堆栈的全面支持,包括了
ROC
m深度学习库(MIOpen)和
ROC
m工具链。
PyTorch for
ROC
m的一个重要特点是它在AMD GPU硬件上可以发挥出最佳性能。这主要得益于AMD GPU笔记本电脑和台式机的快速高速基础架构。
此外,与其他深度学习框架相比,PyTorch for
ROC
m的使用和学习还是相对容易的。PyTorch for
ROC
m提供了简单的API接口,与标准PyTorch API类似,同时也给用户提供了广泛的文档和教程支持。
总体而言,PyTorch for
ROC
m是一个出色的深度学习框架,它针对AMD GPU硬件进行了优化,并提供了全面的支持。如果你正在考虑使用基于
ROC
m的GPU硬件来训练深度学习模型,那么PyTorch for
ROC
m可能是一个不错的选择。