如何使用 OpenCL C++ API 获取设备 cl_device_id

问题描述 投票:0回答:1

我开始使用 OpenCL C++ API。我已经使用 C API 很长时间了。 C++ API 更加优雅、简单,代码更少且不易出错,但我需要设备 ID。在启动代码中我这样做:

vector<cl::Platform> platforms;
cl::Platform::get(&platforms);

//example, get devices from first platform
vector<cl::Device> devices;
platforms[0].getDevices(CL_DEVICE_TYPE_ALL, &devices);

我需要设备 ID,但不想使用 C API 执行此操作:

cl_device_id *devicesIds = new cl_device_id[devices.size()];
clGetDeviceIDs(platformsIds[0], CL_DEVICE_TYPE_ALL, devices.size(), devicesIds, NULL);

如何使用 C++ API 从

devs[0]
获取 de device_id ID?在文档中找不到它。我看到
devices[0]
具有
device_id
值,但我无法获取它。

c++ opencl
1个回答
3
投票

任何 C++ 包装器对象都可以使用 operator() 返回底层 OpenCL C 对象。

在原始标头中,决定使这些对象直接转换为底层 C 对象,我认为这个简单的接口反映了这种思维方式。如果你查看旧版本的头代码,会发现很多地方 C++ 对象数组直接转换为 C ids 数组。

© www.soinside.com 2019 - 2024. All rights reserved.