Skip to content

Using MKL::MKL to resolve the -fsycl issue with AdaptiveCpp fails. #567

Open
@lrpablo

Description

@lrpablo

Summary

Trying to link the examples when compiling with AdaptiveCpp using MKL::MKL as the target library fails.

Version

oneMKL version 0.2.0
githash = f4d6b19.

Environment

  • OS name and version=Ubuntu 22.04.4 LTS

  • Compiler version=AdaptiveCpp version: 24.02.1+git.d1341108.20240718.branch.develop.dirty

  • CMake output log
    -- CMAKE_BUILD_TYPE: None, set to Release by default
    -- The CXX compiler identification is Clang 18.1.8
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: /home/pablo/usr/local/bin/acpp - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- TARGET_DOMAINS: blas
    -- MKL_VERSION: 2025.0.0
    -- MKL_ROOT: /opt/intel/oneapi/mkl/2025.0
    -- MKL_SYCL_ARCH: intel64
    -- MKL_ARCH: intel64
    -- MKL_SYCL_LINK: dynamic
    -- MKL_LINK: dynamic
    -- MKL_SYCL_INTERFACE_FULL: intel_ilp64
    -- MKL_INTERFACE_FULL: intel_ilp64
    -- MKL_SYCL_THREADING: tbb_thread
    -- MKL_THREADING: tbb_thread
    -- MKL_MPI: None, set to intelmpi by default
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_scalapack_ilp64.so
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_cdft_core.so
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_intel_ilp64.so
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_tbb_thread.so
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_core.so
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_blacs_intelmpi_ilp64.so
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_sycl_blas.so
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_sycl_lapack.so
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_sycl_dft.so
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_sycl_sparse.so
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_sycl_data_fitting.so
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_sycl_rng.so
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_sycl_stats.so
    -- Found /opt/intel/oneapi/mkl/2025.0/lib/libmkl_sycl_vm.so
    -- Looking for hipSYCL
    CMake Deprecation Warning at /home/pablo/usr/local/lib/cmake/hipSYCL/hipsycl-config.cmake:27 (message):
    find_package(hipSYCL) is deprecated. Use find_package(AdaptiveCpp)
    instead. For this, you may have to set
    -DAdaptiveCpp_DIR=/install/prefix/lib/cmake/AdaptiveCpp. Additionally,
    replace -DHIPSYCL_* cmake arguments with -DACPP_*
    Call Stack (most recent call first):
    CMakeLists.txt:279 (find_package)

CMake Warning (dev) at cmake/FindcuBLAS.cmake:20 (find_package):
Policy CMP0146 is not set: The FindCUDA module is removed. Run "cmake
--help-policy CMP0146" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.

Call Stack (most recent call first):
src/blas/backends/cublas/CMakeLists.txt:22 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.

-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found CUDA: /usr/local/cuda (found suitable version "12.5", minimum required is "10.0")
-- Found cuBLAS: /usr/local/cuda/include
-- ONEAPI_DEVICE_SELECTOR will be set to the following value(s): [opencl:cpu;cuda:gpu] for run-time dispatching examples
-- Configuring done (0.7s)
-- Generating done (0.0s)
-- Build files have been written to: oneMKL/build

Steps to reproduce

Edit the file src/blas/backends/mklcpu/CMakeLists.txt

44c44,48
<   target_link_libraries(${LIB_OBJ} PUBLIC ONEMKL::SYCL::SYCL MKL::MKL_SYCL::BLAS)
---
>   if(ONEMKL_SYCL_IMPLEMENTATION STREQUAL "hipsycl")
>     target_link_libraries(${LIB_OBJ} PUBLIC ONEMKL::SYCL::SYCL MKL::MKL)
>   else()
>     target_link_libraries(${LIB_OBJ} PUBLIC ONEMKL::SYCL::SYCL MKL::MKL_SYCL::BLAS)
>   endif()
  cmake .. -DONEMKL_SYCL_IMPLEMENTATION=hipSYCL \
       -DhipSYCL_DIR=/home/pablo/usr/local/lib/cmake/hipSYCL \
       -DCMAKE_CXX_COMPILER=/home/pablo/usr/local/bin/acpp \
       -DENABLE_MKLGPU_BACKEND=False \
       -DENABLE_MKLCPU_BACKEND=True \
       -DENABLE_CUBLAS_BACKEND=True \
       -DENABLE_CURAND_BACKEND=True \
       -DBUILD_FUNCTIONAL_TESTS=False \
      -DBUILD_EXAMPLES=True \
      -DTARGET_DOMAINS="blas" \
      -DHIPSYCL_TARGETS=cuda:sm_75

Observed behavior

When using MKL::MKL as the target library in src/blas/backends/mklcpu/CMakeLists.txt, the issue with attempting to compile the examples with the -fsycl switch is resolved, but errors occurs when trying to link.

[ 90%] Linking CXX executable ../../../../bin/example_blas_gemm_usm_mklcpu_cublas
/usr/bin/ld: ../../../../lib/libonemkl_blas_mklcpu.so.0: undefined reference to `oneapi::mkl::blas::row_major::omatcopy(hipsycl::sycl::queue&, oneapi::mkl::transpose, long, long, std::complex<float>, hipsycl::sycl::buffer<std::complex<float>, 1, std::allocator<std::complex<float> > >&, long, hipsycl::sycl::buffer<std::complex<float>, 1, std::allocator<std::complex<float> > >&, long)'
...
...
...
/usr/bin/ld: ../../../../lib/libonemkl_blas_mklcpu.so.0: undefined reference to `oneapi::mkl::blas::column_major::trsm(hipsycl::sycl::queue&, oneapi::mkl::side, oneapi::mkl::uplo, oneapi::mkl::transpose, oneapi::mkl::diag, long, long, oneapi::mkl::value_or_pointer<float>, float const*, long, float*, long, std::vector<hipsycl::sycl::event, std::allocator<hipsycl::sycl::event> > const&)'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[2]: *** [examples/blas/compile_time_dispatching/level3/CMakeFiles/example_blas_gemm_usm_mklcpu_cublas.dir/build.make:105: bin/example_blas_gemm_usm_mklcpu_cublas] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:497: examples/blas/compile_time_dispatching/level3/CMakeFiles/example_blas_gemm_usm_mklcpu_cublas.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugA request to fix an issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions