arrayfire: Lapack tests fail if CBlast is used
A couple of BLAS-related tests (e.g. cholesky_dense, solve_dense,inverse_dense and LU) fail on a GTX Titan using OpenCL if compiled with CLBlast on Windows. Cholesky_dense gives errors like “Matrix C’s OpenCL buffer is too small” , so I added some printf debugging to ClBlast’s TestMatrixC:
printf("ld == %d\n", ld);
printf("one == %d\n", one);
printf("two == %d\n", two);
printf("offset == %d\n", offset);
printf("buffer.size == %d\n", buffer.GetSize());
printf("req size == %d\n", required_size);
and Arrayfire’s gpu_blas_herk_func in magma_blast_cblast.h:
printf("triangle == %d\n", triangle);
printf("transpose == %d\n", a_transpose);
printf("n == %d\n", n);
printf("k == %d\n", k);
printf("a_buffer == %d\n", a_buffer);
printf("a_offset == %d\n", a_offset);
printf("a_ld == %d\n", a_ld);
printf("c_buffer == %d\n", c_buffer);
printf("c_offset == %d\n", c_offset);
printf("c_ld == %d\n", c_ld);'
with this, cholesky_dense_opencl produced the following output
I don’t know if this is caused by an error in CLBlast (probably not, CLBlast’s test all pass) or by the integration in arrayfire.
Maybe @CNugteren could take a look at it?
About this issue
- Original URL
- State: closed
- Created 7 years ago
- Comments: 35 (35 by maintainers)
Thank you, this solves all the Opencl issues on the systems I have access to!
I will leave this issue open until your changes are merged and arrayfire pulls in a fixed version of clblast
Yes, that could well be the issue. I never understood what this overwrite of herk to syrk was, but now I get it. I’ll try to reproduce the issue later today on my machine and I’ll work on a fix.