我使用OpenCL並開發應在使用OpenCL 1.1的系統上編譯的代碼,同時利用OpenCL 1.2的功能。使用OpenCL 1.2模擬OpenCL 1.1
是否可以在OpenCL 1.2系統上模擬OpenCL 1.1?
我在Mac上使用Apple OpenCL框架,我想確保代碼在將代碼推回到中央存儲庫之前適用於擁有OpenCL 1.1的人員(例如Mountain Lion)。
我使用OpenCL並開發應在使用OpenCL 1.1的系統上編譯的代碼,同時利用OpenCL 1.2的功能。使用OpenCL 1.2模擬OpenCL 1.1
是否可以在OpenCL 1.2系統上模擬OpenCL 1.1?
我在Mac上使用Apple OpenCL框架,我想確保代碼在將代碼推回到中央存儲庫之前適用於擁有OpenCL 1.1的人員(例如Mountain Lion)。
也許你可以看看Khronos Group的cl.hpp。
鏈接到標頭僅庫:http://www.khronos.org/registry/cl/
鏈接到一個短的例子:http://www.thebigblob.com/using-the-cpp-bindings-for-opencl/
這是一個C++的OpenCL包裝它提供你的OpenCL 1.0,1.1或1.2的支持根據在OpenCL的報頭的版本你的系統路徑。我想你可以按照這樣的方式在編譯時達到這個目的。
如果你有新的頭信息,但要限制你可以看看這個線程版本: Cannot compile OpenCL application using 1.2 headers in 1.1 version
或者你想在運行時選擇適當的OpenCL功能?
正是我在找的東西!我更喜歡在編譯時做這個,如果需要的話,可以使用多個內核版本。 –
見我的回答對這個thread
可以調用可以設置clBuildProgram的選項如下
const char options[] = "-cl-std=CL1.1";
clBuildProgram(program, 1, &devices, options, NULL, NULL);
這迫使編譯器使用的OpenCL 1.1無論哪版本是由您的設備支持
我不知道有任何方法可以做到這一點與舊的驅動程序和/或操作系統具有獨立的引導分區。 – Dithermaster
不是100%確定,但您可以下載khronos OpenCL 1.1標題並檢查您的代碼。 –