Second GPU on HD5970 produces incorrect results

Discussion created by ebfe on Feb 28, 2010
Latest reply on Aug 20, 2010 by Raistmer
How threadsafe is ATIs OpenCL-implementation?


I'm the author of Pyrit and have yet another possible bug in ATIs OpenCL-implementation to ask about. The upstream-bug is tracked at http://code.google.com/p/pyrit/issues/detail?id=123

A user reports that his setup crashes with a HD5970. The cause of the error is a self-test in my code that checks if the GPU is actually computing correct results; this catches the second GPU on the HD5970 producing bogus results (see comment #3).

What puzzles me is that there is a *ton* of error checking in my OpenCL code, which checks every single API-call. No error is reported, all functions return CL_SUCCESS...

Does someone have an idea what might cause this problem?

One possible explanation for this might be that Pyrit uses one host-thread for every GPU, possibly calling the OpenCL-library from different threads at the same time. This *should* not be a problem as there are no global variables (all data is local to the calling thread) and the OpenCL-library is *supposed* to be thread-safe.

You can find the whole source-code at http://code.google.com/p/pyrit/source/browse/#svn/trunk/cpyrit_opencl