mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 12:54:11 +08:00
Summary:
Running commands:
```bash
shopt -s globstar
sed -e 's/IF (/if(/g' -e 's/IF(/if(/g' -e 's/if (/if(/g' -e 's/ELSE (/else(/g' -e 's/ELSE(/else(/g' -e 's/else (/else(/g' -e 's/ENDif(/endif(/g' -e 's/ELSEif(/elseif(/g' -i CMakeLists.txt
sed -e 's/IF (/if(/g' -e 's/IF(/if(/g' -e 's/if (/if(/g' -e 's/ELSE (/else(/g' -e 's/ELSE(/else(/g' -e 's/else (/else(/g' -e 's/ENDif(/endif(/g' -e 's/ELSEif(/elseif(/g' -i caffe2/**/CMakeLists.txt
sed -e 's/IF (/if(/g' -e 's/IF(/if(/g' -e 's/if (/if(/g' -e 's/ELSE (/else(/g' -e 's/ELSE(/else(/g' -e 's/else (/else(/g' -e 's/ENDif(/endif(/g' -e 's/ELSEif(/elseif(/g' -i torch/**/CMakeLists.txt
sed -e 's/IF (/if(/g' -e 's/IF(/if(/g' -e 's/if (/if(/g' -e 's/ELSE (/else(/g' -e 's/ELSE(/else(/g' -e 's/else (/else(/g' -e 's/ENDif(/endif(/g' -e 's/ELSEif(/elseif(/g' -i c10/**/CMakeLists.txt
sed -e 's/IF (/if(/g' -e 's/IF(/if(/g' -e 's/if (/if(/g' -e 's/ELSE (/else(/g' -e 's/ELSE(/else(/g' -e 's/else (/else(/g' -e 's/ENDif(/endif(/g' -e 's/ELSEif(/elseif(/g' -i cmake/**/*.cmake
sed -e 's/IF (/if(/g' -e 's/IF(/if(/g' -e 's/if (/if(/g' -e 's/ELSE (/else(/g' -e 's/ELSE(/else(/g' -e 's/else (/else(/g' -e 's/ENDif(/endif(/g' -e 's/ELSEif(/elseif(/g' -i cmake/**/*.cmake.in
```
We may further convert all the commands into lowercase according to the following issue: 77543bde41
.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/35521
Differential Revision: D20704382
Pulled By: malfet
fbshipit-source-id: 42186b9b1660c34428ab7ceb8d3f7a0ced5d2e80
200 lines
6.0 KiB
CMake
200 lines
6.0 KiB
CMake
set(PYTORCH_FOUND_HIP FALSE)
|
|
|
|
if(NOT DEFINED ENV{ROCM_PATH})
|
|
SET(ROCM_PATH /opt/rocm)
|
|
else()
|
|
SET(ROCM_PATH $ENV{ROCM_PATH})
|
|
endif()
|
|
|
|
# HIP_PATH
|
|
if(NOT DEFINED ENV{HIP_PATH})
|
|
SET(HIP_PATH ${ROCM_PATH}/hip)
|
|
else()
|
|
SET(HIP_PATH $ENV{HIP_PATH})
|
|
endif()
|
|
|
|
if(NOT EXISTS ${HIP_PATH})
|
|
return()
|
|
endif()
|
|
|
|
# HCC_PATH
|
|
if(NOT DEFINED ENV{HCC_PATH})
|
|
SET(HCC_PATH ${ROCM_PATH}/hcc)
|
|
else()
|
|
SET(HCC_PATH $ENV{HCC_PATH})
|
|
endif()
|
|
|
|
# HSA_PATH
|
|
if(NOT DEFINED ENV{HSA_PATH})
|
|
SET(HSA_PATH ${ROCM_PATH}/hsa)
|
|
else()
|
|
SET(HSA_PATH $ENV{HSA_PATH})
|
|
endif()
|
|
|
|
# ROCBLAS_PATH
|
|
if(NOT DEFINED ENV{ROCBLAS_PATH})
|
|
SET(ROCBLAS_PATH ${ROCM_PATH}/rocblas)
|
|
else()
|
|
SET(ROCBLAS_PATH $ENV{ROCBLAS_PATH})
|
|
endif()
|
|
|
|
# ROCFFT_PATH
|
|
if(NOT DEFINED ENV{ROCFFT_PATH})
|
|
SET(ROCFFT_PATH ${ROCM_PATH}/rocfft)
|
|
else()
|
|
SET(ROCFFT_PATH $ENV{ROCFFT_PATH})
|
|
endif()
|
|
|
|
# HIPSPARSE_PATH
|
|
if(NOT DEFINED ENV{HIPSPARSE_PATH})
|
|
SET(HIPSPARSE_PATH ${ROCM_PATH}/hipsparse)
|
|
else()
|
|
SET(HIPSPARSE_PATH $ENV{HIPSPARSE_PATH})
|
|
endif()
|
|
|
|
# THRUST_PATH
|
|
if(DEFINED ENV{THRUST_PATH})
|
|
SET(THRUST_PATH $ENV{THRUST_PATH})
|
|
else()
|
|
SET(THRUST_PATH ${ROCM_PATH}/include)
|
|
endif()
|
|
|
|
# HIPRAND_PATH
|
|
if(NOT DEFINED ENV{HIPRAND_PATH})
|
|
SET(HIPRAND_PATH ${ROCM_PATH}/hiprand)
|
|
else()
|
|
SET(HIPRAND_PATH $ENV{HIPRAND_PATH})
|
|
endif()
|
|
|
|
# ROCRAND_PATH
|
|
if(NOT DEFINED ENV{ROCRAND_PATH})
|
|
SET(ROCRAND_PATH ${ROCM_PATH}/rocrand)
|
|
else()
|
|
SET(ROCRAND_PATH $ENV{ROCRAND_PATH})
|
|
endif()
|
|
|
|
# MIOPEN_PATH
|
|
if(NOT DEFINED ENV{MIOPEN_PATH})
|
|
SET(MIOPEN_PATH ${ROCM_PATH}/miopen)
|
|
else()
|
|
SET(MIOPEN_PATH $ENV{MIOPEN_PATH})
|
|
endif()
|
|
|
|
# RCCL_PATH
|
|
if(NOT DEFINED ENV{RCCL_PATH})
|
|
SET(RCCL_PATH ${ROCM_PATH}/rccl)
|
|
else()
|
|
SET(RCCL_PATH $ENV{RCCL_PATH})
|
|
endif()
|
|
|
|
# ROCPRIM_PATH
|
|
if(NOT DEFINED ENV{ROCPRIM_PATH})
|
|
SET(ROCPRIM_PATH ${ROCM_PATH}/rocprim)
|
|
else()
|
|
SET(ROCPRIM_PATH $ENV{ROCPRIM_PATH})
|
|
endif()
|
|
|
|
# HIPCUB_PATH
|
|
if(NOT DEFINED ENV{HIPCUB_PATH})
|
|
SET(HIPCUB_PATH ${ROCM_PATH}/hipcub)
|
|
else()
|
|
SET(HIPCUB_PATH $ENV{HIPCUB_PATH})
|
|
endif()
|
|
|
|
# ROCTHRUST_PATH
|
|
if(NOT DEFINED ENV{ROCTHRUST_PATH})
|
|
SET(ROCTHRUST_PATH ${ROCM_PATH}/rocthrust)
|
|
else()
|
|
SET(ROCTHRUST_PATH $ENV{ROCTHRUST_PATH})
|
|
endif()
|
|
|
|
# ROCTRACER_PATH
|
|
if(NOT DEFINED ENV{ROCTRACER_PATH})
|
|
SET(ROCTRACER_PATH ${ROCM_PATH}/roctracer)
|
|
else()
|
|
SET(ROCTRACER_PATH $ENV{ROCTRACER_PATH})
|
|
endif()
|
|
|
|
if(NOT DEFINED ENV{PYTORCH_ROCM_ARCH})
|
|
SET(PYTORCH_ROCM_ARCH gfx803;gfx900;gfx906;gfx908)
|
|
else()
|
|
SET(PYTORCH_ROCM_ARCH $ENV{PYTORCH_ROCM_ARCH})
|
|
endif()
|
|
|
|
# Add HIP to the CMAKE Module Path
|
|
set(CMAKE_MODULE_PATH ${HIP_PATH}/cmake ${CMAKE_MODULE_PATH})
|
|
|
|
# Disable Asserts In Code (Can't use asserts on HIP stack.)
|
|
ADD_DEFINITIONS(-DNDEBUG)
|
|
|
|
macro(find_package_and_print_version PACKAGE_NAME)
|
|
find_package("${PACKAGE_NAME}" ${ARGN})
|
|
message("${PACKAGE_NAME} VERSION: ${${PACKAGE_NAME}_VERSION}")
|
|
endmacro()
|
|
|
|
# Find the HIP Package
|
|
find_package_and_print_version(HIP 1.0)
|
|
|
|
if(HIP_FOUND)
|
|
set(PYTORCH_FOUND_HIP TRUE)
|
|
|
|
message("\n***** Library versions from dpkg *****\n")
|
|
execute_process(COMMAND dpkg -l COMMAND grep rocm-dev COMMAND awk "{print $2 \" VERSION: \" $3}")
|
|
execute_process(COMMAND dpkg -l COMMAND grep rocm-libs COMMAND awk "{print $2 \" VERSION: \" $3}")
|
|
execute_process(COMMAND dpkg -l COMMAND grep hsakmt-roct COMMAND awk "{print $2 \" VERSION: \" $3}")
|
|
execute_process(COMMAND dpkg -l COMMAND grep rocr-dev COMMAND awk "{print $2 \" VERSION: \" $3}")
|
|
execute_process(COMMAND dpkg -l COMMAND grep -w hcc COMMAND awk "{print $2 \" VERSION: \" $3}")
|
|
execute_process(COMMAND dpkg -l COMMAND grep hip_base COMMAND awk "{print $2 \" VERSION: \" $3}")
|
|
execute_process(COMMAND dpkg -l COMMAND grep hip_hcc COMMAND awk "{print $2 \" VERSION: \" $3}")
|
|
|
|
message("\n***** Library versions from cmake find_package *****\n")
|
|
|
|
set(CMAKE_HCC_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
|
|
set(CMAKE_HCC_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
|
|
### Remove setting of Flags when FindHIP.CMake PR #558 is accepted.###
|
|
|
|
set(rocrand_DIR ${ROCRAND_PATH}/lib/cmake/rocrand)
|
|
set(hiprand_DIR ${HIPRAND_PATH}/lib/cmake/hiprand)
|
|
set(rocblas_DIR ${ROCBLAS_PATH}/lib/cmake/rocblas)
|
|
set(miopen_DIR ${MIOPEN_PATH}/lib/cmake/miopen)
|
|
set(rocfft_DIR ${ROCFFT_PATH}/lib/cmake/rocfft)
|
|
set(hipsparse_DIR ${HIPSPARSE_PATH}/lib/cmake/hipsparse)
|
|
set(rccl_DIR ${RCCL_PATH}/lib/cmake/rccl)
|
|
set(rocprim_DIR ${ROCPRIM_PATH}/lib/cmake/rocprim)
|
|
set(hipcub_DIR ${HIPCUB_PATH}/lib/cmake/hipcub)
|
|
set(rocthrust_DIR ${ROCTHRUST_PATH}/lib/cmake/rocthrust)
|
|
|
|
find_package_and_print_version(rocrand REQUIRED)
|
|
find_package_and_print_version(hiprand REQUIRED)
|
|
find_package_and_print_version(rocblas REQUIRED)
|
|
find_package_and_print_version(miopen REQUIRED)
|
|
find_package_and_print_version(rocfft REQUIRED)
|
|
find_package_and_print_version(hipsparse REQUIRED)
|
|
find_package_and_print_version(rccl)
|
|
find_package_and_print_version(rocprim REQUIRED)
|
|
find_package_and_print_version(hipcub REQUIRED)
|
|
find_package_and_print_version(rocthrust REQUIRED)
|
|
|
|
# TODO: hip_hcc has an interface include flag "-hc" which is only
|
|
# recognizable by hcc, but not gcc and clang. Right now in our
|
|
# setup, hcc is only used for linking, but it should be used to
|
|
# compile the *_hip.cc files as well.
|
|
FIND_LIBRARY(PYTORCH_HIP_HCC_LIBRARIES hip_hcc HINTS ${HIP_PATH}/lib)
|
|
# TODO: miopen_LIBRARIES should return fullpath to the library file,
|
|
# however currently it's just the lib name
|
|
FIND_LIBRARY(PYTORCH_MIOPEN_LIBRARIES ${miopen_LIBRARIES} HINTS ${MIOPEN_PATH}/lib)
|
|
# TODO: rccl_LIBRARIES should return fullpath to the library file,
|
|
# however currently it's just the lib name
|
|
FIND_LIBRARY(PYTORCH_RCCL_LIBRARIES ${rccl_LIBRARIES} HINTS ${RCCL_PATH}/lib)
|
|
# hiprtc is part of HIP
|
|
FIND_LIBRARY(ROCM_HIPRTC_LIB hiprtc HINTS ${HIP_PATH}/lib)
|
|
# roctx is part of roctracer
|
|
FIND_LIBRARY(ROCM_ROCTX_LIB roctx64 HINTS ${ROCTRACER_PATH}/lib)
|
|
set(roctracer_INCLUDE_DIRS ${ROCTRACER_PATH}/include)
|
|
|
|
# Necessary includes for building PyTorch since we include HIP headers that depend on hcc/hsa headers.
|
|
set(hcc_INCLUDE_DIRS ${HCC_PATH}/include)
|
|
set(hsa_INCLUDE_DIRS ${HSA_PATH}/include)
|
|
|
|
endif()
|