Raspberry Pi でOpenCLが動くというのは知っていたのだが、Raspberry Piが4、5になったときにGPUの仕組みが変わってしまって云々ということだった。
RaspberryPiOSではなくて、Ubuntuを入れればできるという話もあり、それはなぜかというと、Ubuntuの24.10はVulkanなどのドライバなどが新しいからだという話で、Raspberry Pi5でOpenCLをやるなら、Ubuntuを入れろ、というのが大前提のようではあったのだが、すでにRaspberrPiOSを入れてしまったのでUbuntu に入れ替えるのは面倒だしどうしようかと考えて、ちょっと調べた。
この記事を書いている時点でのRaspberryPiのカーネルは十分新しかった(Linux darkpi 6.12.25+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.25-1+rpt1 (2025-04-30) aarch64 GNU/Linux)し、Vulkanドライバの新しめ(Vulkan Instance Version: 1.3.239)が適用されていて、Mesaも(client glx vendor string: Mesa Project and SGI
OpenGL core profile version string: 3.1 Mesa 24.2.8-1~bpo12+rpt3
OpenGL version string: 3.1 Mesa 24.2.8-1~bpo12+rpt3
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 24.2.8-1~bpo12+rpt3
)ということなので、Ubuntuを入れなくてもOpenCLの構築は可能そうだったので、https://github.com/kpet/clvk?tab=readme-ov-file のclvkのビルドを試み、一応成功したのでポイントを書いておく。
まずはRaspberryPi5のメモリは8GB以上が推奨である。そしてスワップファイルも8GB以上確保しないとビルドは途中で失敗する。
また、ディスク容量は空き容量が128GBくらいあった方がよさそうだ。clvkはllvmをダウンロードしてくる(これだけで49MBを超える可能性がある。)ので、64GBのSDカードではビルドできない。
2025年6月号のInterfaceでRaspberryPi5でOpenCLという特集が組まれていて大変参考になったが、気が付くのが遅くて、ビルド終了後に読んだ。
実際のところはOpenCLでゴリゴリプログラムを作りたいわけではなく、BLASのGEMM演算を早くしたいだけなので、今はclblastをビルドしているところだ。通常ビルドはうまくいったようで、今はチューニングビルドをしているところである。
clblastはBLAS演算のほかにim2col演算がついているので、ちょっと期待している。
チューニングが動き出してまるいちにち経つのだが、終わっていない。エラーがあるとやたら時間がかかるようである。
ちなみに、RaspberryPiでOpenBLASを使うなら、最新のOpenBLASをhttps://github.com/OpenMathLib/OpenBLAS/releases あたりからダウンロードして自前でビルドしたものを使うと良い。aptで取得できるものはご存じの通り古い。
使い方としては、OPENBLAS_NUM_TREADS=2が一番早い。
clblastのチューニングが成功したら続く。