Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not pass the -cl-std option to kernel builds #342

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

zwets
Copy link

@zwets zwets commented Feb 20, 2019

This pull request resolves the oft-reported error:

OpenCL error -11 [...]
.../clblas-2.12/src/library/blas/xgemm.cc:244: void makeGemmKernel(_cl_kernel**, cl_command_queue, const char*, const char*, const unsigned char**, size_t*, const char*): Assertion `false' failed.

This abort occurs after a clBuildProgram() failure in makeGemmKernel(). Inconveniently, the subsequent calls to clGetProgramBuildInfo() return an empty build log, which made this bug hard to track down.

It turns out to be pretty simple: clBLAS passes build option -cl-std="CL1.2" to clBuildProgram(). According to its man page, this means that the OpenCL implementation will immediately fail the build if the target device is OpenCL 1.0 or 1.1. (Would've been nice if they'd at least report this in the build log ... .)

However, the man page also mentions that

If the -cl-std build option is not specified, the CL_DEVICE_OPENCL_C_VERSION
is used to select the version of OpenCL C to be used when compiling the program
for each device.

and since we have a handle to the device at that point, this is precisely what we want.

I've tested against multiple OpenCL 1.1 and 1.2 backends, and it works like a charm. Best thing is that I can finally run clBLAS (and ArrayFire) on my somewhat older Radeon GPU.

- Resolves the abort in xgemm.cc:244 for OpenCL 1.1 devices
@zwets
Copy link
Author

zwets commented Feb 20, 2019

Created issue #343 to attach this PR to - yes I'm going the wrong way around :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant