|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- if(NOT DEFINED HIP_PATH)
- if(NOT DEFINED ENV{HIP_PATH})
- set(HIP_PATH
- "/opt/rocm/hip"
- CACHE PATH "Path to which HIP has been installed")
- else()
- set(HIP_PATH
- $ENV{HIP_PATH}
- CACHE PATH "Path to which HIP has been installed")
- endif()
- endif()
- set(CMAKE_MODULE_PATH "${HIP_PATH}/cmake" ${CMAKE_MODULE_PATH})
- find_package(HIP QUIET)
- if(HIP_FOUND)
- message(STATUS "Found HIP: " ${HIP_VERSION})
- else()
- message(
- FATAL_ERROR
- "Could not find HIP. Ensure that HIP is either installed in /opt/rocm/hip or the variable HIP_PATH is set to point to the right location."
- )
- endif()
-
- if(${HIP_VERSION} VERSION_LESS 3.0)
- message(FATAL_ERROR "ROCM version needed 3. Please update ROCM.")
- endif()
-
- macro(hipconfig_get_option variable option)
- if(NOT DEFINED ${variable})
- execute_process(COMMAND ${HIP_HIPCONFIG_EXECUTABLE} ${option}
- OUTPUT_VARIABLE ${variable})
- endif()
- endmacro()
-
- hipconfig_get_option(HIP_COMPILER "--compiler")
- hipconfig_get_option(HIP_CPP_CONFIG "--cpp_config")
-
- separate_arguments(HIP_CPP_CONFIG)
-
- foreach(hip_config_item ${HIP_CPP_CONFIG})
- foreach(macro_name "__HIP_PLATFORM_HCC__" "__HIP_ROCclr__")
- if(${hip_config_item} STREQUAL "-D${macro_name}=")
- set(HIP_CPP_DEFINE "${HIP_CPP_DEFINE}#define ${macro_name}\n")
- set(HIP_CPP_UNDEFINE
- "${HIP_CPP_UNDEFINE}\
- #ifdef ${macro_name}\n#undef ${macro_name}\n\
- #else\n#error\n\
- #endif\n")
- elseif(${hip_config_item} STREQUAL "-D${macro_name}")
- set(HIP_CPP_DEFINE "${HIP_CPP_DEFINE}#define ${macro_name} 1\n")
- set(HIP_CPP_UNDEFINE
- "${HIP_CPP_UNDEFINE}\
- #ifdef ${macro_name}\n#undef ${macro_name}\n\
- #else\n#error\n\
- #endif\n")
- endif()
- endforeach()
- endforeach()
-
- message(STATUS "Using HIP compiler ${HIP_COMPILER}")
-
- if(${HIP_COMPILER} STREQUAL "hcc")
- set(MGE_ROCM_LIBS hip_hcc)
- message(
- WARNING "hcc is not well supported, please modify link.txt to link with hipcc")
- elseif(${HIP_COMPILER} STREQUAL "clang")
- set(MGE_ROCM_LIBS amdhip64)
- endif()
-
- list(APPEND MGE_ROCM_LIBS amdocl64 MIOpen rocblas rocrand)
-
- set(HIP_INCLUDE_DIR ${HIP_ROOT_DIR}/../include)
- set(HIP_LIBRARY_DIR ${HIP_ROOT_DIR}/../lib)
-
- function(find_rocm_library name dirname include library)
- find_path(
- ${name}_LIBRARY_DIR
- NAMES ${library}
- HINTS "${${name}_ROOT_DIR}" "${HIP_ROOT_DIR}/../${dirname}"
- PATH_SUFFIXES lib lib/x86_64
- DOC "Path to ${name} library directory")
-
- if(${${name}_LIBRARY_DIR} MATCHES "NOTFOUND$")
- message(FATAL_ERROR "Can not find ${name} library")
- endif()
-
- find_path(
- ${name}_INCLUDE_DIR
- NAMES ${include}
- HINTS "${${name}_ROOT_DIR}" "${HIP_ROOT_DIR}/../${dirname}"
- PATH_SUFFIXES include
- DOC "Path to ${name} include directory")
-
- if(${name}_INCLUDE_DIR MATCHES "NOTFOUND$")
- message(FATAL_ERROR "Can not find ${name} include")
- endif()
- message(DEBUG "Found lib ${${name}_LIBRARY_DIR}, include ${${name}_INCLUDE_DIR}")
- endfunction()
-
- find_rocm_library(MIOPEN miopen miopen libMIOpen.so)
- find_rocm_library(ROCBLAS rocblas rocblas.h librocblas.so)
- find_rocm_library(ROCRAND rocrand rocrand.h librocrand.so)
- find_rocm_library(AMDOCL opencl CL libamdocl64.so)
|