From bba5e08316639d5a1943992d97ac75900f925378 Mon Sep 17 00:00:00 2001 From: Qi Li Date: Mon, 9 May 2022 10:14:45 +0800 Subject: [PATCH] [ROCm] fix rocksdb on ROCm version 40020496, test=develop (#42563) --- CMakeLists.txt | 5 +++++ cmake/hip.cmake | 27 +++++++++++++++++++++++++++ cmake/inference_lib.cmake | 2 +- cmake/third_party.cmake | 2 +- 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ff49ba164dd..51c0ef35f1e 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -395,6 +395,11 @@ if(WITH_DISTRIBUTE) MESSAGE(WARNING "Disable WITH_PSCORE when compiling with NPU. Force WITH_PSCORE=OFF.") set(WITH_PSCORE OFF CACHE BOOL "Disable WITH_PSCORE when compiling with NPU" FORCE) endif() + if(WITH_ROCM AND HIP_VERSION LESS_EQUAL 40020496) + # TODO(qili93): third-party rocksdb throw Illegal instruction with HIP version 40020496 + MESSAGE(WARNING "Disable WITH_PSCORE when HIP_VERSION is less than or equal 40020496. Force WITH_PSCORE=OFF.") + set(WITH_PSCORE OFF CACHE BOOL "Disable WITH_PSCORE when HIP_VERSION is less than or equal 40020496" FORCE) + endif() endif() include(third_party) # download, build, install third_party, Contains about 20+ dependencies diff --git a/cmake/hip.cmake b/cmake/hip.cmake index a144a3b3244..14cb9e6f6be 100644 --- a/cmake/hip.cmake +++ b/cmake/hip.cmake @@ -18,6 +18,33 @@ include_directories(${ROCM_PATH}/include) message(STATUS "HIP version: ${HIP_VERSION}") message(STATUS "HIP_CLANG_PATH: ${HIP_CLANG_PATH}") +macro(find_hip_version hip_header_file) + file(READ ${hip_header_file} HIP_VERSION_FILE_CONTENTS) + + string(REGEX MATCH "define HIP_VERSION_MAJOR +([0-9]+)" HIP_MAJOR_VERSION + "${HIP_VERSION_FILE_CONTENTS}") + string(REGEX REPLACE "define HIP_VERSION_MAJOR +([0-9]+)" "\\1" + HIP_MAJOR_VERSION "${HIP_MAJOR_VERSION}") + string(REGEX MATCH "define HIP_VERSION_MINOR +([0-9]+)" HIP_MINOR_VERSION + "${HIP_VERSION_FILE_CONTENTS}") + string(REGEX REPLACE "define HIP_VERSION_MINOR +([0-9]+)" "\\1" + HIP_MINOR_VERSION "${HIP_MINOR_VERSION}") + string(REGEX MATCH "define HIP_VERSION_PATCH +([0-9]+)" HIP_PATCH_VERSION + "${HIP_VERSION_FILE_CONTENTS}") + string(REGEX REPLACE "define HIP_VERSION_PATCH +([0-9]+)" "\\1" + HIP_PATCH_VERSION "${HIP_PATCH_VERSION}") + + if(NOT HIP_MAJOR_VERSION) + set(HIP_VERSION "???") + message(WARNING "Cannot find HIP version in ${HIP_PATH}/include/hip/hip_version.h") + else() + math(EXPR HIP_VERSION "${HIP_MAJOR_VERSION} * 10000000 + ${HIP_MINOR_VERSION} * 100000 + ${HIP_PATCH_VERSION}") + message(STATUS "Current HIP header is ${HIP_PATH}/include/hip/hip_version.h " + "Current HIP version is v${HIP_MAJOR_VERSION}.${HIP_MINOR_VERSION}.${HIP_PATCH_VERSION}. ") + endif() +endmacro() +find_hip_version(${HIP_PATH}/include/hip/hip_version.h) + macro(find_package_and_include PACKAGE_NAME) find_package("${PACKAGE_NAME}" REQUIRED) include_directories("${ROCM_PATH}/${PACKAGE_NAME}/include") diff --git a/cmake/inference_lib.cmake b/cmake/inference_lib.cmake index af2be77d0a6..a52047e1616 100644 --- a/cmake/inference_lib.cmake +++ b/cmake/inference_lib.cmake @@ -416,7 +416,7 @@ function(version version_file) endif() if(WITH_ROCM) file(APPEND ${version_file} - "HIP version: ${HIP_VERSION}\n" + "HIP version: v${HIP_MAJOR_VERSION}.${HIP_MINOR_VERSION}\n" "MIOpen version: v${MIOPEN_MAJOR_VERSION}.${MIOPEN_MINOR_VERSION}\n") endif() if(WITH_ASCEND_CL) diff --git a/cmake/third_party.cmake b/cmake/third_party.cmake index c8ef4ad16ea..eb6fa4ee13c 100755 --- a/cmake/third_party.cmake +++ b/cmake/third_party.cmake @@ -357,7 +357,7 @@ if (WITH_PSCORE) include(external/libmct) # download, build, install libmct list(APPEND third_party_deps extern_libmct) - include(external/rocksdb) # download, build, install libmct + include(external/rocksdb) # download, build, install rocksdb list(APPEND third_party_deps extern_rocksdb) endif() -- GitLab