Closed
Description
It looks like the behaviour of the -fsycl-targets
flag is somewhat dependent on the order of the targets.
Passing -fsycl-targets=nvptx64-unknown-unknown-sycldevice,spir64-unknown-unknown-sycldevice
results in a binary that can run on both backends, CUDA and OpenCL:
$ /data/user/fwyzard/sycl/build/bin/clang++ -O2 -g -Wno-unknown-cuda-version -fsycl -fsycl-targets=nvptx64-unknown-unknown-sycldevice,spir64-unknown-unknown-sycldevice --cuda-path=/usr/local/cuda simple-sycl-app.cpp -o simple-sycl-app
$ SYCL_BE=PI_OPENCL ./simple-sycl-app
Available SYCL devices:
- Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz, driver version 2020.9.1.0.18
- Intel(R) Gen9 HD Graphics NEO, driver version 20.07.15711
- Tesla K40c, driver version CUDA 10.20
- SYCL host device, driver version 1.2
Running on SYCL device Intel(R) Gen9 HD Graphics NEO, driver version 20.07.15711
element 0 is 0
element 1 is 1
element 2 is 2
element 3 is 3
The results are correct!
$ SYCL_BE=PI_CUDA ./simple-sycl-app
Available SYCL devices:
- Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz, driver version 2020.9.1.0.18
- Intel(R) Gen9 HD Graphics NEO, driver version 20.07.15711
- Tesla K40c, driver version CUDA 10.20
- SYCL host device, driver version 1.2
Running on SYCL device Tesla K40c, driver version CUDA 10.20
element 0 is 26
element 1 is 26
element 2 is 26
element 3 is 26
The results are correct!
Passing -fsycl-targets=spir64-unknown-unknown-sycldevice,nvptx64-unknown-unknown-sycldevice
results in a binary that can run only on the OpenCL backend:
$ /data/user/fwyzard/sycl/build/bin/clang++ -O2 -g -Wno-unknown-cuda-version -fsycl -fsycl-targets=spir64-unknown-unknown-sycldevice,nvptx64-unknown-unknown-sycldevice --cuda-path=/usr/local/cuda simple-sycl-app.cpp -o simple-sycl-app
$ SYCL_BE=PI_OPENCL ./simple-sycl-app
Available SYCL devices:
- Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz, driver version 2020.9.1.0.18
- Intel(R) Gen9 HD Graphics NEO, driver version 20.07.15711
- Tesla K40c, driver version CUDA 10.20
- SYCL host device, driver version 1.2
Running on SYCL device Intel(R) Gen9 HD Graphics NEO, driver version 20.07.15711
element 0 is 0
element 1 is 1
element 2 is 2
element 3 is 3
The results are correct!
$ SYCL_BE=PI_CUDA ./simple-sycl-app
Available SYCL devices:
- Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz, driver version 2020.9.1.0.18
- Intel(R) Gen9 HD Graphics NEO, driver version 20.07.15711
- Tesla K40c, driver version CUDA 10.20
- SYCL host device, driver version 1.2
Running on SYCL device Tesla K40c, driver version CUDA 10.20
terminate called after throwing an instance of 'cl::sycl::feature_not_supported'
what(): Online compilation is not supported in this context 0 (CL_SUCCESS)
Aborted (core dumped)
Metadata
Metadata
Assignees
Labels
No labels