Skip to content

Commit 6fed63e

Browse files
authored
[BLAS][SPARSE][DPC++] Add CUDA_TARGETS option to pass for AoT compilation (#710)
1 parent 33fb7e5 commit 6fed63e

File tree

4 files changed

+37
-6
lines changed

4 files changed

+37
-6
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ option(ENABLE_CUSPARSE_BACKEND "Enable the cuSPARSE backend for the SPARSE_BLAS
7070
option(ENABLE_ROCSPARSE_BACKEND "Enable the rocSPARSE backend for the SPARSE_BLAS interface" OFF)
7171

7272
set(ONEMATH_SYCL_IMPLEMENTATION "dpc++" CACHE STRING "Name of the SYCL compiler")
73+
set(CUDA_TARGETS "" CACHE STRING "Target CUDA architectures")
7374
set(HIP_TARGETS "" CACHE STRING "Target HIP architectures")
7475

7576
## Testing

src/blas/backends/cublas/CMakeLists.txt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,24 @@ target_include_directories(${LIB_OBJ}
4141
)
4242
target_compile_options(${LIB_OBJ} PRIVATE ${ONEMATH_BUILD_COPT})
4343

44-
if(NOT ${ONEMATH_SYCL_IMPLEMENTATION} STREQUAL "adaptivecpp")
44+
if (NOT "${ONEMATH_SYCL_IMPLEMENTATION}" STREQUAL "adaptivecpp")
45+
target_compile_options(ONEMATH::SYCL::SYCL INTERFACE
46+
-fsycl-targets=nvptx64-nvidia-cuda -fsycl-unnamed-lambda
47+
)
48+
target_link_options(ONEMATH::SYCL::SYCL INTERFACE
49+
-fsycl-targets=nvptx64-nvidia-cuda
50+
)
51+
52+
if (DEFINED CUDA_TARGETS AND NOT "${CUDA_TARGETS}" STREQUAL "")
4553
target_compile_options(ONEMATH::SYCL::SYCL INTERFACE
46-
-fsycl-targets=nvptx64-nvidia-cuda -fsycl-unnamed-lambda)
54+
-Xsycl-target-backend --cuda-gpu-arch=${CUDA_TARGETS}
55+
)
4756
target_link_options(ONEMATH::SYCL::SYCL INTERFACE
48-
-fsycl-targets=nvptx64-nvidia-cuda)
57+
-Xsycl-target-backend --cuda-gpu-arch=${CUDA_TARGETS}
58+
)
59+
endif()
4960
endif()
61+
5062
target_link_libraries(${LIB_OBJ} PUBLIC ONEMATH::SYCL::SYCL ONEMATH::cuBLAS::cuBLAS)
5163
target_compile_features(${LIB_OBJ} PUBLIC cxx_std_11)
5264
set_target_properties(${LIB_OBJ} PROPERTIES

src/blas/backends/generic/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,11 @@ if(GENERIC_BLAS_TUNING_TARGET)
8282
-fsycl-targets=nvptx64-nvidia-cuda -fsycl-unnamed-lambda)
8383
target_link_options(ONEMATH::SYCL::SYCL INTERFACE
8484
-fsycl-targets=nvptx64-nvidia-cuda)
85-
if(DEFINED CUDA_TARGET)
85+
if(DEFINED CUDA_TARGETS)
8686
target_compile_options(ONEMATH::SYCL::SYCL INTERFACE
87-
-Xsycl-target-backend --cuda-gpu-arch=${CUDA_TARGET})
87+
-Xsycl-target-backend --cuda-gpu-arch=${CUDA_TARGETS})
8888
target_link_options(ONEMATH::SYCL::SYCL INTERFACE
89-
-Xsycl-target-backend --cuda-gpu-arch=${CUDA_TARGET})
89+
-Xsycl-target-backend --cuda-gpu-arch=${CUDA_TARGETS})
9090
endif()
9191
else()
9292
message(WARNING "Compiler is not supported."

src/sparse_blas/backends/cusparse/CMakeLists.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,24 @@ target_include_directories(${LIB_OBJ}
4343

4444
target_compile_options(${LIB_OBJ} PRIVATE ${ONEMATH_BUILD_COPT})
4545

46+
if (NOT "${ONEMATH_SYCL_IMPLEMENTATION}" STREQUAL "adaptivecpp")
47+
target_compile_options(ONEMATH::SYCL::SYCL INTERFACE
48+
-fsycl-targets=nvptx64-nvidia-cuda -fsycl-unnamed-lambda
49+
)
50+
target_link_options(ONEMATH::SYCL::SYCL INTERFACE
51+
-fsycl-targets=nvptx64-nvidia-cuda
52+
)
53+
54+
if (DEFINED CUDA_TARGETS AND NOT "${CUDA_TARGETS}" STREQUAL "")
55+
target_compile_options(ONEMATH::SYCL::SYCL INTERFACE
56+
-Xsycl-target-backend --cuda-gpu-arch=${CUDA_TARGETS}
57+
)
58+
target_link_options(ONEMATH::SYCL::SYCL INTERFACE
59+
-Xsycl-target-backend --cuda-gpu-arch=${CUDA_TARGETS}
60+
)
61+
endif()
62+
endif()
63+
4664
if (${CMAKE_VERSION} VERSION_LESS "3.17.0")
4765
find_package(CUDA 12.2 REQUIRED)
4866
target_include_directories(${LIB_OBJ} PRIVATE ${CUDA_INCLUDE_DIRS})

0 commit comments

Comments
 (0)