Skip to content

Commit 4777be0

Browse files
authored
[PTI-LIB] Fix Level Zero Loader Build (#455)
Fix Level Zero Loader build on both Windows and Linux. * On Windows, there was a conflict in which DLLs were being loaded. E.g., sometimes it would use the DLL in System32 rather than in the build. We want it to default to the system drivers, so I relocate the DLLs in the build to a place where they won't be found by the tests. * On Linux, when build with the g++ compiler, there is a warning because of extra semi-colons. Stabilize build by only copying gemm.spv once. Signed-off-by: Schilling, Matthew <[email protected]>
1 parent 00e4bbc commit 4777be0

File tree

3 files changed

+62
-42
lines changed

3 files changed

+62
-42
lines changed

sdk/CMakeLists.txt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@ project(
1414
LANGUAGES C CXX
1515
)
1616

17-
# Global Settings
18-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin CACHE STRING "")
19-
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib CACHE STRING "")
20-
2117
ProjectIsTopLevel()
2218
SetBuildType()
2319

20+
# Global Settings
21+
if(PROJECT_IS_TOP_LEVEL)
22+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin CACHE STRING "")
23+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib CACHE STRING "")
24+
endif()
25+
2426
# For developer use with tools like clangd (can be used by vscode and vim
2527
# plugins).
2628
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
@@ -78,11 +80,11 @@ find_package(Xpti)
7880
if(NOT PROJECT_IS_TOP_LEVEL)
7981
find_package(LevelZero ${PTI_L0_LOADER} REQUIRED)
8082
else()
81-
find_package(LevelZero ${PTI_L0_LOADER} )
83+
find_package(LevelZero ${PTI_L0_LOADER})
8284
endif()
8385

8486
if(NOT TARGET LevelZero::level-zero)
85-
GetLevelZero()
87+
GetLevelZero(${PTI_L0_LOADER} ${PTI_L0_LOADER_COMMIT_HASH})
8688
endif()
8789

8890
find_package(Threads REQUIRED)

sdk/cmake/Modules/macros.cmake

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ macro(CheckSOVersion PROJ_SOVERSION)
222222
endif()
223223
endmacro()
224224

225-
macro(GetLevelZero)
225+
macro(GetLevelZero PTI_L0_LOADER PTI_L0_LOADER_COMMIT_HASH)
226226
if (NOT TARGET LevelZero::level-zero)
227227
# Need zelEnableTracingLayer
228228
message("-- Fetching L0: ${PTI_L0_LOADER}")
@@ -253,23 +253,43 @@ macro(GetLevelZero)
253253
add_subdirectory(${levelzero_SOURCE_DIR} ${levelzero_BINARY_DIR} EXCLUDE_FROM_ALL)
254254
endif()
255255

256+
get_target_property(PTI_ZE_LOADER_RUNTIME_DIR ze_loader RUNTIME_OUTPUT_DIRECTORY)
257+
256258
# Create new target to treat level zero loader as an external dependency.
257259
# This prevents it from being added to the export set.
258260
# (Basically treat as if including via find_package)
259261
add_library(pti_ze_loader INTERFACE IMPORTED)
260-
add_dependencies(pti_ze_loader ze_tracing_layer)
261-
262-
set(PTI_LZ_COMPILE_OPTIONS $<$<CXX_COMPILER_ID:IntelLLVM>:-Wno-unused-parameter -Wno-cast-function-type-mismatch -Wno-extra-semi>
263-
$<$<CXX_COMPILER_ID:MSVC>:/wd6285
264-
$<$<CONFIG:Release>:/wd4702 /wd6385 /wd6386>>)
262+
add_dependencies(pti_ze_loader ze_tracing_layer ze_validation_layer)
263+
264+
set(PTI_LZ_COMPILE_OPTIONS
265+
$<$<CXX_COMPILER_ID:IntelLLVM>:
266+
-Wno-error
267+
-Wno-unused-parameter
268+
-Wno-cast-function-type-mismatch
269+
-Wno-extra-semi
270+
>
271+
$<$<CXX_COMPILER_ID:MSVC>:
272+
/wd6285
273+
$<$<CONFIG:Release>:/wd4702 /wd6385 /wd6386>
274+
>
275+
$<$<CXX_COMPILER_ID:GNU>:
276+
-Wno-error
277+
-Wno-unused-parameter
278+
$<$<VERSION_GREATER_EQUAL:$<CXX_COMPILER_VERSION>,8.0.0>:-Wno-extra-semi>
279+
>
280+
$<$<CXX_COMPILER_ID:Clang>:
281+
-Wno-error
282+
-Wno-unused-parameter
283+
$<$<VERSION_GREATER_EQUAL:$<CXX_COMPILER_VERSION>,3.0.0>:-Wno-extra-semi>
284+
>
285+
)
265286

266287
# Silence Warnings from Level Zero Loader. Allows us to better detect PTI
267288
# warnings and errors.
268-
target_compile_options(ze_loader PRIVATE ${PTI_LZ_COMPILE_OPTIONS})
269-
target_compile_options(ze_tracing_layer PRIVATE ${PTI_LZ_COMPILE_OPTIONS})
270-
target_compile_options(ze_null PRIVATE ${PTI_LZ_COMPILE_OPTIONS})
271-
target_compile_options(ze_validation_layer PRIVATE ${PTI_LZ_COMPILE_OPTIONS})
272-
#target_compile_options(utils PRIVATE ${PTI_LZ_COMPILE_OPTIONS})
289+
set_target_properties(ze_loader ze_tracing_layer ze_null ze_validation_layer
290+
PROPERTIES
291+
COMPILE_OPTIONS "${PTI_LZ_COMPILE_OPTIONS}"
292+
RUNTIME_OUTPUT_DIRECTORY "${PTI_ZE_LOADER_RUNTIME_DIR}/loader")
273293

