[Docker][SYCL] Making a minimal runtime Docker for SYCL for Intel graphics #6690
Replies: 1 comment
-
Note: I'm might be answering your questions in arbitrary order, hope that this is not too confusing.
That is weird, do you have a backtrace of that crash? Launching an app under
That is not a full driver and to be more precise, this is not a driver at all (even though it is called this way). ICD is a loader which performs OpenCL implementations lookup and dispatches calls from your app to selected implementation. It allows you to only link with a single To get an actual OpenCL or Level Zero implementation for Intel GPUs, you need to install packages from intel/compute-runtime repo. For example, here is the latest available release to this date:
In order to compile code, you don't need anything except for compiler, headers and
I'm not experienced with docker, but from what I see in our scripts:
llvm/devops/containers/ubuntu2004_intel_drivers.Dockerfile Lines 21 to 22 in 3667cf3 And if you look at Graphics driver and runtimes are installed into some default location (presumably encoded in the packages): llvm/devops/scripts/install_drivers.sh Lines 37 to 53 in 3667cf3 Here we separately install IGC (AOT and JIT compiler for Intel GPUs), NEO (compute runtime): OpenCL & Level Zero runtime and CM (that is another compiler which is used by ESIMD feature only, If I'm not mistaken). From that list it should be enough to only install NEO (compute runtime), because their releases (and instructions) already include IGC, just follow links I posted above. |
Beta Was this translation helpful? Give feedback.
-
I'm looking to make a multi-stage Docker build with the minimal amount of things in my image I need in order to run SYCL code at runtime on Intel graphics. Say if I based it on one of the sycl preinstalled dockers, I know I need to
COPY
over at least /opt/sycl which will have the compiler. I will need to apt install the intel opencl drivers (intel-opencl-icd). What about the /runtime folder that exists the current dockers? Is there any other thing I need to compiler code?It's all running on a physical device, so the image needs to be as minimal as possible. I currently have a simple dockerfile that copies over /opt/sycl/, adds to PATH and LD_LIBRARY_PATH, adds a sycl user with the right permissions (copied commands from the existing dockerfiles)
With this I am able to see my devices in sycl-ls, and clang++ with -fsycl compiles my code, but running it shows it crashes partway through (no exceptions caught). What else am I missing?
Beta Was this translation helpful? Give feedback.
All reactions