Skip to content

Commit a10d79a

Browse files
Add DPCTL_TARGET_CUDA Boolean cmake option
Also DPCTL_SYCL_TARGETS parameter can be used to specify targets to build for. DPCTL_TARGET_CUDA could be set via cmake option, or via environment variable, e.g. ``` $ DPCTL_TARGET_CUDA=1 python scripts/build_locally.py --verbose ```
1 parent a4d8ce2 commit a10d79a

File tree

6 files changed

+74
-43
lines changed

6 files changed

+74
-43
lines changed

CMakeLists.txt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,30 @@ option(DPCTL_GENERATE_COVERAGE
1717
"Build dpctl with coverage instrumentation"
1818
OFF
1919
)
20+
option(DPCTL_TARGET_CUDA
21+
"Build DPCTL to target CUDA devices"
22+
OFF
23+
)
2024

2125
find_package(IntelSYCL REQUIRED PATHS ${CMAKE_SOURCE_DIR}/cmake NO_DEFAULT_PATH)
2226

27+
set(_dpctl_sycl_targets)
28+
if ("x${DPCTL_SYCL_TARGETS}" STREQUAL "x")
29+
if(DPCTL_TARGET_CUDA)
30+
set(_dpctl_sycl_targets "nvptx64-nvidia-cuda,spir64-unknown-unknown")
31+
else()
32+
if(DEFINED ENV{DPCTL_TARGET_CUDA})
33+
set(_dpctl_sycl_targets "nvptx64-nvidia-cuda,spir64-unknown-unknown")
34+
endif()
35+
endif()
36+
else()
37+
set(_dpctl_sycl_targets ${DPCTL_SYCL_TARGETS})
38+
endif()
39+
40+
if(_dpctl_sycl_targets)
41+
message(STATUS "Compiling for -fsycl-targets=${_dpctl_sycl_targets}")
42+
endif()
43+
2344
add_subdirectory(libsyclinterface)
2445

