ROCmとは
Radeon Open Compute
AMD GPUで汎用計算するためのオープンソースの並列計算プラットフォーム
ひとことで言うと
AMD製GPUでAI計算などを行うための仕組み。
概要
ROCm(ロックエム, Radeon Open Compute)とは、AMDが提供する、自社GPU上で汎用計算(GPGPU)するためのオープンソースの並列計算プラットフォーム。 NVIDIA GPU向けのCUDAに相当する役割を担い、PyTorchやTensorFlow等の主要な機械学習フレームワークからAMD GPUを利用できるようにするドライバ・ライブラリ・コンパイラ群から構成される。 NVIDIA一強とされてきたAI向けGPU市場において、AMDが対抗するための重要な技術基盤となっている。 対応GPUの範囲やソフトウェアの成熟度ではCUDAに一日の長があるとされてきたが、近年は主要フレームワークでの正式サポートが進み、大規模学習クラスタ向けのAMD製GPU採用事例も増えている。
背景
機械学習の計算基盤は長らくNVIDIA GPUとCUDAのエコシステムが主流であり、AMD GPUを同様に機械学習で活用するにはCUDAに相当する独自のソフトウェア基盤が必要だった。 ROCmは、AMD GPUを機械学習・HPC(高性能計算)で活用できるようAMDが開発した。
歴史
2016年: AMDがROCmを発表し、オープンソースの並列計算プラットフォームとして開発を開始。 以降、主要な機械学習フレームワークへの対応を拡大し、AI向けGPUの選択肢としてNVIDIA以外のエコシステム構築を進めている。
アーキテクチャ
GPU向けのカーネル記述言語であるHIP(CUDAからの移植を意識した設計)や、ドライバ・ランタイム・数値演算ライブラリ群から構成される。 CUDAで書かれたコードをHIPへ変換するツールも提供され、既存のCUDA向け実装をAMD GPU向けへ移植しやすくしている。
コード例
PyTorchからのROCm対応GPUの確認(概念例)
import torch
# ROCm対応ビルドのPyTorchでも、CUDAと同じtorch.cuda名前空間を使う
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))