Skip to content

Commit 835888a

Browse files
committed
Add optional add_sycl_to_target to cmake
1 parent 1ed12c7 commit 835888a

File tree

15 files changed

+141
-40
lines changed

15 files changed

+141
-40
lines changed

CMakeLists.txt

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ endif()
6868
option(ENABLE_CUBLAS_BACKEND "" OFF)
6969
option(ENABLE_CURAND_BACKEND "" OFF)
7070
option(ENABLE_NETLIB_BACKEND "" OFF)
71+
set(ONEMKL_SYCL_IMPLEMENTATION "dpc++" CACHE STRING "Specifiy the SYCL implementation against which oneMKL should be built")
7172

7273
## Domains
7374
set(DOMAINS_LIST "")
@@ -124,7 +125,19 @@ list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
124125
if(WIN32)
125126
add_library(ONEMKL::SYCL::SYCL INTERFACE IMPORTED)
126127
else()
127-
find_package(Compiler REQUIRED)
128+
# Find necessary packages
129+
if (ONEMKL_SYCL_IMPLEMENTATION STREQUAL "hipSYCL")
130+
message(STATUS "Looking for hipSYCL")
131+
find_package(hipSYCL CONFIG REQUIRED)
132+
set(USE_ADD_SYCL_TO_TARGET_INTEGRATION true)
133+
add_library(ONEMKL::SYCL::SYCL INTERFACE IMPORTED)
134+
elseif(ONEMKL_SYCL_IMPLEMENTATION STREQUAL "dpc++")
135+
message(STATUS "Looking for dpc++")
136+
set(USE_ADD_SYCL_TO_TARGET_INTEGRATION false)
137+
find_package(Compiler REQUIRED)
138+
else()
139+
message(FATAL_ERROR "SYCL implementation ${ONEMKL_SYCL_IMPLEMENTATION} is not known")
140+
endif()
128141
endif()
129142

130143
# Add source directory and output to bin/

src/blas/CMakeLists.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,16 @@ target_include_directories(onemkl_blas
3131
${CMAKE_BINARY_DIR}/bin
3232
$<TARGET_FILE_DIR:onemkl>
3333
)
34-
3534
target_compile_options(onemkl_blas PRIVATE ${ONEMKL_BUILD_COPT})
3635

3736
set_target_properties(onemkl_blas PROPERTIES
3837
POSITION_INDEPENDENT_CODE ON
3938
)
40-
target_link_libraries(onemkl_blas PUBLIC ONEMKL::SYCL::SYCL)
39+
if (USE_ADD_SYCL_TO_TARGET_INTEGRATION)
40+
add_sycl_to_target(TARGET onemkl_blas SOURCES blas_loader.cpp)
41+
else()
42+
target_link_libraries(onemkl_blas PUBLIC ONEMKL::SYCL::SYCL)
43+
endif()
44+
4145
endif()
4246

