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


_______________________________________________
pocl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pocl-devel

Reply via email to