2012-04-11 71 views
1

我環顧四周,無法找到解決方案,我發現一個相對簡單的OpenCL相關問題。clBuild選項,傳遞OpenCL擴展

事情是,我剛開始在我的OpenCL內核中使用雙精度,因爲我當前的項目需要很高的精度。此外,我試圖讓所有的東西都得到管理,以便所有的內核都有相同的#DEFINES可以使用。

然後我來了延期。通過OpenCL我將不得不包括

#pragma OPENCL EXTENSION cl_khr_fp64 : enable 

如何將這包含在clBuildProgram的構建選項中?

回答

2

您可以使用CL_DEVICE_EXTENSIONS(OpenCL 1.1規範的第4.2節)檢查主機調用clGetDeviceInfo的設備所支持的擴展。如果擴展受支持,則返回的字符串將包含'cl_khr_fp64'。

編譯OpenCL代碼時使用clBuildProgram時,如果支持擴展(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