src/blas/backends/cublas/CMakeLists.txt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,16 @@
2020
set(LIB_NAME onemkl_blas_cublas)
2121
set(LIB_OBJ ${LIB_NAME}_obj)
2222
find_package(cuBLAS REQUIRED)
23-
23+
set(SOURCES cublas_level1.cpp
24+
cublas_level2.cpp
25+
cublas_level3.cpp
26+
cublas_batch.cpp
27+
cublas_extensions.cpp
28+
cublas_scope_handle.cpp
29+
$<$<BOOL:${BUILD_SHARED_LIBS}>: mkl_blas_cublas_wrappers.cpp>)
2430
add_library(${LIB_NAME})
25-
add_library(${LIB_OBJ} OBJECT
26-
cublas_level1.cpp
27-
cublas_level2.cpp
28-
cublas_level3.cpp
29-
cublas_batch.cpp
30-
cublas_extensions.cpp
31-
cublas_scope_handle.cpp
32-
$<$<BOOL:${BUILD_SHARED_LIBS}>: mkl_blas_cublas_wrappers.cpp>
33-
)
31+
add_library(${LIB_OBJ} OBJECT ${SOURCES})
32+
3433
target_include_directories(${LIB_OBJ}
3534
PRIVATE ${PROJECT_SOURCE_DIR}/include
3635
${PROJECT_SOURCE_DIR}/src
@@ -42,7 +41,9 @@ set_target_properties(${LIB_OBJ} PROPERTIES
4241
POSITION_INDEPENDENT_CODE ON)
4342

4443
target_link_libraries(${LIB_NAME} PUBLIC ${LIB_OBJ})
45-
44+
if (USE_ADD_SYCL_TO_TARGET_INTEGRATION)
45+
add_sycl_to_target(TARGET ${LIB_OBJ} SOURCES ${SOURCES})
46+
endif()
4647
# Add major version to the library
4748
set_target_properties(${LIB_NAME} PROPERTIES
4849
SOVERSION ${PROJECT_VERSION_MAJOR}

src/blas/backends/mklcpu/CMakeLists.txt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,14 @@ set(LIB_NAME onemkl_blas_mklcpu)
2121
set(LIB_OBJ ${LIB_NAME}_obj)
2222

2323
find_package(MKL REQUIRED)
24-
25-
add_library(${LIB_NAME})
26-
add_library(${LIB_OBJ} OBJECT
27-
fp16.hpp mklcpu_common.hpp
24+
set(SOURCES fp16.hpp mklcpu_common.hpp
2825
mklcpu_level1.cpp mklcpu_level2.cpp mklcpu_level3.cpp mklcpu_batch.cpp mklcpu_extensions.cpp
29-
$<$<BOOL:${BUILD_SHARED_LIBS}>: mklcpu_wrappers.cpp>
30-
)
26+
$<$<BOOL:${BUILD_SHARED_LIBS}>: mklcpu_wrappers.cpp>)
27+
add_library(${LIB_NAME})
28+
add_library(${LIB_OBJ} OBJECT ${SOURCES})
29+
if (USE_ADD_SYCL_TO_TARGET_INTEGRATION)
30+
add_sycl_to_target(TARGET ${LIB_OBJ} ${SOURCES})
31+
endif()
3132

3233
target_include_directories(${LIB_OBJ}
3334
PRIVATE ${PROJECT_SOURCE_DIR}/include

src/rng/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,10 @@ target_compile_options(onemkl_rng PRIVATE ${ONEMKL_BUILD_COPT})
3737
set_target_properties(onemkl_rng PROPERTIES
3838
POSITION_INDEPENDENT_CODE ON
3939
)
40-
target_link_libraries(onemkl_rng PUBLIC ONEMKL::SYCL::SYCL)
40+
if (USE_ADD_SYCL_TO_TARGET_INTEGRATION)
41+
add_sycl_to_target(TARGET onemkl_rng SOURCES rng_loader.cpp)
42+
else()
43+
target_link_libraries(onemkl_rng PUBLIC ONEMKL::SYCL::SYCL)
44+
endif()
45+
4146
endif()

src/rng/backends/curand/CMakeLists.txt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,14 @@ set(LIB_NAME onemkl_rng_curand)
6060
set(LIB_OBJ ${LIB_NAME}_obj)
6161
find_package(cuRAND REQUIRED)
6262

63-
add_library(${LIB_NAME})
64-
add_library(${LIB_OBJ} OBJECT
65-
philox4x32x10.cpp
63+
set(SOURCES philox4x32x10.cpp
6664
mrg32k3a.cpp
67-
$<$<BOOL:${BUILD_SHARED_LIBS}>: mkl_rng_curand_wrappers.cpp>
65+
$<$<BOOL:${BUILD_SHARED_LIBS}>: mkl_rng_curand_wrappers.cpp>)
6866
)
6967

68+
add_library(${LIB_NAME})
69+
add_library(${LIB_OBJ} OBJECT ${SOURCES})
70+
7071
target_include_directories(${LIB_OBJ}
7172
PRIVATE ${PROJECT_SOURCE_DIR}/include
7273
${PROJECT_SOURCE_DIR}/src
@@ -81,7 +82,9 @@ set_target_properties(${LIB_OBJ} PROPERTIES
8182
)
8283

8384
target_link_libraries(${LIB_NAME} PUBLIC ${LIB_OBJ})
84-
85+
if (USE_ADD_SYCL_TO_TARGET_INTEGRATION)
86+
add_sycl_to_target(TARGET ${LIB_OBJ} SOURCES ${SOURCES})
87+
endif()
8588
# Add major version to the library
8689
set_target_properties(${LIB_NAME} PROPERTIES
8790
SOVERSION ${PROJECT_VERSION_MAJOR}

src/rng/backends/mklcpu/CMakeLists.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,16 @@ set(LIB_OBJ ${LIB_NAME}_obj)
2222

2323
find_package(MKL REQUIRED)
2424

25-
add_library(${LIB_NAME})
26-
add_library(${LIB_OBJ} OBJECT
27-
cpu_common.hpp
25+
set(SOURCES cpu_common.hpp
2826
philox4x32x10.cpp
2927
mrg32k3a.cpp
3028
$<$<BOOL:${BUILD_SHARED_LIBS}>: mkl_rng_cpu_wrappers.cpp>
3129
)
3230

31+
add_library(${LIB_NAME})
32+
add_library(${LIB_OBJ} OBJECT ${SOURCES})
33+
34+
3335
target_include_directories(${LIB_OBJ}
3436
PRIVATE ${PROJECT_SOURCE_DIR}/include
3537
${PROJECT_SOURCE_DIR}/src
@@ -38,7 +40,9 @@ target_include_directories(${LIB_OBJ}
3840
)
3941

4042
target_compile_options(${LIB_OBJ} PRIVATE ${ONEMKL_BUILD_COPT} ${MKL_COPT})
41-
43+
if (USE_ADD_SYCL_TO_TARGET_INTEGRATION)
44+
add_sycl_to_target(TARGET ${LIB_OBJ} SOURCES ${SOURCES})
45+
endif()
4246
target_link_libraries(${LIB_OBJ} PUBLIC ONEMKL::SYCL::SYCL ${MKL_LINK_C})
4347

4448
set_target_properties(${LIB_OBJ} PROPERTIES

tests/unit_tests/CMakeLists.txt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ foreach(domain ${TARGET_DOMAINS})
5959
add_executable(test_main_${domain}_ct main_test.cpp)
6060
target_include_directories(test_main_${domain}_ct PUBLIC ${GTEST_INCLUDE_DIR})
6161
target_compile_options(test_main_${domain}_ct PRIVATE -fsycl)
62+
if (USE_ADD_SYCL_TO_TARGET_INTEGRATION)
63+
add_sycl_to_target(TARGET test_main_${domain}_ct SOURCES t main_test.cpp)
64+
endif()
6265

6366
if(BUILD_SHARED_LIBS)
6467
add_executable(test_main_${domain}_rt main_test.cpp)
@@ -73,6 +76,9 @@ foreach(domain ${TARGET_DOMAINS})
7376
onemkl
7477
${${domain}_TEST_LIST_RT}
7578
)
79+
if (USE_ADD_SYCL_TO_TARGET_INTEGRATION)
80+
add_sycl_to_target(TARGET test_main_${domain}_rt SOURCES main_test.cpp)
81+
endif()
7682
endif()
7783

7884
if(ENABLE_MKLCPU_BACKEND)
@@ -109,7 +115,6 @@ foreach(domain ${TARGET_DOMAINS})
109115
ONEMKL::SYCL::SYCL
110116
${${domain}_TEST_LIST_CT}
111117
)
112-
113118
string(TOUPPER ${domain} DOMAIN_PREFIX)
114119

115120
if(BUILD_SHARED_LIBS)
@@ -130,5 +135,8 @@ foreach(domain ${TARGET_DOMAINS})
130135
PROPERTIES TEST_PREFIX ${DOMAIN_PREFIX}/CT/
131136
DISCOVERY_TIMEOUT 30
132137
)
138+
if (USE_ADD_SYCL_TO_TARGET_INTEGRATION)
139+
add_sycl_to_target(TARGET test_main_${domain}_rt)
140+
endif()
133141

134142
endforeach()

tests/unit_tests/blas/batch/CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ if(BUILD_SHARED_LIBS)
3232
PUBLIC ${CBLAS_INCLUDE}
3333
)
3434
target_link_libraries(blas_batch_rt PUBLIC ONEMKL::SYCL::SYCL)
35+
if (USE_ADD_SYCL_TO_TARGET_INTEGRATION)
36+
add_sycl_to_target(TARGET blas_batch_rt SOURCES ${BATCH_SOURCES})
37+
else()
38+
target_link_libraries(blas_batch_rt PUBLIC ONEMKL::SYCL::SYCL)
39+
endif()
3540
endif()
3641

3742
add_library(blas_batch_ct OBJECT ${BATCH_SOURCES})
@@ -45,3 +50,8 @@ target_include_directories(blas_batch_ct
4550
PUBLIC ${CBLAS_INCLUDE}
4651
)
4752
target_link_libraries(blas_batch_ct PUBLIC ONEMKL::SYCL::SYCL)
53+
if (USE_ADD_SYCL_TO_TARGET_INTEGRATION)
54+
add_sycl_to_target(TARGET blas_batch_ct SOURCES ${BATCH_SOURCES})
55+
else()
56+
target_link_libraries(blas_batch_ct PUBLIC ONEMKL::SYCL::SYCL)
57+
endif()

tests/unit_tests/blas/extensions/CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ if(BUILD_SHARED_LIBS)
3232
PUBLIC ${CBLAS_INCLUDE}
3333
)
3434
target_link_libraries(blas_extensions_rt PUBLIC ONEMKL::SYCL::SYCL)
35+
if (USE_ADD_SYCL_TO_TARGET_INTEGRATION)
36+
add_sycl_to_target(TARGET blas_extensions_rt SOURCES ${EXTENSIONS_SOURCES})
37+
else()
38+
target_link_libraries(blas_extensions_rt PUBLIC ONEMKL::SYCL::SYCL)
39+
endif()
3540
endif()
3641

3742
add_library(blas_extensions_ct OBJECT ${EXTENSIONS_SOURCES})
@@ -45,3 +50,8 @@ target_include_directories(blas_extensions_ct
4550
PUBLIC ${CBLAS_INCLUDE}
4651
)
4752
target_link_libraries(blas_extensions_ct PUBLIC ONEMKL::SYCL::SYCL)
53+
if (USE_ADD_SYCL_TO_TARGET_INTEGRATION)
54+
add_sycl_to_target(TARGET blas_extensions_ct SOURCES ${EXTENSIONS_SOURCES})
55+
else()
56+
target_link_libraries(blas_extensions_ct PUBLIC ONEMKL::SYCL::SYCL)
57+
endif()

0 commit comments

Comments
 (0)