1 はじめに
CUDA
CUDA は、2006 年に Nvidia によって開始された汎用並列コンピューティング アーキテクチャであり、GPU での並列コンピューティングの問題を解決することを目的としています。使いやすさと利便性により、開発者は GPU を簡単にプログラムでき、GPU の並列機能を最大限に活用してプログラムのパフォーマンスを大幅に向上させることができます。
CUDA の誕生以来、CUDA エコシステムも急速に発展し、多数のソフトウェア開発ツール、サービス、ソリューションが含まれています。CUDA Toolkit には、ライブラリ、デバッグおよび最適化ツール、コンパイラおよびランタイム ライブラリが含まれています。
ROCm
AMD ROCm は、Radeon Open Compute (プラットフォーム) の略称です。HPC および超大規模 GPU コンピューティングの CUDA エコシステムのベンチマークを目的として、2015 年に AMD によって開発されたオープン ソース ソフトウェア開発プラットフォームです。ROCm は Linux プラットフォームのみをサポートします。
同様に、ROCm には一連の開発ツール、ソフトウェア フレームワーク、ライブラリ、コンパイル ツール、プログラミング モデルなどが含まれています。
以下の図は、Nvidia の CUDA エコロジーと AMD の ROCm エコロジーの比較を整理したものです。
2 CUDAエコロジーとROCmエコロジーの比較
2.1 プログラミングモデルとAPI
エヌビディア |
AMD |
機能説明 |
CUDA |
ヒップ |
GPUアクセラレーションプログラム、API、ランタイム、コンパイラ、デバッグツールなどのC/C++開発のための包括的な環境を提供します。 |
OpenCL |
OpenCL |
これは、異種システムの汎用並列プログラミングのためのオープンで無料の標準であり、ソフトウェア開発者が高性能コンピューティング サーバー、デスクトップ コンピューティング システム、ハンドヘルド デバイス向けに効率的で軽量なコードを作成できるようにする統合プログラミング環境でもあります。 |
OpenACC |
並列コンピューティング命令。研究者や技術プログラマーによって最も一般的に使用される GPU 並列プログラミング モデル。 |
|
OpenMP |
OpenMP は、Fortran および C/C++ プログラムで高レベルの並列処理を指定するために使用できる、コンパイラ ディレクティブ、ライブラリ ルーチン、および環境変数のセットの仕様です。 |
2.2 コンパイルとツールチェーン
エヌビディア |
AMD |
機能説明 |
NVCC |
ROCmCC / HCC |
翻訳者 |
CUDA-GDB |
ROCgdb |
デバッグツール |
HIPify |
CUDA ネイティブ コードを HIP ネイティブ C++ コードに変換する |
|
Nvidia Nsight |
ROCmプロファイリングツール |
パフォーマンス分析ツール |
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 |
|
|
2.4 开发工具
Nvidia |
AMD |
|
|