2012-04-11 9 views
1

私は比較的単純なOpenCLに関連する質問を見つけて解決策を見つけることができませんでした。clBuildオプション、OpenCL拡張を渡す

私の現在のプロジェクトでは、精度が要求されるため、OpenCLカーネルで倍精度を使用し始めました。さらに、すべてのカーネルが同じ#DEFINESを持つように、すべてのものを管理しています。

その後、私はその程度に達しました。 OpenCLで含める必要があります

#pragma OPENCL EXTENSION cl_khr_fp64 : enable 

これをclBuildProgramのビルドオプションに含めるにはどうすればよいですか?

答えて

2

デバイスでサポートされている拡張機能を、ホスト名がclGetDeviceInfoで、CL_DEVICE_EXTENSIONS(OpenCL 1.1仕様の4.2節)でチェックすることができます。拡張子がサポートされている場合、返される文字列には 'cl_khr_fp64'が含まれます。

clBuildProgramとOpenCLのコードをコンパイルするとき拡張子は(OpenCLの1.1仕様のセクション9.1)サポートされている場合、コンパイラは「cl_khr_fp64」を定義します。

OpenCLコードで拡張を有効にするには、プラグマ行を含める必要があります。 clBuildProgramのようなオプションを-D USE_FP64=1のように渡してホストコードからの拡張の使用を制御し、OpenCLコードでテストすることができます:

#if USE_FP64 
#pragma OPENCL EXTENSION cl_khr_fp64 : enable 
#endif 
関連する問題