When running SYCL programs (I assume this applies to any OpenCL program as well) on Iris Xe MAX nodes, the runtime doesn't seem to support doubles.
> qsub -l nodes=1:iris_xe_max:ppn=2 -I # once job started: > git clone firstname.lastname@example.org:UoB-HPC/BabelStream.git > cd BabelStream > make -f SYCL.make COMPILER=DPCPP > ./sycl-stream --list # compiled program is called sycl-stream > ./sycl-stream --device 2 # pick Iris Xe GPU
The output is as follows:
BabelStream Version: 3.4 Implementation: SYCL Running kernels 100 times Precision: double Array size: 268.4 MB (=0.3 GB) Total size: 805.3 MB (=0.8 GB) Using SYCL device Intel(R) Graphics [0x4905] Driver: 21.01.18793 Reduction kernel config: 384 groups of size 512 terminate called after throwing an instance of 'cl::sycl::compile_program_error' what(): The program was built for 1 devices Build program log for 'Intel(R) Graphics [0x4905]': error: double type is not supported on this platform error: backend compiler failed build. -11 (CL_BUILD_PROGRAM_FAILURE) Aborted
To confirm device capability, running `clinfo` yields the following:
Device Name Intel(R) Graphics [0x4905] Device Vendor Intel(R) Corporation Device Vendor ID 0x8086 Device Version OpenCL 3.0 NEO Driver Version 21.01.18793 # -- snip -- Preferred / native vector sizes char 16 / 16 short 8 / 8 int 4 / 4 long 1 / 1 half 8 / 8 (cl_khr_fp16) float 1 / 1 double 1 / 1 (n/a) Half-precision Floating-point support (cl_khr_fp16) # -- snip -- Double-precision Floating-point support (n/a) # -- snip --
This doesn't seem right, double precision is supported on gen9 nodes and I was able to run BabelStream correctly.
Perhaps the driver is outdated?
Thanks for reaching out to us.
Please export the below environment variables before running the commands.
If you face any further issue please let us know.