oneMKL icon indicating copy to clipboard operation
oneMKL copied to clipboard

oneMKL's CMake Does Not Detect SYCL Support when Compiled with `intel/llvm`

Open BenBrock opened this issue 1 year ago • 1 comments

Summary

oneMKL uses CXX_COMPILER_NAME to detect SYCL support. This means that if a user compiles their own copy of intel/llvm, SYCL support is not detected and the MKL::MKL_SYCL library will not be available. (The CXX_COMPILER_NAME is by default Clang.)

Users can force set SYCL_COMPILER with -DSYCL_COMPILER=ON, which will make the MKL::MKL_SYCL library available. However, with CLANG_COMPILER also set, the intel_thread backend is also made available. This elicits a compiler warning:

bbrock@ortce-skl22:~/src/distributed-ranges/build/examples/shp$ make -j
Consolidate compiler generated dependencies of target fmt
Warning: Using MKL::MKL_SYCL* targets with intel_thread may have potential composability problems on CPU device with other SYCL kernels.
[  5%] Building CXX object _deps/cpp-format-build/CMakeFiles/fmt.dir/src/os.cc.o

Which seems to indicate this is still a sub-optimal solution.

Version

oneMKL develop branch.

Environment

  • Running on a system with two SPRs and 8 PVC GPUs.
  • Both production oneMKL 2024.0 and oneMKL develop.
  • Ubuntu 22.04 LTS
  • Fresh intel/llvm

CMake output

Steps to reproduce

Observed behavior

Build fails due to MKL::MKL_DPCPP/MKL::MKL_SYCL library not being available.

Expected behavior

I expect SYCL support to be detected by oneMKL and the build to succeed.

BenBrock avatar Feb 22 '24 20:02 BenBrock