Parallel processing 如何获得“的大小”_cl“设备id”;openCL中的结构?

Parallel processing 如何获得“的大小”_cl“设备id”;openCL中的结构?,parallel-processing,gpu,opencl,Parallel Processing,Gpu,Opencl,cl_设备id定义为“typedef结构_cl_设备id*cl_设备id”。 在openCL方法CLGetDeviceID中,“devices”参数的类型为“cl_device_id*”,并返回指向可用设备列表的指针。我试图使用memcpy将整个结构传递给另一个变量。为此,我需要知道“\u cl\u device\u id”结构的大小。\u cl\u device\u id是平台内部的(就像所有的\u cl\u结构一样)。此外,一个OpenCL程序可以加载多个平台,并且对于每个平台,结构大小可以

cl_设备id定义为“typedef结构_cl_设备id*cl_设备id”。 在openCL方法CLGetDeviceID中,“devices”参数的类型为“cl_device_id*”,并返回指向可用设备列表的指针。我试图使用memcpy将整个结构传递给另一个变量。为此,我需要知道“\u cl\u device\u id”结构的大小。

\u cl\u device\u id是平台内部的(就像所有的\u cl\u结构一样)。此外,一个OpenCL程序可以加载多个平台,并且对于每个平台,结构大小可以(也可能会)不同

所有cl_对象通常都是不透明的指针,而且(通常)围绕C库的隐藏内部结构进行复制是一种非常极端的方法,几乎肯定会把事情搞砸(除非您正在实现调试器之类的东西)


不管怎么说,抛开动机不谈,答案是:你说不出来,因为在程序实际运行并加载OpenCL实现之前你不知道。是的,这是有道理的。我正在开发一个位于opencl应用程序和实际opencl运行时之间的自定义运行时。我正在拦截来自原始应用程序的函数调用,将参数发送到我的运行时,从我的运行时调用同一个函数(使用以前获取的参数),该函数现在将与实际的opencl运行时交互。实际的opencl运行时将发回一些函数返回调用,如CE_SUCCESS或在上述情况下,可用设备的列表。我需要将它们传递回原始的opencl应用程序。这就是为什么我需要知道_cl_device_id struct的大小,这样我就可以用memcpy复制整个结构