我怎样才能100%确定我的opencl内核实际上是在GPU上运行而不是在CPU上运行。我无法理解这一点,因为openCL内核也可以在CPU上运行。这里有什么指示?
答案 0 :(得分:1)
使用clCreateCommandQueue创建命令队列时,会传入device
。这将是用于排队到此队列的内核的设备。
通过查询CL_DEVICE_TYPE
,可以通过clGetDeviceInfo找到这是否是GPU。它将返回一个或
CL_DEVICE_TYPE_CPU
CL_DEVICE_TYPE_GPU
CL_DEVICE_TYPE_ACCELERATOR
CL_DEVICE_TYPE_DEFAULT
CL_DEVICE_TYPE_CUSTOM
当您首先获得设备ID时,这些是您传递给clGetDeviceIDs的相同类型。因此,您可能希望在开始时将此查询限制为CL_DEVICE_TYPE_GPU
,以便您只获取GPU的设备ID。