From: Matthias B. <ma...@ma...> - 2022-05-19 22:19:21
|
Hi, I am experiencing an incorrect behaviour when running OpenCL kernels via pocl: I wrote an application in C/C++ calling kernels written in OpenCL C. It is a numerical simulation of the propagation of an electrical stimulus on tissue, from point to point on a 3D mesh with thousands of points. On one computer I run it with Intel's Open Source Beignet driver on an Ivy Bridge GT2 featuring 16 compute units. Calculation is time consuming, but the results are good: A wavefront of excitation forms and travels across the mesh as one would expect. When I run the identical source code with pocl on a machine featuring a Xeon L5640 showing 23 compute units, the results are completely different i.e. incorrect: The stimulus is not propagating in a wavefront, but instead wanders in random lines across the mesh. The platform is OpenCL 1.2 pocl 1.6, None+Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG. The device is pthread-Intel(R) Xeon(R) CPU L5640 @ 2.27GHz OpenCL 1.2 pocl HSTR: pthread-x86_64-pc-linux-gnu-westmere. Unfortunately, I can't share the original source code, but I suspect some sort of race condition or the queue not being executed in the correct order. Inserting global memory barriers in all kernels and adding queue flush & finish calls in the main program after every kernel call didn't change anything though. Do you have any ideas or suggestions? Cheers, Matthias |