我开始使用OpenCL C ++ API。我一直在使用de 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?在文档中找不到它。我看到设备[0]具有device_id值,但我无法获取。
答案 0 :(得分:2)
任何C ++包装器对象都可以使用operator()返回底层的OpenCL C对象。
在原始标题中,决定使这些对象直接转换为底层C对象,我认为这个简单的界面反映了这种思维方式。如果你查看一个旧版本的头文件代码,有许多地方是C ++对象的数组直接转换为C ID数组。