<div dir="ltr"><div><div><div><div><div><div><div><div>It looks like CLBlast makes the same mistake that the CLU library did until recently (fixed in 435957d667bc22cdb2f0bdc32).<br><br></div>It assumes that if your system has OpenCL 2.0 headers installed that the OpenCL platforms present on the system also support CL 2.0.<br><br></div>In the case of Mesa, it doesn't support clCreateCommandQueueWithProperties which was introduced in CL 2.0, and so CLBlast (or the ocl icd) segfaults when it tries to call that function.<br><br></div>The relevant code CLBlast (CLBlast/src/clpp11.hpp around line 388) is:<br>#ifdef CL_VERSION_2_0<br>  cl_queue_properties properties[] = {CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, 0};<br>  *queue_ = clCreateCommandQueueWithProperties(context(), device(), properties, &status);<br>#else<br>  *queue_ = clCreateCommandQueue(context(), device(), CL_QUEUE_PROFILING_ENABLE, &status);<br>#endif<br><br><br></div>The fix that I sent to CLU changed its code to call clGetPlatformInfo to fetch <code class="">CL_PLATFORM_VERSION, and then checked the returned string for "OpenCL 1." in order to check if clCreateCommandQueueWithProperties was safe to invoke.<br><br></code></div><code class="">You still need some if-deffery to get it to compile against CL 1.x headers, but at least it doesn't crash then and remains compatible.<br><br></code></div><code class="">Given that CLBlast claims to support CL 1.x, this should probably get filed as a bug with them. When I modified the code in CLBlast to call clCreateCommandQueue(), it stopped crashing and the clblast_test_xdot test started passing.<br><br></code></div><code class="">Note: I found this using valgrind, which is always a great tool for diagnosing crashing crashing C/C++ programs that you have the source (or debug symbols) for.<br></code></div><code class=""><br>--Aaron<br></code><div><code class=""><br></code><div><div><div><div><br></div></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 3, 2016 at 2:45 PM, Sam Halliday <span dir="ltr"><<a href="mailto:sam.halliday@gmail.com" target="_blank">sam.halliday@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello everybody,<br>
<br>
I recently got a Radeon R9 290x (aka Hawaii). I run ArchLinux, which has<br>
mesa 12.0.1.<br>
<br>
I am keen to try out mesa's partial OpenCL implementation. Ideally to<br>
use a BLAS implementation such as <a href="https://github.com/CNugteren/CLBlast" rel="noreferrer" target="_blank">https://github.com/CNugteren/CLBlast</a><br>
but I'd also be happy to just write something basic like dense<br>
matrix/matrix multiplication in OpenCL.<br>
<br>
<br>
However, when I tried to run the "luxmark" OpenCL benchmark (the only<br>
way I could think to test if my card is supported), I got this error<br>
<br>
[PathOCLBaseRenderThread::0] Compiling kernels<br>
[PathOCLBaseRenderThread::0] PathOCL kernel compilation error ERROR clBuildProgram[CL_INVALID_BUILD_OPTIONS]:<br>
RUNTIME ERROR: PathOCLBase kernel compilation error<br>
<br>
which, I'm guessing, means that my GPU isn't supported for OpenCL by<br>
mesa yet. Is that correct? (I don't know how to get any more output or<br>
logs than this).<br>
<br>
<br>
Could somebody please help by letting me know if there is a ticket I<br>
could subscribe to track progress of support for my card (a simple<br>
search of the bug database didn't bring up anything obvious). This<br>
message is to the -dev list, so I am suppose I am saying that I am<br>
prepared to get my hands dirty... but I am primarily a Scala developer<br>
and haven't done any C in years so the extent of my help is limited.<br>
<br>
If somebody who knows what they are doing would be willing to implement<br>
some of the functionality needed, I'd be prepared to buy this GPU for<br>
them to use for their hacking - it's the least I could do (but it is an<br>
absolute monster, I didn't even know GPUs could be this big! I needed to<br>
get a bigger case for it).<br>
<br>
<br>
Somewhat tangentially, if OpenCL support is really not a possibility<br>
anytime soon, could somebody please point me in the direction of a way<br>
to use this card programmatically for something like matrix/matrix<br>
multiplication? (I'm prepared to go really low level if there is<br>
sufficient documentation).<br>
<br>
<br>
I'm not at all interested in using proprietary drivers for OpenCL.<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
--<br>
Best regards,<br>
Sam<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div>