如何在 openCL 中获取“_cl_devide_id”结构的大小?

How to get the size of "_cl_devide_id" struct in openCL?

cl_device_id 定义为“typedef struct _cl_device_id *cl_device_id”。 在 openCL 方法 clGetDeviceIDs 中,“devices”参数是“cl_device_id *”类型,returns 是指向可用设备列表的指针。我正在尝试使用 memcpy 将整个结构传递给另一个变量。为此,我需要知道“_cl_device_id”结构的大小。

_cl_device_id 是平台内部的(像所有 _cl_something 结构)。此外,一个 OpenCL 程序可以加载多个平台,并且对于每个平台,结构大小可以(并且很可能会)不同。

所有 cl_objects 通常都是不透明指针,并且(通常)复制 C 库的隐藏内部结构是一种非常极端的方法,几乎​​可以保证把事情搞砸(除非你正在努力实现调试器等)。

但不管怎样,撇开动机不谈,答案是:您无法判断,因为直到程序实际运行并加载 OpenCL 实现后您才知道。