假设一个系统具有两个不同的 GPU,但来自同一供应商,因此可以从单个 OpenCL 平台访问它们。给定以下简化的OpenCL 代码:
float* someRawData;
cl_device_id gpu1 = clGetDeviceIDs(0,...);
cl_device_id gpu2 = clGetDeviceIDs(1,...);
cl_context ctx = clCreateContext(gpu1,gpu2,...);
cl_command_queue queue1 = clCreateCommandQueue(ctx,gpu1,...);
cl_command_queue queue2 = clCreateCommandQueue(ctx,gpu2,...);
cl_mem gpuMem = clCreateBuffer(ctx, CL_MEM_READ_WRITE, ...);
clEnqueueWriteBuffer(queue1,gpuMem,...,someRawData,...);
clFinish(queue1);
在执行结束时,将someRawData
在内存中的 GPU 上还是仅gpu1
在内存中?