1

私は周りを見回しましたが、比較的単純なOpenCL関連の質問を見つけたものの解決策を見つけることができませんでした.

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

それから私は延長に来ました。OpenCLでは、含める必要があります

#pragma OPENCL EXTENSION cl_khr_fp64 : enable

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

4

1 に答える 1

2

clGetDeviceInfoCL_DEVICE_EXTENSIONS (OpenCL 1.1 仕様のセクション 4.2) を呼び出すホストから、デバイスがサポートする拡張機能を確認できます。拡張子がサポートされている場合、返される文字列には「cl_khr_fp64」が含まれます。

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

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

#if USE_FP64
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
#endif
于 2012-04-11T17:24:20.453 に答える