【发布时间】:2015-05-21 20:50:23
【问题描述】:
我试图澄清 OpenCL 中的一些结构和语法。目前我正在使用 VS2013 和 OpenCL Emulator-Debugger。我开始使用模拟器附带的演示项目并坚持这样做:
__Kernel(hello)
__ArgNULL
{
...
}
上面只有两行是这样的:
//__kernel void
//hello()
它们之间有什么区别?据我从文档中了解到(这里:http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/OpenCL-Emu-Documentation-2.pdf
这里:https://www.khronos.org/registry/cl/specs/opencl-1.x-latest.pdf) 第一个只是 OCL-Emu 环境中第二个的宏定义,但没有明确的答案。是这样吗?
【问题讨论】:
-
内核只是一个普通的 C 函数(符合许多限制),具有属性
__kernel。 -
@SK-logic 是的,我知道这一点。我无法弄清楚定义一个的正确语法是什么,以及我提到的上述语法之间有什么区别。
-
只有一种语法 -
__kernel属性。你上面的代码显然是一些奇怪的宏,先展开宏看看它实际上在做什么。