OpenCL内核定义语法

OpenCL内核定义语法,opencl,gpgpu,Opencl,Gpgpu,我试图澄清OpenCL中的一些结构和语法。目前我正在使用VS2013和OpenCL模拟器调试器。我开始使用emulator附带的演示项目,并坚持如下: __Kernel(hello) __ArgNULL { ... } 上面只有两行是这样的: //__kernel void //hello() 他们之间有什么区别?据我从这里的文档中了解: 这里:第一个只是OCL Emu环境中对第二个的宏观定义,但没有明确的答案。是吗?是的,是的,第一个是宏 __内核是一个宏,_内核是一个特

我试图澄清OpenCL中的一些结构和语法。目前我正在使用VS2013和OpenCL模拟器调试器。我开始使用emulator附带的演示项目,并坚持如下:

__Kernel(hello)
 __ArgNULL
  { 
   ...
  }
上面只有两行是这样的:

//__kernel void
//hello()
他们之间有什么区别?据我从这里的文档中了解:


这里:第一个只是OCL Emu环境中对第二个的宏观定义,但没有明确的答案。是吗?

是的,是的,第一个是宏

__内核是一个宏,_内核是一个特殊的CL标志,用于将C99函数声明为GPU代码输入函数内核函数

所以这个_Kernelhello扩展为_Kernelhello 并且_uargnull扩展为。 给你普通的CL代码:uu内核你好{…}


在这种Emu CL情况下,可能需要使用宏,因为它不会在内部扩展到CL代码。宏是一种简化语言并使其适应类似CL表达式的方法。

内核只是一个普通的C函数,它符合许多限制条件,具有一个属性u内核。@SK logic是的,我知道这一点。我不清楚哪种语法是定义一个的正确语法,以及我提到的上述语法之间的区别。只有一种语法-\uuu内核属性。您上面的代码显然是一些奇怪的宏,首先展开宏,看看它实际上在做什么。