LoginSignup
6
3

More than 5 years have passed since last update.

EasyCL でクロスプラットフォームな OpenCL 開発整備をする

Posted at

漢なら OpenCL でレイトレーシングしたり機械学習アプリを開発したいですね!

しかし OpenCL API を叩いたり OpenCL SDK をインストールしてビルド整備は面倒ですね...

そこで EasyCL を使いましょう!

cltorch https://github.com/hughperkins/cltorch で使われています.

利点

  • クロスプラットフォーム!(Windows, Linux, macOS)
  • clew を使い, コンパイル時に OpenCL SDK(header, lib) が不要!
  • clew を使い, 実行時に OpenCL dll をチェック + ロード!
  • バイナリカーネルをキャッシュしたり, templated kernel で CL カーネルのコードをテンプレート置換とかできる!(lua を使って)

clew https://github.com/OpenCLWrangler/clew は, glew http://glew.sourceforge.net/ の OpenCL 版のような感じです.

注意点

対応バージョンは 1.2 まで

EasyCL(clew)は OpenCL 1.2 までのサポートになります. 1.2 までだと NVIDIA GPU(CUDA ドライバ) でも動くので, クロスプラットフォームかつ NV, AMD, Intel GPU で動かしたい場合は問題がありませんが, OpenCL 2.0 以上の機能を使いたい場合は EasyCL はあきらめることになります.

Cmake

EasyCL の CMakeLists.txt では, 一旦 clew を external project としてビルドしてからリンクするというややこしいことをしています.

https://github.com/hughperkins/EasyCL/issues/18

define などビルド設定を親プロジェクトと混在させないためのようですが, 実際のビルドステップが無駄に増える(親プロジェクトのリコンパイル時でも常に clew をビルドすることになる)ので, 問題がなければ EasyCL と clew のソースを一緒にビルドするように CMakeLists.txt を書き換えたりするのがよいでしょう.

clew のバージョン

EasyCL の submodule で使われている clew のバージョンが古く, たとえば Windows で UNICODE ビルド時に OpenCL.dll がロードできないという問題があります.

私の PR がマージされるのを待つか,

https://github.com/syoyo/clew をお使いください.

まとめ

  • 優秀な若人が, EasyCL を使い人類史上最速で優秀な OpenCL レイトレーシング/機械学習若人へと昇華されるスキームを確立する旅に出たい.
  • Happy OpenCL programming!
6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3