Thank you for making various drivers and tools for OpenCL development. They are my reference driver for my OpenCL work. I have a question concerning the "Intel® Xeon® Processor OR Intel® Core™ Processor (CPU) Runtimes".
Your current CPU runtime is from 2018 (version 18.1) and is limited to Ubuntu 16.04. When can we expect a newer runtime for Ubuntu 18.04? Will this runtime include support for OpenCL 2.2?
Thank you for your time,
With best regards,
I do most of my testing with OpenCL implementations on Ubuntu 18.04. I find it functional there.
- Can you share the reasoning for your interest in Intel provided support on 18.04?
- Are you interested or in need OpenCL conformance and certification from Khronos?
- Can you share your interest in OpenCL 2.2 support? What features do you desire to use from an OpenCL 2.2 implementation.
- Are you a SYCL developer?
If you would like to communicate your strategic concerns away from the public forum, we can communicate via private message. Please let me know.
I'd like to feed such feedback to the developer team.
Thank you for your response. I was not aware that the 18.1 driver could be installed on Ubuntu 18.04. As far as I can tell the manual only specifies that it works for Ubuntu 16.04. I will try installing it to see if it works.
To give a bit of context about my request for information. I develop scientific software for analysis of neurological MRI images (https://mdt-toolbox.readthedocs.io/en/latest_release/). Results show that GPU acceleration dramatically benefits the analysis. Preferring open source software, I chose OpenCL as compute platform.
I recently had requests from several universities to support newer Ubuntu versions, as such I inquire if Intel has plans to officially support 18.04.
In addition, given this context, you can imagine that I am highly interested in having the OpenCL runtime pass conformance tests to make sure that the scientific computations can be trusted upon.
Concerning OpenCL 2.2, I am very interested in using C++ as a kernel language for some of the computations. This is almost a must have for some of the planned features in my software and I am very keen on using C++ in my kernels.
I have read about SYCL, but I am not a SYCL developer myself. The software I write depends absolutely on the availability of just-in-time compiling of compute kernels. In addition, there is now six years of work in this scientific software and I consider OpenCL as the perfect language for the scientific field I operate in.
I hope this answers your questions. Do you have a timeline for when you would expect Ubuntu 18.04 support and/or just-in-time OpenCL C++ support?
With kind regards,
Do you have a timeline for when you would expect Ubuntu 18.04 support and/or just-in-time OpenCL C++ support?
Looking forward to your answer,
With kind regards,
Thanks for the followup and the interest.
There is no timeline for CPU Runtime on 18.04 support nor JIT OpenCL-C++ support. Some follow up on options that may match your interests.
For OpenCL-C++ kernels, the path is compile to SPIR-V first... then ingest via the OpenCL runtime. This is still JIT-able in a sense, however it requires the developer to manage procedurally forking for the OpenCL-C++ compile.
- Fortunately, there are tools like Godbolt out there... which can help with development from recent builds of llvm for OpenCL-C++. i.e. no requirement to build or situate your own compiler first to stage toy/proof of concept OpenCL-C++ kernel code.
- See page 20 of the IWOCL'19 keynote for a reference... Note: build toggles have changed since publication... The Godbolt reference there will compile today with 8.0.0 compiler selected via the drop down.
Subsequent development after 18.1 was put into the Experimental Intel CPU Runtime for OpenCL Applications.
- It is a prerequisite for DPC++ and SYCL related work. It's currently included in the base install package for Intel oneAPI. Experimental CPU Runtime is not supported in of itself.
- A tarball is also available at the GitHub repo here.
- In practice, it's likely the healthiest CPU implementation from Intel. This branch an 18.1 derivative and it is under active development.
- Currently, there is no schedule for getting official conformance for the Experimental runtime. Ubuntu 18.04 is currently the most used platform for the DPC++/SYCL/Experimental Intel CPU Runtime software stack.
For C++ style access, it may be in your interest to evaluate the DPC++/SYCL offering as part of Intel oneAPI. It is currently in beta. SYCL is intended for the developer who is most interested in C++ for heterogeneous targets.
- The SYCL spec allows it some level of OpenCL interoperability. Many of the types are similar/the same, and the SYCL offload regions allow for procedural JIT-style setup.
- Intel software enablement is making a heavy investment behind DPC++… key DPC++ functional features that are not currently part of an open standard are being proposed for inclusion with applicable industry standards bodies (i.e. Khronos). DPC++ is intended to be as ubiquitous and forward looking as possible... it is expected to be a key developer enabling vehicle for Intel's product roadmaps.
- Some opinion: Boilerplate is leaner than Host OpenCL-C API and Host OpenCL-C++ wrapper API.
My colleague, Anoop, gave a training on DPC++/SYCL in mid December that shows a good overview introduction to SYCL.
Thank you for your elaborate response and the provided references.
Too bad that there is no timeline for CPU Runtime on 18.04 support nor JIT OpenCL-C++ support. To me, these are two key features missing from Intel's OpenCL offering. Nonetheless, I will have a look at the Godbolt and the "Experimental Intel CPU Runtime for OpenCL Applications" packages.
Considering the large software I have already written, and the fact that I make frequent use of meta-programming (generate kernels on the fly) I am only interested in OpenCL C++ JIT support. Anything else, DPC++/SYCL/oneAPI is not useful to me.
I will keep taps on the Experimental Intel CPU Runtime in the hope that it will support OpenCL 2.2 in the future.
Thank you again for your time,
With best wishes,
Thanks for the feedback... the context helps.
Capabilities similar to metaprogramming are possible inherently with SYCL spec... and it's usage of functor/lambda construction.
- In some ways, dynamic kernel generation is exposed more easily in SYCL than in OpenCL because boilerplate is taken care of for you. This is part of the benefit and desire of single source programming.
- At the same time, it's important to acknowledge that this specific easy doesn't necessarily make moving an existing OCL C++ source base into a no-op. There are always challenges in the details.
Also, SYCL spec does provision for some level of OpenCL API kernel/program object interoperability. SYCL spec 1.2.1 section 4.8.9, and in particular 18.104.22.168 22.214.171.124 denote some useful commentary. Note the constructors and member functions based of off OpenCL API objects.