2546
file(GLOB _dpctl_capi_headers dpctl/apis/include/*.h*)

dpctl/CMakeLists.txt

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -144,17 +144,19 @@ function(build_dpctl_ext _trgt _src _dest)
144144
Python_add_library(${_trgt} MODULE WITH_SOABI ${_generated_src})
145145
if (BUILD_DPCTL_EXT_SYCL)
146146
add_sycl_to_target(TARGET ${_trgt} SOURCES ${_generated_src})
147-
# make fat binary
148-
target_compile_options(
149-
${_trgt}
150-
PRIVATE
151-
-fsycl-targets=nvptx64-nvidia-cuda,spir64-unknown-unknown
152-
)
153-
target_link_options(
154-
${_trgt}
155-
PRIVATE
156-
-fsycl-targets=nvptx64-nvidia-cuda,spir64-unknown-unknown
157-
)
147+
if(_dpctl_sycl_targets)
148+
# make fat binary
149+
target_compile_options(
150+
${_trgt}
151+
PRIVATE
152+
-fsycl-targets=${_dpctl_sycl_targets}
153+
)
154+
target_link_options(
155+
${_trgt}
156+
PRIVATE
157+
-fsycl-targets=${_dpctl_sycl_targets}
158+
)
159+
endif()
158160
endif()
159161
target_include_directories(${_trgt} PRIVATE ${NumPy_INCLUDE_DIR} ${DPCTL_INCLUDE_DIR})
160162
add_dependencies(${_trgt} _build_time_create_dpctl_include_copy ${_cythonize_trgt})

dpctl/tensor/CMakeLists.txt

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -141,17 +141,19 @@ list(APPEND _tensor_impl_sources
141141
set(python_module_name _tensor_impl)
142142
pybind11_add_module(${python_module_name} MODULE ${_tensor_impl_sources})
143143
add_sycl_to_target(TARGET ${python_module_name} SOURCES ${_tensor_impl_sources})
144-
# make fat binary
145-
target_compile_options(
146-
${python_module_name}
147-
PRIVATE
148-
-fsycl-targets=nvptx64-nvidia-cuda,spir64-unknown-unknown
149-
)
150-
target_link_options(
151-
${python_module_name}
152-
PRIVATE
153-
-fsycl-targets=nvptx64-nvidia-cuda,spir64-unknown-unknown
154-
)
144+
if(_dpctl_sycl_targets)
145+
# make fat binary
146+
target_compile_options(
147+
${python_module_name}
148+
PRIVATE
149+
-fsycl-targets=${_dpctl_sycl_targets}
150+
)
151+
target_link_options(
152+
${python_module_name}
153+
PRIVATE
154+
-fsycl-targets=${_dpctl_sycl_targets}
155+
)
156+
endif()
155157

156158
set(_clang_prefix "")
157159
if (WIN32)

dpctl/utils/CMakeLists.txt

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,19 @@ pybind11_add_module(${python_module_name} MODULE
2121
${_module_src}
2222
)
2323
add_sycl_to_target(TARGET ${python_module_name} SOURCES ${_module_src})
24-
# make fat binary
25-
target_compile_options(
26-
${python_module_name}
27-
PRIVATE
28-
-fsycl-targets=nvptx64-nvidia-cuda,spir64-unknown-unknown
29-
)
30-
target_link_options(
31-
${python_module_name}
32-
PRIVATE
33-
-fsycl-targets=nvptx64-nvidia-cuda,spir64-unknown-unknown
34-
)
24+
if(_dpctl_sycl_targets)
25+
# make fat binary
26+
target_compile_options(
27+
${python_module_name}
28+
PRIVATE
29+
-fsycl-targets=${_dpctl_sycl_targets}
30+
)
31+
target_link_options(
32+
${python_module_name}
33+
PRIVATE
34+
-fsycl-targets=${_dpctl_sycl_targets}
35+
)
36+
endif()
3537
target_include_directories(${python_module_name}
3638
PRIVATE
3739
${CMAKE_CURRENT_SOURCE_DIR}/../include

libsyclinterface/CMakeLists.txt

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -206,16 +206,18 @@ add_library(DPCTLSyclInterface
206206
)
207207
add_sycl_to_target(TARGET DPCTLSyclInterface SOURCES ${sources} ${helper_sources})
208208
# make fat binary
209-
target_compile_options(
210-
DPCTLSyclInterface
211-
PRIVATE
212-
-fsycl-targets=nvptx64-nvidia-cuda,spir64-unknown-unknown
213-
)
214-
target_link_options(
215-
DPCTLSyclInterface
216-
PRIVATE
217-
-fsycl-targets=nvptx64-nvidia-cuda,spir64-unknown-unknown
218-
)
209+
if(_dpctl_sycl_targets)
210+
target_compile_options(
211+
DPCTLSyclInterface
212+
PRIVATE
213+
-fsycl-targets=${_dpctl_sycl_targets}
214+
)
215+
target_link_options(
216+
DPCTLSyclInterface
217+
PRIVATE
218+
-fsycl-targets=${_dpctl_sycl_targets}
219+
)
220+
endif()
219221

220222
if(DPCTL_GENERATE_COVERAGE)
221223
target_link_options(DPCTLSyclInterface

libsyclinterface/tests/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ add_sycl_to_target(
5252
${CMAKE_CURRENT_SOURCE_DIR}/test_sycl_queue_interface.cpp
5353
${CMAKE_CURRENT_SOURCE_DIR}/test_sycl_usm_interface.cpp
5454
)
55+
if (_dpctl_sycl_targets)
5556
# make fat binary
5657
target_compile_options(
5758
dpctl_c_api_tests
@@ -63,6 +64,7 @@ target_link_options(
6364
PRIVATE
6465
-fsycl-targets=nvptx64-nvidia-cuda,spir64-unknown-unknown
6566
)
67+
endif()
6668

6769
if(DPCTL_GENERATE_COVERAGE)
6870
target_include_directories(dpctl_c_api_tests

0 commit comments

Comments
 (0)