Windows AMD应用程序包含内核中缺少函数和类型的文件

Windows AMD应用程序包含内核中缺少函数和类型的文件,windows,compilation,include,opencl,amd-processor,Windows,Compilation,Include,Opencl,Amd Processor,我正在Windows7+Cygwin+AMD应用程序(几周前下载)上编写OpenCL代码。我的代码可以工作,但是-头文件中缺少一些可访问内核的函数,例如: 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 even

我正在Windows7+Cygwin+AMD应用程序(几周前下载)上编写OpenCL代码。我的代码可以工作,但是-头文件中缺少一些可访问内核的函数,例如:

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)

以及
事件
数据类型。正如我所说,这并不妨碍编译,因为内核不是由我的C编译器编译的,而是由OpenCL库编译的。为什么会出现这种情况,我该怎么办?

总结一下:

OP正在搜索定义内核中使用的OpenCLC函数的头文件,因为IDE可以使用这些头文件来突出显示代码、自动完成、查找语法错误,等等。这不是OpenCL标准的一部分,所以AMD应用程序SDK在头文件中提供了一些功能这一事实对于OP来说是幸运的

答案是:


解决这个IDE需求的正确方法是通过一个专门构建的OpenCLCIDE,或者通过您最喜欢的IDE插件。我不知道有什么好的插件,所以剩下的都是特殊的IDE。对于AMD GPU和CPU,您可以使用作为AMD应用程序SDK一部分的内核分析程序。但是,这在没有AMD GPU的系统上不起作用(缺少specific.dll)。在这种情况下,您可以尝试。请注意,由于与11.9之后的Catalyst驱动程序不兼容,这在AMD GPU上不起作用。最后,Notepad++确实有一个用于OpenCL 1.0的用户定义语言文件(但尚未尝试过)。

由于这些函数仅在内核代码中可用,为什么您希望在主机代码使用的头文件中找到它们?代码不是标准C,因此主机编译器将无法使用这样的头编译代码。@chippies:我希望找到它们,因为我找到了所有其余的;因为在IDE中“预编译”是必要的,以便尽可能地检查语法和调用语义;因为自动完成和暗示需要函数签名;您可能需要从AMD为您的IDE下载一个插件,以正确处理OpenCL内核代码的这些功能(不保证有插件)。由于您使用的是AMD APP SDK,您还可以在他们的内核分析程序中编辑内核,该程序确实提供了这些功能。@chippies:如果他们有插件,我肯定他们会修复他们的头文件。。。没有一个是我知道的。将研究内核分析器-为什么不做一个答案?