@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
はじめに
たまたま、Youtube の RISC-V International の「Andes OpenCL for RISC-V」を見てみたら、ANDES では RISC-Vコアを使ったアクセラレータを OpenCL で使えるよというものでした。
OpenCLについては、10年ぐらい前にNVIDIAのGPUやオープンソースの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 を明示的に 記述しないといけないようです。
デバイス側はまだ存在しないようで、実際にあ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に対応できれば、SYCLにも対応できそうなので、その後もいろいろと展開できるのではないでしょうか?
また、RISC-Vというば、SiFive という認識は強いと思いますが、ANDES TECHNOLOGY は RISC-VコアのSoCをめっちゃ出しています。開発環境もいろいろあるのは強みだと思います。ちなみに、ANDES TECHNOLOGY は 台湾が本拠地です。