MPI and OpenCL: Invalid devices

Discussion created by Meteorhead on Jul 17, 2010
Latest reply on Jul 18, 2010 by Meteorhead


My problem is that for some unknown reason OpenCL commandQueues don't want to be cerated under mpi from slave processes.

I am making a simple OpenCL-MPI example which implements core functionalities of MPI mixed with OpenCL. However after MPI initialization and OpenCL platform query and program build I try to create the commandQueues on different devices each and all threads other than the master fail to do so

After branching there is an MPI_BARRIER where all threads wait for each other, and after that master thread broadcasts a global variable to all threads. (MPI_BCAST) After that comes buffer creation, kernel argument setting and commandQueue creation with the crash.

After the barrier master thread issues std::cout << "Initial MPI_BARRIER passed!", so there should be no problem up until that. CommandQueue creation is indexed the same was as context creation (my_rank % numDevices) and I have checked, indexes run from 0-5 with 6 proper devices (3 5970), so this shouldn't be a problem. Error code is invalid device.

Code is provided in next post.

(Post modified 2010.07.18 09:50 GMT+1)

mnagy@grid249:~/Develop/cl_mpi_test$ mpirun -n 6 cl_mpi_test Initial MPI_BARRIER passed! ERROR: clCreateCommandQueue() (-33) ERROR: clCreateCommandQueue() (-33) ERROR: clCreateCommandQueue() (-33) ERROR: clCreateCommandQueue() (-33) ERROR: clCreateCommandQueue() (-33) -------------------------------------------------------------------------- mpirun has exited due to process rank 1 with PID 21699 on node grid249 exiting without calling "finalize". This may have caused other processes in the application to be terminated by signals sent by mpirun (as reported here). --------------------------------------------------------------------------