[Beignet] Building beignet with OpenCL 2.0 support in distros

Rebecca N. Palmer rebecca_palmer at zoho.com
Sat Jan 21 15:20:58 UTC 2017


> is there any downside in compiling with
> OpenCL 2.0 support,
Yes - on older (Ivybridge/Haswell - no emitUntypedReadA64Instruction) 
hardware, a 2.0-enabled beignet won't work, at all.

I see two possible approaches:

-Build two beignet packages, with and without 2.0 enabled, and make the 
with-2.0 one only accept 2.0-capable hardware (cl_get_gt_device() in 
src/cl_device_id.c).
They can be coinstallable if they use different BEIGNET_INSTALL_DIR and 
ICD_FILE_NAME (I suggest choosing names that make the non-2.0 one sort 
first, so software that doesn't need 2.0 doesn't get the performance 
penalty of supporting it), but should be separate packages because some 
OpenCL-using software errors out if any installed platform has 0 devices 
(CL_DEVICE_NOT_FOUND - e.g. 
http://sources.debian.net/src/asl/0.1.7-2/src/acl/aclHardware.cxx/?hl=69#L69 
, 
http://sources.debian.net/src/woo/1.0%2Bdfsg1-1/core/Scene.cpp/?hl=219#L207 
)

-As suggested above, move the "does this hardware support 2.0?" check to 
run time.
I'm currently working on this: it looks doable, but is the riskier option.

I at least need to decide quickly, as Debian freezes this week.

Two other issues I've found:
-CMake/FindLLVM.cmake doesn't find LLVM 3.9, even though this version is 
_required_ for OpenCL 2.0.
-The release notes say cl_khr_gl_sharing is now supported, but 
docs/Beignet.mdwn still says it isn't.



More information about the Beignet mailing list