274294
# Pull Headers out of source tree and add them to level_zero/
275295
# This allows us to keep the normal way to include level zero
@@ -338,9 +358,8 @@ macro(AddApiGenTarget L0_GEN_SCRIPT GEN_FILE_NAME L0_TARGET)
338358
# Use the target that links level zero to find the level zero library
339359
if(TARGET LevelZero::level-zero)
340360
get_target_property(L0_TARGET_PATH ${L0_TARGET} INTERFACE_INCLUDE_DIRECTORIES)
341-
message("L0_Target_Path: ${L0_TARGET_PATH}")
342-
message("L0 Version: ${PTI_L0_LOADER}")
343-
message("L0 Hash: ${PTI_L0_LOADER_COMMIT_HASH}")
361+
include(CMakePrintHelpers)
362+
cmake_print_variables(PTI_L0_LOADER PTI_L0_LOADER_COMMIT_HASH L0_TARGET_PATH)
344363
endif()
345364

346365
# HINTS before PATHS

sdk/test/CMakeLists.txt

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,23 @@ if(PTI_IS_MULTI_CONFIG)
3838
endif()
3939

4040
if(HAVE_SYCL)
41+
set(PTI_TEST_SPV_SRC ${PROJECT_SOURCE_DIR}/test/gemm.spv)
42+
set(PTI_TEST_SPV_TEST ${PTI_TEST_BIN_DIR}/gemm.spv)
43+
44+
if(TARGET LevelZero::level-zero OR TARGET unified-runtime::loader)
45+
add_custom_command(
46+
OUTPUT ${PTI_TEST_SPV_TEST}
47+
POST_BUILD
48+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
49+
${PTI_TEST_SPV_SRC} ${PTI_TEST_SPV_TEST}
50+
DEPENDS ${PTI_TEST_SPV_SRC})
51+
52+
add_custom_target(
53+
copy_test_spv
54+
DEPENDS ${PTI_TEST_SPV_TEST}
55+
)
56+
endif()
57+
4158
add_executable(dpcgemm_suite main_dpcgemm_fixture.cc)
4259
target_include_directories(
4360
dpcgemm_suite
@@ -164,17 +181,6 @@ if(HAVE_SYCL)
164181
"${PROJECT_SOURCE_DIR}/samples/samples_utilities"
165182
PRIVATE "${PROJECT_SOURCE_DIR}/src/utils")
166183

167-
add_custom_command(
168-
TARGET zegemm_suite
169-
PRE_BUILD
170-
COMMAND ${CMAKE_COMMAND} -E copy_if_different
171-
${PROJECT_SOURCE_DIR}/test/gemm.spv ${PTI_TEST_BIN_DIR}/gemm.spv)
172-
add_custom_command(
173-
TARGET zegemm_suite
174-
PRE_BUILD
175-
COMMAND ${CMAKE_COMMAND} -E copy_if_different
176-
${PROJECT_SOURCE_DIR}/test/gemm.cl ${PTI_TEST_BIN_DIR}/gemm.cl)
177-
178184
target_compile_options(zegemm_suite PUBLIC -fsycl -gline-tables-only)
179185
target_link_options(zegemm_suite PUBLIC -fsycl -gline-tables-only)
180186

@@ -308,6 +314,8 @@ if(HAVE_SYCL)
308314
TEST_LIST ZEGEMM_SUITE_TEST_LIST
309315
PROPERTIES LABELS "unit")
310316

317+
add_dependencies(zegemm_suite copy_test_spv)
318+
311319
gtest_discover_tests(
312320
multi_threaded_submission
313321
DISCOVERY_TIMEOUT 60
@@ -369,17 +377,6 @@ if (HAVE_SYCL AND TARGET unified-runtime::loader)
369377
"${PROJECT_SOURCE_DIR}/src/levelzero"
370378
PRIVATE "${PROJECT_SOURCE_DIR}/src/utils")
371379

372-
add_custom_command(
373-
TARGET urgemm_suite
374-
PRE_BUILD
375-
COMMAND ${CMAKE_COMMAND} -E copy_if_different
376-
${PROJECT_SOURCE_DIR}/test/gemm.spv ${PTI_TEST_BIN_DIR}/gemm.spv)
377-
add_custom_command(
378-
TARGET urgemm_suite
379-
PRE_BUILD
380-
COMMAND ${CMAKE_COMMAND} -E copy_if_different
381-
${PROJECT_SOURCE_DIR}/test/gemm.cl ${PTI_TEST_BIN_DIR}/gemm.cl)
382-
383380
target_compile_options(urgemm_suite PUBLIC -fsycl -gline-tables-only)
384381
target_link_options(urgemm_suite PUBLIC -fsycl -gline-tables-only)
385382
target_link_libraries(urgemm_suite PUBLIC spdlog::spdlog
@@ -394,6 +391,8 @@ if (HAVE_SYCL AND TARGET unified-runtime::loader)
394391
DISCOVERY_TIMEOUT 60
395392
TEST_LIST URGEMM_SUITE_TEST_LIST
396393
PROPERTIES LABELS "unit" "sycl" "unified-runtime")
394+
395+
add_dependencies(urgemm_suite copy_test_spv)
397396
endif()
398397

399398
add_executable(view_record_test view_buffer_test.cc)

0 commit comments

Comments
 (0)