あなたの重い計算はどこから?私は行列計算から!
という風邪薬のCMがそろそろ聞こえてくる冬の寒い中皆様いかがお過ごしですか。
重い行列計算どうしようと悩んでいる方、行列計算を高速化する方法としてGPGPUの出番です。
ただ、GPGPUやろうとすると、CUDAとOpenCLがあってどっちやればいいんやねん!!ってなりますよね。
そんなあなたに、ViennaCLをオススメします!
名前の通り、元はOpenCLを対象としたライブラリだったのですが、いつしかCUDAもOpenMPも使えるようになってました。
特徴をまとめると以下の様な感じです。
- OpenCL対応
- CUDA対応
- OpenMP対応
- C++用ヘッダライブラリ
- boost::uBLASと互換性のあるインターフェース
最後のインターフェースが個人的には重要で、これのおかげでポータビリティがあがってとても開発がしやすいです。
しかもよくあるLAPACKや線形代数ライブラリというと、ビルドやインストールが大変で環境によっては使えなかったりするのですが、ヘッダライブラリなのでincludeするだけです。便利!
なので導入は簡単です。
ViennaCLをダウンロードしてきて、適当なところにおいてincludeするだけ。
今のところ私は、MSVCでもgccでもclangでも使えています。
(詳しい使い方は次回以降説明します)
あと、開発はとても活発で、Githubのレポジトリでその様子が見えます。
ダウンロードするぐらいならここをチェックアウトした方が使いやすいかもしれません(私はそうしています)。
あと、割に長ったらしいIssueを投げたけど2日で解決してくれたりというのも開発の活発さを物語っています。
というわけで、ViennaCLのすごさがなんとなーく分かったところで、次回以降、使い方やその性能を紹介したいと思います。