5

私はOpenCLを初めて使用します。私はインターネットの助けを借りてOpenCLでベクトル加算コードを書きました。を使用して、1つのヘッダーファイルをインクルードCL/cl.h#includeました。

私はNVIDIAグラフィックカードを使用しており、OpenCLの実装はNVIDIA_GPU_Computing_SDKです。私のOpenCLヘッダーファイルはこのパスにあります/opt/NVIDIA_GPU_Computing_SDK/OpenCL/common/inc。コードをコンパイルするときにこのパスを追加することで、LinuxターミナルからOpenCLプログラムを実行できます。しかし今、私はこのコードのCMakeファイルを書きたいと思います。CMakeファイルはCプログラムでは正常に機能しますが、このパスの問題のためにOpenCLプログラムでは機能しません。ターミナルでは、以前は入力していましたが$cmake .、この後$make、cmakeによって作成されたMakefileが検索されますが、コマンドを入力した後にエラーが発生しますmake

fatal error: CL/cl.h: No such file or directory!

このヘッダーファイルをCMakeファイルにインクルードするにはどうすればよいですか?

4

3 に答える 3

14

これらの行をCMakeLists.txtに入れる必要があります。

include_directories(/opt/NVIDIA_GPU_Computing_SDK/OpenCL/common/inc)
link_directories(/opt/NVIDIA_GPU_Computing_SDK/OpenCL/common/<lib or something similar>)

add_executable(yourexe src1.c ...)
target_link_libraries(yourexe OpenCL)

ただし、OpenCL SDKは別のマシンの別の場所にある可能性があるため、これは移植性がないことに注意してください。これを行う適切な方法は、FindOpenCL.cmakeモジュールを使用することです。

于 2012-10-12T12:19:27.770 に答える
2

たぶん、次のようなCMakeの「検索」スクリプトを使用できます。

OpenCLプログラミングガイドブックのCMakeファイルの例:http ://code.google.com/p/opencl-book-sa​​mples/source/browse/trunk/CMakeLists.txt?r = 14

于 2012-10-12T12:21:03.683 に答える
2

Windows、OSX、Linuxでうまく機能するFindOpenCL.cmakeマクロを探していました...すべてのプラットフォームでうまく機能するマクロが見つからなかったので、いくつかのプロジェクトで使用する新しいマクロを作成しました(webcl-バリデーターとopencl-testsuite)。

https://github.com/elhigu/cmake-findopencl

特にWindowsのサポートはこれで改善されています。

Windowsでは、64ビットまたは32ビットのlibを使用する必要があるかどうかを確認し、Nvidia、Intel、およびAMDOpenCLSDKによって設定された環境変数に従ってライブラリを検索しようとします。

また、Cygwinで.libを見つけようとしますが、これは私が試した他のスクリプトでは機能しませんでした。

于 2014-04-16T14:58:21.843 に答える