2つの異なる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
れますか?