3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

2020 年後半以降の HIP, HIP clang compiler について

Last updated at Posted at 2020-10-22

追記: 2021/11 月に動きがありました. apt hip-clang で入ったりと便利になっています.

amdgpu 21.40 で RDNA2 で HIP(CUDA っぽいの)が動くようになりました(experimental)
https://qiita.com/syoyo/items/5e6f4cc056a94060329e

を参照ください.

=====

HIP clang は, 今後の(?) AMD GPU 向けコンパイラです.

何故か apt で prebuilt package がありません(ROCM-3.8 時点) :cry:

ビルド手順をみてわかるように, HIP 固有のビルドオプションは無くて(AMDGPU backend を有効にするだけ. これは clang/llvm ビルドデフォルトでは on), HIP 対応のコンパイラ機能はすでに clang/llvm のソースコードにありますので, 実のところ既存の clang++ でも使えます(version 10 くらいからを使うとよさそう).

clang++ -x hip のようにして使います.

ただ, 実際は nvcc のようにいろいろパスやリンクの設定などをする必要があるため, 通常は hipcc フロントエンド(これは apt package rocm-dev あたりで入る)を使ってコンパイルします.

hipcc フロントエンドは, lld, compiler-rt や clang-offload-bundler(clang tools)などを利用しているため, それらのパッケージもインストールしておく必要があります
(apt の場合, clang-tools など)

ちなみに, CUDA も同様にコンパイラの部分は clang へ移行していて, CUDA 対応のコードは clang/llvm のソースツリーに入っています(.h.lib などは CUDA SDK にあるのを使う必要がある. また nvcc 自体はクローズドソースっぽい)

HIP

HIP がなんの略かは不明です. 検索性が悪くてつらいです. :cry:

最近(2020/10)ですと, runtime 環境は ROCclr https://github.com/ROCm-Developer-Tools/ROCclr に移行しています.

hcc は deprecated になって ROCm パッケージから外れたようで, HIP のビルド手順そのままではビルドできない(runtime を ROCclr の VDI にする必要がある)

VDI(Virtual Device Interface)は, fat binary でそれぞれのアーキテクチャのバイナリを一つにまとめて, 実行時に対応するデバイスのバイナリを使うっぽいようです
(いままで(hcc runtime)は gfx アーキテクチャを指定してコンパイルなど必要だった, はず)

ROCclr ソースコードを見る限りでは Navi, RDNA2, CDNA(Arcturus) 対応があるようですので, ROCm-3.10 あたりで Navi/RDNA2 正式対応があるかもしれません.
(ROCM-3.8 の prebuilt だと, NAVI(RX5700)だと VDI が NAVI 対応していないようで unsupported エラーとなり HIP 環境は動かない)

ついでに ROCclr は Windows の対応もしているようです(実際にビルドできるかは不明だが, コードはいくらかある).

そのうち ROCm 環境も Windows で動くかもしれません.

comgr

最近 amdgpu-pro ドライバなどでも見かけるようになりました.

Code object manager の略です. fat binary 管理用でしょうか? ROCclr が依存しています.
rocm-dev で prebuilt が入りますが, Navi 対応など最新が使いたければソースからビルドでしょうか.

ビルド手順メモ

実際にビルドは確認していません.

  • comgr のビルド
    • device lib のビルド
    • llvm/clang コンパイラ(HIP clang としても使えるはず)のビルドも含む
  • ROCclr のビルド
  • HIP のビルド

でしょうか. 面倒ですね. :cry:

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?