🌇

Dawn + SwiftShader で CPU webgpu を極めるメモ

2024/02/03に公開

背景

Safari でついに webgpu 正式対応は近そうっぽいので, webgpu やりたい.

https://webkit.org/blog/14879/webgpu-now-available-for-testing-in-safari-technology-preview/

webgpu で LLM pretrain とか!

でも GPU 無い環境でも動かしたい... あとは CI build で動かしたいとか.

Dawn + SwiftShader

冬到来! SwiftShader を使い人類史上最速で Vulkan プログラミングをはじめよう!
https://qiita.com/syoyo/items/ef5518f8c3638e50a6b9

Dawn を SwiftShader で動かせばいけんじゃね?

とりま動きそうっぽ?

WSL(Linux) で試しました. とりま簡単なのは動きました.

ビルドする.

とりあえず VK_ICD_FILENAMES で swiftshader 指定すればよさそうですが, dawn 自体に swiftshader 利用設定もあるので,

https://dawn.googlesource.com/dawn/+/refs/heads/main/CMakeLists.txt#204

今回は swiftshader on でビルドしてみます.

swiftshader を dawn/third_party に git clone しておきます.

swidtshader, 相変わらず PowerVR_Examples を submodule に追加するアホなことをやっているので, 無視するようにします.

https://qiita.com/syoyo/items/74d10bd51f8e808bdcd0

$ cd swiftshader
$ git -c submodule."third_party/PowerVR_Examples".update=none submodule update --init --recursive

あとは dawn で DAWN_ENABLE_SWIFTSHADER on でビルドし, VK_ICD_FILENAMES 指定するだけです!

Mesa llvmpipe?

Mesa LLVMpipe で software 描画も行けそうなきもします!
(少なくとも WSL ではいけた)

Discussion