Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

ANDES TECHNOLOGY の RISC-VのOpenCL

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった 

はじめに

たまたま、YoutubeRISC-V International の「Andes OpenCL for RISC-V」を見てみたら、ANDES では RISC-Vコアを使ったアクセラレータを OpenCL で使えるよというものでした。

OpenCLについては、10年ぐらい前にNVIDIAGPUオープンソースのCPU版を使ったりしました。また、Altera OpenCL for FPGA (現在はIntel)のアルファユーザーとしていろいろと触っていたので何となく知っています。最近では、OpenCL をベタに使うのではなく、SYCL として oneAPI などで使えるようになっています。

ANDESのOpenCLの例

Host が x86で、Device側に 32 個の NX27V コアを搭載したものを 10:06 頃紹介しています。NX27V コアは RVV (RISC-V Vector Extension) 付のコアで、各NX27V コアにはローカルメモリが付いています。OpenCL Kernel では、この RVV Instinsic を明示的に 記述しないといけないようです。

www.youtube.com

バイス側はまだ存在しないようで、実際にあh AndeSim というシミュレータを使って、GDB経由で x86のホストとDeviceを接続しているようです。

OpenCL Kernel (.cl) は、Clang の OpenCL C Frontend にて、SPIR に変換され、SPIR to LLVM IR にて、LLVM IR に変換され、Work Item Grouping でグループ分けされた LLVM IR に変換され、RISC-V Codegen にて Target Binary に変換されるようです。

ホストが x86 以外としては、Andes の RISC-Vコアである AX45MP をホストにして、複数の NX27V を使ったり、別のHWアクセラレータをデバイスにするものも想定しているようです。

なお、これら OpenCL 関連に関しては、github.com では公開されていないようです。

終わりに

OpenCLに対応できれば、SYCLにも対応できそうなので、その後もいろいろと展開できるのではないでしょうか?

また、RISC-Vというば、SiFive という認識は強いと思いますが、ANDES TECHNOLOGYRISC-VコアのSoCをめっちゃ出しています。開発環境もいろいろあるのは強みだと思います。ちなみに、ANDES TECHNOLOGY は 台湾が本拠地です。