Skip to content

Commit 0260118

Browse files
authored
[SYCL] Disable IMF libdevice for non-SPIR backends. (#19190)
IMF libdevice should be used only by the backends supporting Intel HW. This PR prevents building IMF libdevice for NVidia and AMD backends. --------- Signed-off-by: jinge90 <ge.jin@intel.com>
1 parent c97c48e commit 0260118

File tree

1 file changed

+38
-21
lines changed

1 file changed

+38
-21
lines changed

libdevice/cmake/modules/SYCLLibdevice.cmake

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,15 @@ endforeach()
7878
# file and all files created this way are linked into one large bitcode
7979
# library.
8080
# Additional compilation options are needed for compiling each device library.
81-
set(devicelib_arch)
81+
set(full_build_archs)
8282
if ("NVPTX" IN_LIST LLVM_TARGETS_TO_BUILD)
83-
list(APPEND devicelib_arch nvptx64-nvidia-cuda)
83+
list(APPEND full_build_archs nvptx64-nvidia-cuda)
8484
set(compile_opts_nvptx64-nvidia-cuda "-fsycl-targets=nvptx64-nvidia-cuda"
8585
"-Xsycl-target-backend" "--cuda-gpu-arch=sm_50" "-nocudalib")
8686
set(opt_flags_nvptx64-nvidia-cuda "-O3" "--nvvm-reflect-enable=false")
8787
endif()
8888
if("AMDGPU" IN_LIST LLVM_TARGETS_TO_BUILD)
89-
list(APPEND devicelib_arch amdgcn-amd-amdhsa)
89+
list(APPEND full_build_archs amdgcn-amd-amdhsa)
9090
set(compile_opts_amdgcn-amd-amdhsa "-nogpulib" "-fsycl-targets=amdgcn-amd-amdhsa"
9191
"-Xsycl-target-backend" "--offload-arch=gfx942")
9292
set(opt_flags_amdgcn-amd-amdhsa "-O3" "--amdgpu-oclc-reflect-enable=false")
@@ -178,7 +178,7 @@ function(append_to_property list)
178178
endfunction()
179179

180180
# Creates device libaries for all filetypes.
181-
# Adds bitcode library files additionally for each devicelib_arch target and
181+
# Adds bitcode library files additionally for each devicelib build arch and
182182
# adds the created file to an arch specific global property.
183183
#
184184
# Arguments:
@@ -195,7 +195,7 @@ function(add_devicelibs filename)
195195
cmake_parse_arguments(ARG
196196
""
197197
""
198-
"SRC;EXTRA_OPTS;DEPENDENCIES;SKIP_ARCHS;FILETYPES"
198+
"SRC;EXTRA_OPTS;DEPENDENCIES;BUILD_ARCHS;FILETYPES"
199199
${ARGN})
200200
if(ARG_FILETYPES)
201201
set(devicelib_filetypes "${ARG_FILETYPES}")
@@ -210,10 +210,7 @@ function(add_devicelibs filename)
210210
EXTRA_OPTS ${ARG_EXTRA_OPTS} ${${filetype}_device_compile_opts})
211211
endforeach()
212212

