Merge "SWDEV-233749 Added support for parallel build and link" into amd-master-next
[ROCm/hip commit: 137440ac72]
This commit is contained in:
zatwierdzone przez
Gerrit Code Review
commit
f2e884a2bf
@@ -1,7 +1,7 @@
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
# FindHIP.cmake
|
# FindHIP.cmake
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
include(CheckCXXCompilerFlag)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# SET: Variable defaults
|
# SET: Variable defaults
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -202,16 +202,36 @@ set(CMAKE_SHARED_LIBRARY_RUNTIME_HIP_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_CXX
|
|||||||
set(CMAKE_SHARED_LIBRARY_LINK_STATIC_HIP_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_STATIC_CXX_FLAGS})
|
set(CMAKE_SHARED_LIBRARY_LINK_STATIC_HIP_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_STATIC_CXX_FLAGS})
|
||||||
set(CMAKE_SHARED_LIBRARY_LINK_DYNAMIC_HIP_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_DYNAMIC_CXX_FLAGS})
|
set(CMAKE_SHARED_LIBRARY_LINK_DYNAMIC_HIP_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_DYNAMIC_CXX_FLAGS})
|
||||||
|
|
||||||
|
set(HIP_CLANG_PARALLEL_BUILD_COMPILE_OPTIONS "")
|
||||||
|
set(HIP_CLANG_PARALLEL_BUILD_LINK_OPTIONS "")
|
||||||
|
|
||||||
if("${HIP_COMPILER}" STREQUAL "hcc")
|
if("${HIP_COMPILER}" STREQUAL "hcc")
|
||||||
# Set the CMake Flags to use the HCC Compiler.
|
# Set the CMake Flags to use the HCC Compiler.
|
||||||
set(CMAKE_HIP_CREATE_SHARED_LIBRARY "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HCC_HOME} <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
|
set(CMAKE_HIP_CREATE_SHARED_LIBRARY "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HCC_HOME} <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
|
||||||
set(CMAKE_HIP_CREATE_SHARED_MODULE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HCC_HOME} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <LINK_LIBRARIES> -shared" )
|
set(CMAKE_HIP_CREATE_SHARED_MODULE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HCC_HOME} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <LINK_LIBRARIES> -shared" )
|
||||||
set(CMAKE_HIP_LINK_EXECUTABLE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HCC_HOME} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
set(CMAKE_HIP_LINK_EXECUTABLE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HCC_HOME} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||||
elseif("${HIP_COMPILER}" STREQUAL "clang")
|
elseif("${HIP_COMPILER}" STREQUAL "clang")
|
||||||
|
#Number of parallel jobs by default is 1
|
||||||
|
if(NOT DEFINED HIP_CLANG_NUM_PARALLEL_JOBS)
|
||||||
|
set(HIP_CLANG_NUM_PARALLEL_JOBS 1)
|
||||||
|
endif()
|
||||||
|
#Add support for parallel build and link
|
||||||
|
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
||||||
|
check_cxx_compiler_flag("-parallel-jobs=1" HIP_CLANG_SUPPORTS_PARALLEL_JOBS)
|
||||||
|
endif()
|
||||||
|
if(HIP_CLANG_NUM_PARALLEL_JOBS GREATER 1)
|
||||||
|
if(${HIP_CLANG_SUPPORTS_PARALLEL_JOBS})
|
||||||
|
set(HIP_CLANG_PARALLEL_BUILD_COMPILE_OPTIONS "-parallel-jobs=${HIP_CLANG_NUM_PARALLEL_JOBS} -Wno-format-nonliteral")
|
||||||
|
set(HIP_CLANG_PARALLEL_BUILD_LINK_OPTIONS "-parallel-jobs=${HIP_CLANG_NUM_PARALLEL_JOBS}")
|
||||||
|
else()
|
||||||
|
message("clang compiler doesn't support parallel jobs")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# Set the CMake Flags to use the HIP-Clang Compiler.
|
# Set the CMake Flags to use the HIP-Clang Compiler.
|
||||||
set(CMAKE_HIP_CREATE_SHARED_LIBRARY "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HIP_CLANG_PATH} <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
|
set(CMAKE_HIP_CREATE_SHARED_LIBRARY "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HIP_CLANG_PATH} ${HIP_CLANG_PARALLEL_BUILD_LINK_OPTIONS} <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
|
||||||
set(CMAKE_HIP_CREATE_SHARED_MODULE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HIP_CLANG_PATH} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <LINK_LIBRARIES> -shared" )
|
set(CMAKE_HIP_CREATE_SHARED_MODULE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HIP_CLANG_PATH} ${HIP_CLANG_PARALLEL_BUILD_LINK_OPTIONS} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <LINK_LIBRARIES> -shared" )
|
||||||
set(CMAKE_HIP_LINK_EXECUTABLE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HIP_CLANG_PATH} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
set(CMAKE_HIP_LINK_EXECUTABLE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HIP_CLANG_PATH} ${HIP_CLANG_PARALLEL_BUILD_LINK_OPTIONS} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -614,7 +634,7 @@ macro(HIP_ADD_EXECUTABLE hip_target)
|
|||||||
set(HIP_CLANG_PATH "/opt/rocm/llvm/bin")
|
set(HIP_CLANG_PATH "/opt/rocm/llvm/bin")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
set(CMAKE_HIP_LINK_EXECUTABLE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HIP_CLANG_PATH} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
set(CMAKE_HIP_LINK_EXECUTABLE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HIP_CLANG_PATH} ${HIP_CLANG_PARALLEL_BUILD_LINK_OPTIONS} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||||
endif()
|
endif()
|
||||||
add_executable(${hip_target} ${_cmake_options} ${_generated_files} ${_sources})
|
add_executable(${hip_target} ${_cmake_options} ${_generated_files} ${_sources})
|
||||||
set_target_properties(${hip_target} PROPERTIES LINKER_LANGUAGE HIP)
|
set_target_properties(${hip_target} PROPERTIES LINKER_LANGUAGE HIP)
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ set(CMAKE_COMMAND "@CMAKE_COMMAND@") # path
|
|||||||
set(HIP_run_make2cmake "@HIP_run_make2cmake@") # path
|
set(HIP_run_make2cmake "@HIP_run_make2cmake@") # path
|
||||||
set(HCC_HOME "@HCC_HOME@") #path
|
set(HCC_HOME "@HCC_HOME@") #path
|
||||||
set(HIP_CLANG_PATH "@HIP_CLANG_PATH@") #path
|
set(HIP_CLANG_PATH "@HIP_CLANG_PATH@") #path
|
||||||
|
set(HIP_CLANG_PARALLEL_BUILD_COMPILE_OPTIONS "@HIP_CLANG_PARALLEL_BUILD_COMPILE_OPTIONS@")
|
||||||
|
|
||||||
@HIP_HOST_FLAGS@
|
@HIP_HOST_FLAGS@
|
||||||
@_HIP_HIPCC_FLAGS@
|
@_HIP_HIPCC_FLAGS@
|
||||||
@@ -56,7 +57,7 @@ if(NOT host_flag)
|
|||||||
if(NOT "x${HIP_CLANG_PATH}" STREQUAL "x")
|
if(NOT "x${HIP_CLANG_PATH}" STREQUAL "x")
|
||||||
set(ENV{HIP_CLANG_PATH} ${HIP_CLANG_PATH})
|
set(ENV{HIP_CLANG_PATH} ${HIP_CLANG_PATH})
|
||||||
endif()
|
endif()
|
||||||
set(__CC_FLAGS ${HIP_HIPCC_FLAGS} ${HIP_CLANG_FLAGS} ${HIP_HIPCC_FLAGS_${build_configuration}} ${HIP_CLANG_FLAGS_${build_configuration}})
|
set(__CC_FLAGS ${HIP_CLANG_PARALLEL_BUILD_COMPILE_OPTIONS} ${HIP_HIPCC_FLAGS} ${HIP_CLANG_FLAGS} ${HIP_HIPCC_FLAGS_${build_configuration}} ${HIP_CLANG_FLAGS_${build_configuration}})
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
set(__CC_FLAGS ${HIP_HIPCC_FLAGS} ${HIP_NVCC_FLAGS} ${HIP_HIPCC_FLAGS_${build_configuration}} ${HIP_NVCC_FLAGS_${build_configuration}})
|
set(__CC_FLAGS ${HIP_HIPCC_FLAGS} ${HIP_NVCC_FLAGS} ${HIP_HIPCC_FLAGS_${build_configuration}} ${HIP_NVCC_FLAGS_${build_configuration}})
|
||||||
|
|||||||
@@ -39,6 +39,10 @@ if (NOT _CMakeFindDependencyMacro_FOUND)
|
|||||||
endmacro()
|
endmacro()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
#Number of parallel jobs by default is 1
|
||||||
|
if(NOT DEFINED HIP_CLANG_NUM_PARALLEL_JOBS)
|
||||||
|
set(HIP_CLANG_NUM_PARALLEL_JOBS 1)
|
||||||
|
endif()
|
||||||
set(HIP_COMPILER "@HIP_COMPILER@")
|
set(HIP_COMPILER "@HIP_COMPILER@")
|
||||||
set(HIP_RUNTIME "@HIP_RUNTIME@")
|
set(HIP_RUNTIME "@HIP_RUNTIME@")
|
||||||
|
|
||||||
@@ -168,6 +172,22 @@ if(HIP_COMPILER STREQUAL "clang")
|
|||||||
INTERFACE_LINK_LIBRARIES "--cuda-gpu-arch=${GPU_TARGET}"
|
INTERFACE_LINK_LIBRARIES "--cuda-gpu-arch=${GPU_TARGET}"
|
||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
#Add support for parallel build and link
|
||||||
|
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
||||||
|
check_cxx_compiler_flag("-parallel-jobs=1" HIP_CLANG_SUPPORTS_PARALLEL_JOBS)
|
||||||
|
endif()
|
||||||
|
if(HIP_CLANG_NUM_PARALLEL_JOBS GREATER 1)
|
||||||
|
if(${HIP_CLANG_SUPPORTS_PARALLEL_JOBS} )
|
||||||
|
set_property(TARGET hip::device APPEND PROPERTY
|
||||||
|
INTERFACE_COMPILE_OPTIONS -parallel-jobs=${HIP_CLANG_NUM_PARALLEL_JOBS} -Wno-format-nonliteral
|
||||||
|
)
|
||||||
|
set_property(TARGET hip::device APPEND PROPERTY
|
||||||
|
INTERFACE_LINK_LIBRARIES -parallel-jobs=${HIP_CLANG_NUM_PARALLEL_JOBS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
message("clang compiler doesn't support parallel jobs")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set( hip_LIBRARIES hip::host hip::device)
|
set( hip_LIBRARIES hip::host hip::device)
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ set(CMAKE_MODULE_PATH "${HIP_PATH}/cmake" ${CMAKE_MODULE_PATH})
|
|||||||
|
|
||||||
project(12_cmake)
|
project(12_cmake)
|
||||||
|
|
||||||
|
set(HIP_CLANG_NUM_PARALLEL_JOBS 2)
|
||||||
find_package(HIP QUIET)
|
find_package(HIP QUIET)
|
||||||
if(HIP_FOUND)
|
if(HIP_FOUND)
|
||||||
message(STATUS "Found HIP: " ${HIP_VERSION})
|
message(STATUS "Found HIP: " ${HIP_VERSION})
|
||||||
|
|||||||
Reference in New Issue
Block a user