diff --git a/CMakeLists.txt b/CMakeLists.txt index c31aca8586..787111f7ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,24 +47,26 @@ include(CheckIncludeFiles) include(CheckSymbolExists) include(cmake/Dependencies.cmake) # GTest, rocm-cmake, rocm_local_targets -# Determine which GPU architectures to build for +# Build only for local GPU architecture if (BUILD_LOCAL_GPU_TARGET_ONLY) message(STATUS "Building only for local GPU target") if (COMMAND rocm_local_targets) rocm_local_targets(DEFAULT_GPUS) else() - message(WARNING "Unable to determine local GPU targets. Falling back to default GPUs") + message(WARNING "Unable to determine local GPU targets. Falling back to default GPUs.") endif() endif() -if(COMMAND rocm_check_target_ids) + +# Determine which GPU architectures to build for +set(AMDGPU_TARGETS "${DEFAULT_GPUS}" CACHE STRING "Target default GPUs if AMDGPU_TARGETS is not defined.") +if (COMMAND rocm_check_target_ids) message(STATUS "Checking for ROCm support for GPU targets:") - rocm_check_target_ids(SUPPORTED_GPUS TARGETS ${DEFAULT_GPUS}) + rocm_check_target_ids(SUPPORTED_GPUS TARGETS ${AMDGPU_TARGETS}) else() - message(WARNING "Unable to check for supported GPU targets. Falling back to default GPUs") + message(WARNING "Unable to check for supported GPU targets. Falling back to default GPUs.") set(SUPPORTED_GPUS ${DEFAULT_GPUS}) endif() -set(AMDGPU_TARGETS "${SUPPORTED_GPUS}" CACHE STRING "AMD GPU targets to compile for" FORCE) -set(GPU_TARGETS "${AMDGPU_TARGETS}" CACHE STRING "GPU targets to compile for" FORCE) +set(GPU_TARGETS "${SUPPORTED_GPUS}" CACHE STRING "GPU targets to compile for.") message(STATUS "Compiling for ${GPU_TARGETS}") ## NOTE: Reload rocm-cmake in order to update GPU_TARGETS diff --git a/install.sh b/install.sh index 71046c48cb..2421714281 100755 --- a/install.sh +++ b/install.sh @@ -12,6 +12,7 @@ build_allreduce_only=false build_bfd=false build_freorg_bkwdcomp=false build_local_gpu_only=false +build_amdgpu_targets="" build_package=false build_release=true build_static=false @@ -48,6 +49,7 @@ function display_help() echo " -i|--install Install RCCL library (see --prefix argument below)" echo " -j|--jobs Specify how many parallel compilation jobs to run ($num_parallel_jobs by default)" echo " -l|--local_gpu_only Only compile for local GPU architecture" + echo " --amdgpu_targets Only compile for specified GPU architecture(s). For multiple targets, seperate by ';' (builds for all supported GPU architectures by default)" echo " --no_clean Don't delete files if they already exist" echo " --npkit-enable Compile with npkit enabled" echo " -p|--package_build Build RCCL package" @@ -68,7 +70,7 @@ function display_help() # check if we have a modern version of getopt that can handle whitespace and long parameters getopt -T if [[ $? -eq 4 ]]; then - GETOPT_PARSE=$(getopt --name "${0}" --options dfhij:lprt --longoptions address-sanitizer,build_allreduce_only,dependencies,debug,enable_backtrace,disable-colltrace,disable-msccl-kernel,fast,help,install,jobs:,local_gpu_only,no_clean,npkit-enable,package_build,prefix:,rm-legacy-include-dir,run_tests_all,run_tests_quick,static,tests_build,time-trace,verbose -- "$@") + GETOPT_PARSE=$(getopt --name "${0}" --options dfhij:lprt --longoptions address-sanitizer,build_allreduce_only,dependencies,debug,enable_backtrace,disable-colltrace,disable-msccl-kernel,fast,help,install,jobs:,local_gpu_only,amdgpu_targets:,no_clean,npkit-enable,package_build,prefix:,rm-legacy-include-dir,run_tests_all,run_tests_quick,static,tests_build,time-trace,verbose -- "$@") else echo "Need a new version of getopt" exit 1 @@ -95,6 +97,7 @@ while true; do -i | --install) install_library=true; shift ;; -j | --jobs) num_parallel_jobs=${2}; shift 2 ;; -l | --local_gpu_only) build_local_gpu_only=true; shift ;; + --amdgpu_targets) build_amdgpu_targets=${2}; shift 2 ;; --no_clean) clean_build=false; shift ;; --npkit-enable) npkit_enabled=true; shift ;; -p | --package_build) build_package=true; shift ;; @@ -201,6 +204,11 @@ if [[ "$build_local_gpu_only" == true ]]; then cmake_common_options="${cmake_common_options} -DBUILD_LOCAL_GPU_TARGET_ONLY=ON" fi +# Build for specified GPU target(s) only +if [[ ! -z "$build_amdgpu_targets" ]]; then + cmake_common_options="${cmake_common_options} -DAMDGPU_TARGETS=${build_amdgpu_targets}" +fi + # shared vs static if [[ "${build_static}" == true ]]; then cmake_common_options="${cmake_common_options} -DBUILD_SHARED_LIBS=OFF"