LoginSignup
1
2

More than 3 years have passed since last update.

ROCm で RADV で Vulkan(compute kernel) を使うメモ

Last updated at Posted at 2019-12-20

背景

  • ROCm 環境でも Vulkan(ゲーム用ではなく, GPU レイトレーシングや機械学習で compute shader で計算用) 使いたい
    • OpenCL な機械学習コードを, ROCm で動作確認しつつ Vulkan にポートしたいとか.
  • ゲーム向けなどの amdgpu(amdgpu-pro) ドライバだとプロプライエタリ(?)の Vulkan 使えるが, ROCm と共存できない
    • kernel 4.18 以降であれば共存できる...かも?

ROCm 環境にて, RADV(Mesa の一部となっている amdgpu(これもオープンソースのはず)ドライバ上のオープンソース Vulkan 実装)で compute 系が動くのを確認しました.

最新 RADV だと, 性能は, プロプライエタリだったり AMDVLK(AMD 側で開発している Vulkan オープンソース実装?) と比べても遜色は無いと考えられます.

Mesa 20.0's RADV + ACO Vulkan Driver Now Consistently Beating AMD's AMDVLK Linux Driver
https://www.phoronix.com/scan.php?page=article&item=mesa20radv-aco-amdvlk&num=1

ただし RADV は最新 AMD Vulkan 機能の対応には時間がかかるようです.

インストール

Ubuntu 18.04 とします. ROCm がすでに入っているとします(ROCm 側の? amdgpu kernel module が入っているとします)

mesa-vulkan-drivers/bionic-updates,now 19.0.8-0ubuntu0~18.04.3 amd64 [installed]
  Mesa Vulkan graphics drivers

2019/12/20 時点で 19.0.8 と少し古いですが, 必要なのは apt で入ります.

$ sudo apt install mesa-vulkan-drivers
$ sudo apt install vulkan-info

vulkaninfo で見てみます.

===========
VULKAN INFO
===========

Vulkan Instance Version: 1.1.70


Device Properties and Extensions :
==================================
GPU0
VkPhysicalDeviceProperties:
===========================
        apiVersion     = 0x40105a  (1.1.90)
        driverVersion  = 79691784 (0x4c00008)
        vendorID       = 0x1002
        deviceID       = 0x66af
        deviceType     = DISCRETE_GPU
        deviceName     = AMD RADV VEGA20 (LLVM 8.0.0)

...

Voala! :tada:

複数 GPU の場合はそれぞれの GPU の情報が表示されるはずです.

機械学習で quantized kernel 実行に有益な VK_KHR_shader_float16_int8 はありませんでした.

patch 自体は取り込まれているので,

RADV Driver Gets Big Patch Series For 8-bit & 16-bit Arithmetic, 8-bit Storage
https://www.phoronix.com/scan.php?page=news_item&px=RADV-8-bit-16-bit-Extensions

最新 RADV(Mesa)をコンパイルすると使えるものと思われます.

compute 系コードを動かしてみる

vulkan_minimal_compute が動くのを確認しました.

コンパイルには, apt で libvulkan-dev を入れればとりあえずいけます.

また, Ubuntu の libvulkan1 は validation layers 込みっぽく, 実行時には validation layers も動きました.

さらなる高みへ

VK_KHR_shader_float16_int8 を使うには, 最新 Mesa(RADV) コンパイルでいけます.

RADV で最新 Vulkan を使うため, Mesa をコンパイルするメモ
https://qiita.com/syoyo/items/9b98a3124ce47065453f

1
2
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
1
2