2014-02-12 43 views
2

我使用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)。

+0

我不知道有任何方法可以做到這一點與舊的驅動程序和/或操作系統具有獨立的引導分區。 – Dithermaster

+2

不是100%確定,但您可以下載khronos OpenCL 1.1標題並檢查您的代碼。 –

回答

2

也許你可以看看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功能?

+0

正是我在找的東西!我更喜歡在編譯時做這個,如果需要的話,可以使用多個內核版本。 –

0

見我的回答對這個thread

可以調用可以設置clBuildProgram的選項如下

const char options[] = "-cl-std=CL1.1";

clBuildProgram(program, 1, &devices, options, NULL, NULL);

這迫使編譯器使用的OpenCL 1.1無論哪版本是由您的設備支持