my target is to setup an OpenCL context and present to result to an OpenGL context. Therefore, I successfully setup my OpenCL context from the OpenGL context using GLUT windowing system.
This version runs very well by using a single GPU.
Now I want to setup my OpenCL context with multiple GPUs. Unfortunately, the changes are not straight forward. After some investigation into the AMD APP documentation, I found an interesting article in the document "AMD_OpenCL_Programming_User_Guide.pdf" of AMD APP SDK 3.0 BETA.
There, in the appendix chapter E.1.2, is exactly the explanation how to do a multiple GPU environment by creating CL context from a GL context.
First I removed all my GLUT function calls and setup a windowing system by using Win32 API.
I did all the points are mentioned in the document. At the end I got again a single GPU system running as before except for my windowing system is now managed by Win32 API and not GLUT anymore.
So, I wondering about the clCreateContext call.
// Create OpenCL context from device's id
context = clCreateContext(properties, 1, &interopDevice, 0, 0, &status);
Actually, by a Multi GPU system I expected here to setup the OpenCL context for more than 1 GPU like this (in my case a have 3 AMD GPUs)
context = clCreateContext(properties, 3, &myGPUDevices, 0, 0, &status);
So, myGPUDevices points now to an array of 3 valid created GPU devices:
cl_device_id *myGPUDevices = new cl_device_id;
I did a lot of work to find out how to call it for a multi GPU system, but finally I could not found a solution. I understand that only one GPU can has a GL context, but inside an OpenCL context I want to run my processing on 3 GPUs, combine the result from each command queue of each device in the CL context and present it to GL context. Therefore, I need to setup the CL context at the beginning with GL interoperability too.
Has anyone an idea what is my error in reasoning here? Is the sample in the document running in a CL context on multiple GPUs?
Catalyst Version: 15.7.1
OpenCL 1.2 or 2.0
AMD APP SDK 2.9.1 or 3.0 BETA
AMD Radeon R9 295 X2
AMD Radeon R9 390
Thank you in advance,