213-
foreach(arch IN LISTS devicelib_arch)
214-
if(arch IN_LIST ARG_SKIP_ARCHS)
215-
continue()
216-
endif()
213+
foreach(arch IN LISTS ARG_BUILD_ARCHS)
217214
compile_lib(${filename}-${arch}
218215
FILETYPE bc
219216
SRC ${ARG_SRC}
@@ -350,55 +347,69 @@ check_cxx_compiler_flag(-Wno-invalid-noreturn HAS_NO_INVALID_NORETURN_WARN_FLAG)
350347
# ones.
351348
add_devicelibs(libsycl-itt-stubs
352349
SRC itt_stubs.cpp
350+
BUILD_ARCHS ${full_build_archs}
353351
DEPENDENCIES ${itt_obj_deps})
354352
add_devicelibs(libsycl-itt-compiler-wrappers
355353
SRC itt_compiler_wrappers.cpp
354+
BUILD_ARCHS ${full_build_archs}
356355
DEPENDENCIES ${itt_obj_deps})
357356
add_devicelibs(libsycl-itt-user-wrappers
358357
SRC itt_user_wrappers.cpp
358+
BUILD_ARCHS ${full_build_archs}
359359
DEPENDENCIES ${itt_obj_deps})
360360

361361
add_devicelibs(libsycl-crt
362362
SRC crt_wrapper.cpp
363+
BUILD_ARCHS ${full_build_archs}
363364
DEPENDENCIES ${crt_obj_deps}
364365
EXTRA_OPTS $<$<BOOL:${HAS_NO_INVALID_NORETURN_WARN_FLAG}>:-Wno-invalid-noreturn>)
365366

366367
add_devicelibs(libsycl-complex
367368
SRC complex_wrapper.cpp
369+
BUILD_ARCHS ${full_build_archs}
368370
DEPENDENCIES ${complex_obj_deps})
369371
add_devicelibs(libsycl-complex-fp64
370372
SRC complex_wrapper_fp64.cpp
373+
BUILD_ARCHS ${full_build_archs}
371374
DEPENDENCIES ${complex_obj_deps} )
372375
add_devicelibs(libsycl-cmath
373376
SRC cmath_wrapper.cpp
377+
BUILD_ARCHS ${full_build_archs}
374378
DEPENDENCIES ${cmath_obj_deps})
375379
add_devicelibs(libsycl-cmath-fp64
376380
SRC cmath_wrapper_fp64.cpp
381+
BUILD_ARCHS ${full_build_archs}
377382
DEPENDENCIES ${cmath_obj_deps} )
383+
set(imf_build_archs)
378384
add_devicelibs(libsycl-imf
379385
SRC imf_wrapper.cpp
380-
DEPENDENCIES ${imf_obj_deps})
386+
DEPENDENCIES ${imf_obj_deps}
387+
BUILD_ARCHS ${imf_build_archs})
381388
add_devicelibs(libsycl-imf-fp64
382389
SRC imf_wrapper_fp64.cpp
383-
DEPENDENCIES ${imf_obj_deps})
390+
DEPENDENCIES ${imf_obj_deps}
391+
BUILD_ARCHS ${imf_build_archs})
384392
add_devicelibs(libsycl-imf-bf16
385393
SRC imf_wrapper_bf16.cpp
386-
DEPENDENCIES ${imf_obj_deps})
394+
DEPENDENCIES ${imf_obj_deps}
395+
BUILD_ARCHS ${imf_build_archs})
387396
add_devicelibs(libsycl-bfloat16
388397
SRC bfloat16_wrapper.cpp
398+
BUILD_ARCHS ${full_build_archs}
389399
DEPENDENCIES ${cmath_obj_deps})
390400
if(MSVC)
391401
add_devicelibs(libsycl-msvc-math
392402
SRC msvc_math.cpp
403+
BUILD_ARCHS ${full_build_archs}
393404
DEPENDENCIES ${cmath_obj_deps})
394405
else()
395406
if(UR_SANITIZER_INCLUDE_DIR)
407+
set(sanitizer_build_archs)
396408
# asan jit
397409
add_devicelibs(libsycl-asan
398410
SRC sanitizer/asan_rtl.cpp
399411
DEPENDENCIES ${asan_obj_deps}
400-
SKIP_ARCHS nvptx64-nvidia-cuda
401-
amdgcn-amd-amdhsa
412+
BUILD_ARCHS ${sanitizer_build_archs}
402413
FILETYPES "${filetypes_no_spv}"
403414
EXTRA_OPTS -fno-sycl-instrument-device-code
404415
-I${UR_SANITIZER_INCLUDE_DIR}
@@ -421,8 +432,7 @@ else()
421432
add_devicelibs(libsycl-msan
422433
SRC sanitizer/msan_rtl.cpp
423434
DEPENDENCIES ${msan_obj_deps}
424-
SKIP_ARCHS nvptx64-nvidia-cuda
425-
amdgcn-amd-amdhsa
435+
BUILD_ARCHS ${sanitizer_build_archs}
426436
FILETYPES "${filetypes_no_spv}"
427437
EXTRA_OPTS -fno-sycl-instrument-device-code
428438
-I${UR_SANITIZER_INCLUDE_DIR}
@@ -445,8 +455,7 @@ else()
445455
add_devicelibs(libsycl-tsan
446456
SRC sanitizer/tsan_rtl.cpp
447457
DEPENDENCIES ${tsan_obj_deps}
448-
SKIP_ARCHS nvptx64-nvidia-cuda
449-
amdgcn-amd-amdhsa
458+
BUILD_ARCHS ${sanitizer_build_archs}
450459
FILETYPES "${filetypes_no_spv}"
451460
EXTRA_OPTS -fno-sycl-instrument-device-code
452461
-I${UR_SANITIZER_INCLUDE_DIR}
@@ -469,30 +478,38 @@ endif()
469478

470479
add_devicelibs(libsycl-fallback-cassert
471480
SRC fallback-cassert.cpp
481+
BUILD_ARCHS ${full_build_archs}
472482
DEPENDENCIES ${crt_obj_deps}
473483
EXTRA_OPTS -fno-sycl-instrument-device-code)
474484
add_devicelibs(libsycl-fallback-cstring
475485
SRC fallback-cstring.cpp
486+
BUILD_ARCHS ${full_build_archs}
476487
DEPENDENCIES ${crt_obj_deps})
477488
add_devicelibs(libsycl-fallback-complex
478489
SRC fallback-complex.cpp
490+
BUILD_ARCHS ${full_build_archs}
479491
DEPENDENCIES ${complex_obj_deps})
480492
add_devicelibs(libsycl-fallback-complex-fp64
481493
SRC fallback-complex-fp64.cpp
494+
BUILD_ARCHS ${full_build_archs}
482495
DEPENDENCIES ${complex_obj_deps})
483496
add_devicelibs(libsycl-fallback-cmath
484497
SRC fallback-cmath.cpp
498+
BUILD_ARCHS ${full_build_archs}
485499
DEPENDENCIES ${cmath_obj_deps})
486500
add_devicelibs(libsycl-fallback-cmath-fp64
487501
SRC fallback-cmath-fp64.cpp
502+
BUILD_ARCHS ${full_build_archs}
488503
DEPENDENCIES ${cmath_obj_deps})
489504
add_devicelibs(libsycl-fallback-bfloat16
490505
SRC fallback-bfloat16.cpp
491506
FILETYPES "${filetypes_no_spv}"
507+
BUILD_ARCHS ${full_build_archs}
492508
DEPENDENCIES ${bfloat16_obj_deps})
493509
add_devicelibs(libsycl-native-bfloat16
494510
SRC bfloat16_wrapper.cpp
495511
FILETYPES "${filetypes_no_spv}"
512+
BUILD_ARCHS ${full_build_archs}
496513
DEPENDENCIES ${bfloat16_obj_deps})
497514

498515
# Create dependency and source lists for Intel math function libraries.
@@ -651,9 +668,9 @@ foreach(dtype IN ITEMS bf16 fp32 fp64)
651668
endforeach()
652669
endforeach()
653670

654-
# Add device fallback imf libraries for the NVPTX and AMD targets.
671+
# Add device fallback imf libraries for single bitcode targets.
655672
# The output files are bitcode.
656-
foreach(arch IN LISTS devicelib_arch)
673+
foreach(arch IN LISTS imf_build_archs)
657674
foreach(dtype IN ITEMS bf16 fp32 fp64)
658675
set(tgt_name imf_fallback_${dtype}_bc_${arch})
659676

@@ -673,7 +690,7 @@ endforeach()
673690

674691
# Create one large bitcode file for the NVPTX and AMD targets.
675692
# Use all the files collected in the respective global properties.
676-
foreach(arch IN LISTS devicelib_arch)
693+
foreach(arch IN LISTS full_build_archs)
677694
get_property(BC_DEVICE_LIBS_${arch} GLOBAL PROPERTY BC_DEVICE_LIBS_${arch})
678695
# Link the bitcode files together.
679696
link_bc(TARGET device_lib_device_${arch}

0 commit comments

Comments
 (0)