2015年2月23日月曜日

jcuda

jcuda というのは、JavaからCudaを直接(というかJNI?経由で)呼び出すライブラリ。なんかデータの転送が遅そうな気がしていたのだけど、バークレイのプロジェクトでScalaから呼び出すのに使われており、それなりである、ということなので試してみた。
Macだと普通のCのプログラムでもいろいろ面倒なので構えていたのだけど、試してみたらびっくりするほど簡単だった。
  • ダウンロードページ からダウンロード
  • zip なので適当な所に展開。jar と dynlib が入っている。
  • jar をclasspath にいれる
  • 実行時オプションで -Djava.library.path=展開した場所 を指定。LD_LIBRARY_PATHでもいいんだろう。
サンプルページにあるblas の sgemm を試してみる。2000x2000だとJava版で1分近くかかるのがcuda版だと400ms で終わる。ざっくり100倍以上。もとがJavaでタイリングもしていないということを勘定にいれてもすばらしい。
サポートされているのは、cublas, cufft, curand, cusparse。

0 件のコメント: