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、多节点通信

  • 深度学习/人工智能库

Nvidia

AMD

  • cuDNN:深度神经网络基元库

  • TensorRT:用于生产部署的高性能深度学习推理优化器和运行时

  • Nvidia Riva:用于开发交互式情景AI会话应用的平台

  • Nvidia DeepStream SDK:用于基于AI的视频理解和多传感器处理的实时流分析工具包

  • Nvidia DLI:用于解码和增强图像和视频以加速深度学习应用的便携式开源库

  • MIOpen:AMD的深度学习基元库,提供不同运算符的高度优化和手动调整实现,如卷积、批量归一化、池化、softmax、激活和递归神经网络(RNN)层,用于训练和推理。

  • MIGraphX:AMD的图形推理引擎,可加速机器学习模型推理。AMD MIGraphX可以通过直接安装二进制文件或从源代码构建来使用。

  • MIVisionX:MIVisionX工具包是一套全面的计算机视觉和机器智能库、实用程序和应用程序,捆绑在一个工具包中。AMD MIVisionX提供高度优化的Khronos OpenVX 和OpenVX 扩展的开源实现沿着支持ONNX和Khronos NNEF 交换格式的卷积神经网络模型编译器和优化器。

2.4 开发工具

Nvidia

AMD

  • Nvidia DCGM:数据中心管理

  • nvidia-smi:系统管理界面和命令行界面的工具

  • Nvidia Nsight:调试和性能分析工具

  • ROCm Data Center Tools:数据中心环境中AMD GPU的管理

  • rocm-smi:系统管理界面和命令行界面的工具

  • ROCm Profiling Tools:性能分析工具

  • ROCmDebugger:调试工具

参考资料:

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可能是一个不错的选择。