TinyMT のOpenCL のサンプルです。Jump機能を含んでいます。 これはデータ並列カーネルのサンプルです。(NDRangeKernel呼び出しのサンプルです)
cl.hpp を使用していますので、あなたのOpenCL環境にcl.hppが含まれていない 場合は、 Khronos OpenCL API Registryからcl.hppをダウンロードして インクルードパスの通った適切なディレクトリに置いておく必要があります。 また、c99 の stdint.h と inttypes.h も使用しています。
TinyMT-opencl-src-1.0.tar.gz (2013/2/14 added) TinyMT-opencl-src-1.0.zip (2013/2/14 added)
OpenCL Sample プログラムは単独ではコンパイルできません。TinyMT のソースファイルが 必要です。また、TinyMT-jumpのソースファイルが必要です。
TinyMT-src-xxx +---dc +---tinymt +---jump +---opencl
jump機能を使うとカーネルプログラムは単純になります。 サンプルプログラムsample32-jump.clでは モンテカルロ法による円周率の計算を行っています。1/4円の中に落ちた点の数から 円周率を計算していますが、OpenCLの基本的な技法を使って、まずワークグループ 内の点を集計して、それから全体の集計をするようになっています。 work groupを超えた同期ができないので、すべてのワークグループに渡る合計の計算と 最終的な円周率の計算はホスト側で行っています。
このサンプルは商用利用を含むどんな目的にも自由に使用することができます。 詳細については、LICENSE.txt を見てください。 これは三項 BSDライセンスです。