I have written some multithreaded code using PyOpenCL, which works fine under the following conditions:
- GPU 32-bit floating point values (Intel Iris GPU can only handle single precision values)
- CPU 32-bit floating point values.
All data buffers are defined, and the program executed and output data enqueued, all inside a function which is called within a loop. When using 64-bit double-precision values, the loop runs twice before throwing the error 'Segmentation Fault: 11'.
Therefore, I don't believe it is due to the string-manipulations involved in preparing the OpenCL kernel; more likely seems to be something to do with allocated memory.
Interestingly, the CPU max_work_group is 1024, and GPU max_work_group is 512.
What possible causes could there be for the success using single-precision values, but failure when using double-precision values?