Skip to content

Commit adf9fb6

Browse files
[SYCLomatic] support migration of cmake syntax: target_link_libraries (#1571)
Signed-off-by: Ahmed, Daiyaan <daiyaan.ahmed@intel.com>
1 parent 7dd458d commit adf9fb6

File tree

5 files changed

+210
-0
lines changed

5 files changed

+210
-0
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// RUN: rm -rf %T && mkdir -p %T
2+
// RUN: cd %T
3+
// RUN: cp %S/input.cmake ./input.cmake
4+
// RUN: dpct -in-root ./ -out-root out ./input.cmake --migrate-cmake-script-only
5+
// RUN: echo "begin" > %T/diff.txt
6+
// RUN: diff --strip-trailing-cr %S/expected.txt %T/out/input.cmake >> %T/diff.txt
7+
// RUN: echo "end" >> %T/diff.txt
8+
9+
// CHECK: begin
10+
// CHECK-NEXT: end
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
target_link_libraries(main PRIVATE cxxopts fmt::fmt -qmkl)
2+
3+
target_link_libraries(foo3 PUBLIC ${TCNN_LIBRARIES} fmt)
4+
5+
target_link_libraries(transformer_engine PUBLIC
6+
-qmkl
7+
8+
9+
10+
11+
${DNN_LIB})
12+
13+
target_link_libraries(${target} PRIVATE
14+
-static-libgcc
15+
16+
)
17+
18+
target_link_libraries(${PROJECT_NAME}
19+
20+
21+
)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
target_link_libraries(main PRIVATE cxxopts fmt::fmt -lcublas)
2+
3+
target_link_libraries(foo3 PUBLIC ${CUDA_LIBRARIES} ${TCNN_LIBRARIES} fmt)
4+
5+
target_link_libraries(transformer_engine PUBLIC
6+
CUDA::cublas
7+
CUDA::cuda_driver
8+
CUDA::cudart
9+
CUDA::nvrtc
10+
CUDA::nvToolsExt
11+
cudnn)
12+
13+
target_link_libraries(${target} PRIVATE
14+
-static-libgcc
15+
-static-libstdc++
16+
)
17+
18+
target_link_libraries(${PROJECT_NAME}
19+
libnvinfer.so
20+
libnvonnxparser.so
21+
)

clang/tools/dpct/DpctOptRules/cmake_script_migration_rule.yaml

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,3 +356,155 @@
356356
In: ${arg}.cu
357357
Out: ${arg}.dp.cpp
358358

359+
# CUDA_LIBRARIES is cmake cuda reverved list variable, should be removed in SYCL
360+
- Rule: rule_target_link_libraries_CUDA_LIBRARIES
361+
Kind: CMakeRule
362+
Priority: Fallback
363+
CmakeSyntax: CUDA_LIBRARIES_target_link_libraries
364+
In: target_link_libraries(${CULibraries})
365+
Out: target_link_libraries(${CULibraries})
366+
Subrules:
367+
CULibraries:
368+
In: |
369+
\${CUDA_LIBRARIES}
370+
Out: ""
371+
MatchMode: Full
372+
RuleId: "remove_cuda_reserved_variable_CUDA_LIBRARIES"
373+
374+
- Rule: rule_target_link_libraries_-lcublas
375+
Kind: CMakeRule
376+
Priority: Fallback
377+
CmakeSyntax: -lcublas_target_link_libraries
378+
In: target_link_libraries(${CUDALibraries})
379+
Out: target_link_libraries(${CUDALibraries})
380+
Subrules:
381+
CUDALibraries:
382+
In: -lcublas
383+
Out: -qmkl
384+
MatchMode: Full
385+
RuleId: "replace_-lcublas_with_qmkl"
386+
387+
- Rule: rule_target_link_libraries_CUDA_cublas
388+
Kind: CMakeRule
389+
Priority: Fallback
390+
CmakeSyntax: CUDA_cublas_target_link_libraries
391+
In: target_link_libraries(${CUDALibraries})
392+
Out: target_link_libraries(${CUDALibraries})
393+
Subrules:
394+
CUDALibraries:
395+
In: "CUDA::cublas"
396+
Out: -qmkl
397+
MatchMode: Full
398+
RuleId: "replace_CUDA_cublas_with_qmkl"
399+
400+
# libsycl.so is linked by default as alternative to cuda_driver library, so removing here
401+
- Rule: rule_target_link_libraries_cuda_driver
402+
Kind: CMakeRule
403+
Priority: Fallback
404+
CmakeSyntax: cuda_driver_target_link_libraries
405+
In: target_link_libraries(${CUDALibraries})
406+
Out: target_link_libraries(${CUDALibraries})
407+
Subrules:
408+
CUDALibraries:
409+
In: "CUDA::cuda_driver"
410+
Out: ""
411+
MatchMode: Full
412+
RuleId: "remove_CUDA_driver"
413+
414+
# libsycl.so is linked by default as alternative to cuda_driver library, so removing here
415+
- Rule: rule_target_link_libraries_cuda_rt
416+
Kind: CMakeRule
417+
Priority: Fallback
418+
CmakeSyntax: cudart_target_link_libraries
419+
In: target_link_libraries(${CUDALibraries})
420+
Out: target_link_libraries(${CUDALibraries})
421+
Subrules:
422+
CUDALibraries:
423+
In: "CUDA::cudart"
424+
Out: ""
425+
MatchMode: Full
426+
RuleId: "remove_CUDA_cudart"
427+
428+
- Rule: rule_target_link_libraries_cudnn
429+
Kind: CMakeRule
430+
Priority: Fallback
431+
CmakeSyntax: cudnn_target_link_libraries
432+
In: target_link_libraries(${CUDALibraries})
433+
Out: target_link_libraries(${CUDALibraries})
434+
Subrules:
435+
CUDALibraries:
436+
In: "cudnn"
437+
Out: |
438+
\${DNN_LIB}
439+
MatchMode: Full
440+
RuleId: "replace_cudnn_with_libdnn"
441+
442+
# SYCL does not have mapping for nvrtc currently, so removing here
443+
- Rule: rule_target_link_libraries_nvrtc
444+
Kind: CMakeRule
445+
Priority: Fallback
446+
CmakeSyntax: nvrtc_target_link_libraries
447+
In: target_link_libraries(${CUDALibraries})
448+
Out: target_link_libraries(${CUDALibraries})
449+
Subrules:
450+
CUDALibraries:
451+
In: "CUDA::nvrtc"
452+
Out: ""
453+
MatchMode: Full
454+
RuleId: "remove_nvrtc"
455+
456+
# SYCL does not have mapping for nvToolsExt currently, so removing here
457+
- Rule: rule_target_link_libraries_nvToolsExt
458+
Kind: CMakeRule
459+
Priority: Fallback
460+
CmakeSyntax: nvToolsExt_target_link_libraries
461+
In: target_link_libraries(${CUDALibraries})
462+
Out: target_link_libraries(${CUDALibraries})
463+
Subrules:
464+
CUDALibraries:
465+
In: "CUDA::nvToolsExt"
466+
Out: ""
467+
MatchMode: Full
468+
RuleId: "remove_nvToolsExt"
469+
470+
# SYCL does not have mapping for libnvinfer currently, so removing here
471+
- Rule: rule_target_link_libraries_libnvinfer
472+
Kind: CMakeRule
473+
Priority: Fallback
474+
CmakeSyntax: libnvinfer_target_link_libraries
475+
In: target_link_libraries(${CUDALibraries})
476+
Out: target_link_libraries(${CUDALibraries})
477+
Subrules:
478+
CUDALibraries:
479+
In: libnvinfer.so
480+
Out: ""
481+
MatchMode: Full
482+
RuleId: "remove_libnvinfer"
483+
484+
# SYCL does not have mapping for libnvonnxparser currently, so removing here
485+
- Rule: rule_target_link_libraries_libnvonnxparser
486+
Kind: CMakeRule
487+
Priority: Fallback
488+
CmakeSyntax: libnvonnxparser_target_link_libraries
489+
In: target_link_libraries(${CUDALibraries})
490+
Out: target_link_libraries(${CUDALibraries})
491+
Subrules:
492+
CUDALibraries:
493+
In: libnvonnxparser.so
494+
Out: ""
495+
MatchMode: Full
496+
RuleId: "remove_libnvonnxparser"
497+
498+
# icpx: error: '-static-libstdc++' is not supported with '-fsycl', so removing here
499+
- Rule: rule_target_link_libraries_libstdc++
500+
Kind: CMakeRule
501+
Priority: Fallback
502+
CmakeSyntax: libstdc++_target_link_libraries
503+
In: target_link_libraries(${StaticLibraries})
504+
Out: target_link_libraries(${StaticLibraries})
505+
Subrules:
506+
StaticLibraries:
507+
In: -static-libstdc++
508+
Out: ""
509+
MatchMode: Full
510+
RuleId: "remove_-static-libstdc++"

clang/tools/dpct/cmake/dpct.cmake

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,9 @@ macro(DPCT_HELPER_SYCL_COMPILE generated_files)
9090

9191
_DPCT_CREATE_BUILD_COMMAND("sycl_device" ${generated_files} ${_sources})
9292
endmacro()
93+
94+
if(WIN32)
95+
set(DNN_LIB "dnnl.lib")
96+
else()
97+
set(DNN_LIB "dnnl")
98+
endif()

0 commit comments

Comments
 (0)