Coelacanth's Dream

スパコンに向けて強化される Linux Kernel の AMDGPU 関連機能

1.5 Exaflopsの演算性能を持ち、2021年納入予定の Frontier
2 Exaflopsの演算性能を持ち、2022年か2023年早期に納入予定の El Captitan どちらも AMD CPU + AMD GPU のノード構成になることが明らかにされているが、
それらスパコンに向けたソフトウェア側の機能が Linux Kernel に組み込まれつつある。

インデックス

RAS機能への対応

RASは Reliability, Accessibility, and Serviceability の略。
これは Vega20 の頃から対応が進められており、各ユニットUMC、SDMA、GFX へのエラー注入、そこからのGPUリセット機能(BACO)による復帰テストが行なえる。1
BACO は Bus Active, Chip Off の略。

プロセスごとのVRAM使用量が取得可能に

[PATCH] drm/amdkfd: Track GPU memory utilization per process

AMDは現状、rocm-smi というツールを提供しており、それによってVRAMの使用量を確認できるが、VRAM全体であり、どのプロセスがVRAMを多く消費しているか、といったものを知ることはできない。
だが上記パッチにより、それが可能になるはずだ。

/proc/<pid>/ 下に vram_<gpuid> というファイルを生成するようになり、GPUごとに割り振られるIDをファイル名に使うため複数GPUの環境にも対応されている。
この機能はアプリケーションの最適化にも役立つだろう。

この機能を、NVIDIAは以前から nvidia-smi 2で提供しており、ツール面でようやくAMDが追いついてきたと言える。ROCmの開発、スーパーコンピュータ採用等で必要に迫られたのかもしれない。
一応、AMDはumrRadeon GPU AnaluzerRadeon™ GPU Profiler等、レジスタレベル、パイプラインのモニタツールは豊富に提供している。

また少し前までは、AMDGPUの場合、上記 rocm-smiradeontop 等のソフトウェアを用いなければ全体でもVRAM容量、使用量を知ることが難しかったが、
現在はそれら情報が sysfs へ出力されるようになっているため、VRAM使用量なんかは

$ cat /sys/class/drm/card0/device/mem_info_vram_used 

を実行するだけで知ることができる。

ただこの機能、既に組み込まれているがドキュメント類は 2020/04/29 現在、未だにアップデートされていない。3
自分のような一般ユーザにも恩恵があるため、広く周知されてほしい。
私的conkyrc | Coelacanth’s Dream

FRUチップ

製品名、製品ナンバー、シリアルナンバーを記録した FRUチップ を読み取るためのパッチが 2020/03/19 より投稿されている。
Enable reading FRU chip via I2C v3 - Patchwork この FRUチップ によってソフトウェアから問題が発生したハードウェアを特定しやすくなり、大規模なコンピュータにおける障害対応、部品交換を手助けする。

FRUチップVega20 の一部SKUにも搭載されているがサーバ向けのみとなっており、ゲーミング向けSKUは FRUチップ を搭載していない。実際コード中でもゲーミング向け製品 Radeon VII の DeviceID:“0x66AF”、Apple専用製品 Radeon Pro Vega II (Duo) の DeviceID:“0x66A3” は判定部に含まれていない。4
Arcturus はそういった DeviceIDでの判定はせず、すべてが FRUチップ を搭載するとし、また前のパッチリビジョンでは Arcturus にゲーミング向けSKUは存在しないとしている。5
やはり、よく言われているように Arcturus はサーバ向けSKUのみとなるだろう。

Streaming Performance Monitor

先日パッチが投稿されたばかりの機能。
[PATCH] drm/amd: add Streaming Performance Monitor feature 中身としては、内部バスの利用状況、GPU内部のデータの流れを監視するためのものと読める。

しかし、後のパッチレビューにて様々な問題点が指摘されており、仮に実装するとしても時間が掛かりそうだ。6

参考リンク