From 8e98a9967f021ad8d1346452a7e63d42f7459cb6 Mon Sep 17 00:00:00 2001 From: "Ahmed, Daiyaan" Date: Wed, 3 Jan 2024 18:38:56 +0800 Subject: [PATCH] Update LIT test to remove project Signed-off-by: Ahmed, Daiyaan --- .../case_004_target_link_libraries.cpp | 10 ++ .../cmake_migration/case_004/expected.txt | 21 +++ .../dpct/cmake_migration/case_004/input.cmake | 21 +++ .../cmake_script_migration_rule.yaml | 152 ++++++++++++++++++ clang/tools/dpct/cmake/dpct.cmake | 6 + 5 files changed, 210 insertions(+) create mode 100644 clang/test/dpct/cmake_migration/case_004/case_004_target_link_libraries.cpp create mode 100644 clang/test/dpct/cmake_migration/case_004/expected.txt create mode 100644 clang/test/dpct/cmake_migration/case_004/input.cmake diff --git a/clang/test/dpct/cmake_migration/case_004/case_004_target_link_libraries.cpp b/clang/test/dpct/cmake_migration/case_004/case_004_target_link_libraries.cpp new file mode 100644 index 000000000000..0da8aed159d6 --- /dev/null +++ b/clang/test/dpct/cmake_migration/case_004/case_004_target_link_libraries.cpp @@ -0,0 +1,10 @@ +// RUN: rm -rf %T && mkdir -p %T +// RUN: cd %T +// RUN: cp %S/input.cmake ./input.cmake +// RUN: dpct -in-root ./ -out-root out ./input.cmake --migrate-cmake-script-only +// RUN: echo "begin" > %T/diff.txt +// RUN: diff --strip-trailing-cr %S/expected.txt %T/out/input.cmake >> %T/diff.txt +// RUN: echo "end" >> %T/diff.txt + +// CHECK: begin +// CHECK-NEXT: end diff --git a/clang/test/dpct/cmake_migration/case_004/expected.txt b/clang/test/dpct/cmake_migration/case_004/expected.txt new file mode 100644 index 000000000000..67d40fe7ce39 --- /dev/null +++ b/clang/test/dpct/cmake_migration/case_004/expected.txt @@ -0,0 +1,21 @@ +target_link_libraries(main PRIVATE cxxopts fmt::fmt -qmkl) + +target_link_libraries(foo3 PUBLIC ${TCNN_LIBRARIES} fmt) + +target_link_libraries(transformer_engine PUBLIC + -qmkl + + + + + ${DNN_LIB}) + +target_link_libraries(${target} PRIVATE + -static-libgcc + + ) + +target_link_libraries(${PROJECT_NAME} + + +) diff --git a/clang/test/dpct/cmake_migration/case_004/input.cmake b/clang/test/dpct/cmake_migration/case_004/input.cmake new file mode 100644 index 000000000000..6eb0191d65db --- /dev/null +++ b/clang/test/dpct/cmake_migration/case_004/input.cmake @@ -0,0 +1,21 @@ +target_link_libraries(main PRIVATE cxxopts fmt::fmt -lcublas) + +target_link_libraries(foo3 PUBLIC ${CUDA_LIBRARIES} ${TCNN_LIBRARIES} fmt) + +target_link_libraries(transformer_engine PUBLIC + CUDA::cublas + CUDA::cuda_driver + CUDA::cudart + CUDA::nvrtc + CUDA::nvToolsExt + cudnn) + +target_link_libraries(${target} PRIVATE + -static-libgcc + -static-libstdc++ + ) + +target_link_libraries(${PROJECT_NAME} + libnvinfer.so + libnvonnxparser.so +) diff --git a/clang/tools/dpct/DpctOptRules/cmake_script_migration_rule.yaml b/clang/tools/dpct/DpctOptRules/cmake_script_migration_rule.yaml index d57badb7c503..c520bd5ad25c 100644 --- a/clang/tools/dpct/DpctOptRules/cmake_script_migration_rule.yaml +++ b/clang/tools/dpct/DpctOptRules/cmake_script_migration_rule.yaml @@ -356,3 +356,155 @@ In: ${arg}.cu Out: ${arg}.dp.cpp +# CUDA_LIBRARIES is cmake cuda reverved list variable, should be removed in SYCL +- Rule: rule_target_link_libraries_CUDA_LIBRARIES + Kind: CMakeRule + Priority: Fallback + CmakeSyntax: CUDA_LIBRARIES_target_link_libraries + In: target_link_libraries(${CULibraries}) + Out: target_link_libraries(${CULibraries}) + Subrules: + CULibraries: + In: | + \${CUDA_LIBRARIES} + Out: "" + MatchMode: Full + RuleId: "remove_cuda_reserved_variable_CUDA_LIBRARIES" + +- Rule: rule_target_link_libraries_-lcublas + Kind: CMakeRule + Priority: Fallback + CmakeSyntax: -lcublas_target_link_libraries + In: target_link_libraries(${CUDALibraries}) + Out: target_link_libraries(${CUDALibraries}) + Subrules: + CUDALibraries: + In: -lcublas + Out: -qmkl + MatchMode: Full + RuleId: "replace_-lcublas_with_qmkl" + +- Rule: rule_target_link_libraries_CUDA_cublas + Kind: CMakeRule + Priority: Fallback + CmakeSyntax: CUDA_cublas_target_link_libraries + In: target_link_libraries(${CUDALibraries}) + Out: target_link_libraries(${CUDALibraries}) + Subrules: + CUDALibraries: + In: "CUDA::cublas" + Out: -qmkl + MatchMode: Full + RuleId: "replace_CUDA_cublas_with_qmkl" + +# libsycl.so is linked by default as alternative to cuda_driver library, so removing here +- Rule: rule_target_link_libraries_cuda_driver + Kind: CMakeRule + Priority: Fallback + CmakeSyntax: cuda_driver_target_link_libraries + In: target_link_libraries(${CUDALibraries}) + Out: target_link_libraries(${CUDALibraries}) + Subrules: + CUDALibraries: + In: "CUDA::cuda_driver" + Out: "" + MatchMode: Full + RuleId: "remove_CUDA_driver" + +# libsycl.so is linked by default as alternative to cuda_driver library, so removing here +- Rule: rule_target_link_libraries_cuda_rt + Kind: CMakeRule + Priority: Fallback + CmakeSyntax: cudart_target_link_libraries + In: target_link_libraries(${CUDALibraries}) + Out: target_link_libraries(${CUDALibraries}) + Subrules: + CUDALibraries: + In: "CUDA::cudart" + Out: "" + MatchMode: Full + RuleId: "remove_CUDA_cudart" + +- Rule: rule_target_link_libraries_cudnn + Kind: CMakeRule + Priority: Fallback + CmakeSyntax: cudnn_target_link_libraries + In: target_link_libraries(${CUDALibraries}) + Out: target_link_libraries(${CUDALibraries}) + Subrules: + CUDALibraries: + In: "cudnn" + Out: | + \${DNN_LIB} + MatchMode: Full + RuleId: "replace_cudnn_with_libdnn" + +# SYCL does not have mapping for nvrtc currently, so removing here +- Rule: rule_target_link_libraries_nvrtc + Kind: CMakeRule + Priority: Fallback + CmakeSyntax: nvrtc_target_link_libraries + In: target_link_libraries(${CUDALibraries}) + Out: target_link_libraries(${CUDALibraries}) + Subrules: + CUDALibraries: + In: "CUDA::nvrtc" + Out: "" + MatchMode: Full + RuleId: "remove_nvrtc" + +# SYCL does not have mapping for nvToolsExt currently, so removing here +- Rule: rule_target_link_libraries_nvToolsExt + Kind: CMakeRule + Priority: Fallback + CmakeSyntax: nvToolsExt_target_link_libraries + In: target_link_libraries(${CUDALibraries}) + Out: target_link_libraries(${CUDALibraries}) + Subrules: + CUDALibraries: + In: "CUDA::nvToolsExt" + Out: "" + MatchMode: Full + RuleId: "remove_nvToolsExt" + +# SYCL does not have mapping for libnvinfer currently, so removing here +- Rule: rule_target_link_libraries_libnvinfer + Kind: CMakeRule + Priority: Fallback + CmakeSyntax: libnvinfer_target_link_libraries + In: target_link_libraries(${CUDALibraries}) + Out: target_link_libraries(${CUDALibraries}) + Subrules: + CUDALibraries: + In: libnvinfer.so + Out: "" + MatchMode: Full + RuleId: "remove_libnvinfer" + +# SYCL does not have mapping for libnvonnxparser currently, so removing here +- Rule: rule_target_link_libraries_libnvonnxparser + Kind: CMakeRule + Priority: Fallback + CmakeSyntax: libnvonnxparser_target_link_libraries + In: target_link_libraries(${CUDALibraries}) + Out: target_link_libraries(${CUDALibraries}) + Subrules: + CUDALibraries: + In: libnvonnxparser.so + Out: "" + MatchMode: Full + RuleId: "remove_libnvonnxparser" + +# icpx: error: '-static-libstdc++' is not supported with '-fsycl', so removing here +- Rule: rule_target_link_libraries_libstdc++ + Kind: CMakeRule + Priority: Fallback + CmakeSyntax: libstdc++_target_link_libraries + In: target_link_libraries(${StaticLibraries}) + Out: target_link_libraries(${StaticLibraries}) + Subrules: + StaticLibraries: + In: -static-libstdc++ + Out: "" + MatchMode: Full + RuleId: "remove_-static-libstdc++" diff --git a/clang/tools/dpct/cmake/dpct.cmake b/clang/tools/dpct/cmake/dpct.cmake index 99592fd24070..9e614210a288 100644 --- a/clang/tools/dpct/cmake/dpct.cmake +++ b/clang/tools/dpct/cmake/dpct.cmake @@ -90,3 +90,9 @@ macro(DPCT_HELPER_SYCL_COMPILE generated_files) _DPCT_CREATE_BUILD_COMMAND("sycl_device" ${generated_files} ${_sources}) endmacro() + +if(WIN32) + set(DNN_LIB "dnnl.lib") +else() + set(DNN_LIB "dnnl") +endif()