基本上我有两个 GPU,我想在每个 GPU 上执行一些内核。我不希望 GPU 在同一个内核上工作,每个内核都做其中的一部分(我不知道这是否可能),以防万一我什至不想看到这种行为。
我只是想确保这两种设备都在使用。我已经为它们创建了上下文和命令队列。但是我看到只执行了一个内核,这意味着只使用了一个设备。我就是这样做的。. .
cl_device_id *device;
cl_kernel *kernels;
...
// creating context.
context = clCreateContext(0, num_devices, device, NULL, NULL, &error);
...
// creating command queues for all kernels
for(int i = 0; i<num_kenrels; i++)
cmdQ[i] = clCreateCommandQueue(context, *device, 0, &error);
...
// enqueue kernels
error = clEnqueueNDRangeKernel(*cmdQ, *kernels, 2, 0, glbsize, 0, 0, NULL, NULL);
我走的是正确的路吗?