I have developed a probabilistic sampling program that made use of the "lgamma" function in OpenCL. The program runs normally on most platforms, including Intel's CPU using Intel's OpenCL driver. However, on the integrated HD 4000 and HD 4400, the program fails to produce the correct values. After a little debugging, I've identified that the value of the "lgamma" function is computed incorrectly when the OpenCL program is run on HD 4000/4400. The problem exists under Windows 7, 8, and 10 (preview), using the latest graphics driver (ver. 4098, dated 1/19/2015).
It seems that the problem has been reported before:
I don't have HD 5000 and up for testing. So I can't say much about those parts.
Under Linux, this problem doesn't exist using the open source Beignet package. So this doesn't seem to be a hardware issue.
We would greatly appreciate a fix since this problem has prevented us from deploying our toolkit to any users with only intel HD gpus.
Thank you for reporting this issue: it is indeed a problem, even on HD 5200. I filed a high priority bug. Meanwhile, please use log(tgamma()) as a workaround. Sorry for the inconvenience.
Thanks, Robert! I'll use the workaround for now (which will overflow quickly though since the gamma function can produce very large results). Looking forward to a driver update.
Hi Robert, I have got a chance to test lgamma on an Macbook Air with HD 5000 today. It suffers from the same bug too. Just to let you know that this might not be restricted to Windows.
The fix for the lgamma issue will be available in the next driver release (somewhere around beginning of June). For Mac OSX issue, you should file an issue w/ Apple, since they build their own drivers, even though we provide the backend: not sure about their driver release timelines.