2013-08-19 69 views
-1

我在Windows7 + Cygwin + AMD APP(幾周前下載)上編寫OpenCL代碼。我的代碼工作,但 - 一些內核使用的功能是從頭文件丟失,例如:AMD APP包含文件丟失的內核功能和類型

void barrier(cl_mem_fence_flags flags) 

event_t async_work_group_copy(
    __local gentype *dst, 
    const __global gentype *src, 
    size_t num_gentypes, 
    event_t event) 

還有event_t數據類型。就像我說的,這並不妨礙編譯,因爲內核不是由我的C編譯器編譯的,而是由OpenCL庫編譯的。爲什麼會這樣,我該怎麼辦?

+1

由於這些函數僅在內核代碼中可用,您爲什麼期望在宿主代碼使用的頭文件中找到它們?代碼不是標準的C,因此主機編譯器將無法使用這樣的頭來編譯代碼。 – chippies

+0

@chippies:我期望找到他們,因爲我找到了所有的休息;並且因爲「預編譯」在IDE中需要儘可能檢查語法和調用語義;並且因爲自動完成和提示需要功能簽名;等等。 – einpoklum

+0

您可能需要從AMD爲您的IDE下載一個插件,以正確處理OpenCL內核代碼的這些功能(不保證有插件)。由於您使用的是AMD APP SDK,因此您還可以在其內核分析器中編輯內核,該內核提供了這些功能。 – chippies

回答

2

總結:

的OP是尋找定義裏面的內核使用的OpenCL C函數,因爲這些頭文件可以通過IDE中的代碼高亮,自動完成,對語法錯誤拿起使用頭文件等等。這不是OpenCL標準的一部分,所以AMD APP SDK在頭文件中提供了一些功能,這對OP來說是幸運的。

答案:

來解決這個IDE要求的正確方法是無論是通過特製的OpenCLçIDE或通過插件您最喜愛的IDE。我不知道有什麼好的插件,所以剩下的都是特殊的IDE。對於AMD GPU和CPU,您可以使用作爲AMD APP SDK一部分的內核分析器。但是,這不適用於沒有AMD GPU的系統(特定的.dll丟失)。在這種情況下,您可以嘗試OpenCL Studio。請注意,由於在11.9之後與Catalyst驅動程序不兼容,因此這在AMD GPU上不起作用。最後,Notepad ++確實有OpenCL 1.0的用戶定義語言文件(儘管如此還沒有嘗試過)。