From 88304c15e60481e77f3a280bae1b6a20108e2764 Mon Sep 17 00:00:00 2001 From: "Yaxun (Sam) Liu" Date: Thu, 9 Apr 2020 16:56:36 -0400 Subject: [PATCH] Fix MIOpen build failure This is charrypick of 9ead991784bd4ae793b8823d6b55024bb9737df4 and https://github.com/ROCm-Developer-Tools/HIP/pull/2009 Fix cmake config file Removed cmake target files under packaging directory. Merged cmake config .in files for HIP-Clang and HCC as one. Use cmake generated target files in both install and packaging. This makes cmake config file consistent for make install and make package. Let device side malloc/free return nullptr and trap Change-Id: I448f3ea2d4934648089bad371debc203f895cba6 --- CMakeLists.txt | 25 ++-- hip-config-clang.cmake.in | 114 ---------------- hip-config-hcc.cmake.in | 68 ---------- hip-config.cmake.in | 168 ++++++++++++++++++++++++ include/hip/hcc_detail/hip_memory.h | 2 +- include/hip/hcc_detail/hip_runtime.h | 11 +- packaging/hip-hcc.txt | 2 +- packaging/hip-targets-release.cmake | 58 -------- packaging/hip-targets.cmake | 158 ---------------------- packaging/hip-vdi.txt | 3 +- tests/src/deviceLib/hipDeviceMalloc.cpp | 4 +- vdi/CMakeLists.txt | 5 +- 12 files changed, 195 insertions(+), 423 deletions(-) delete mode 100644 hip-config-clang.cmake.in delete mode 100644 hip-config-hcc.cmake.in create mode 100644 hip-config.cmake.in delete mode 100644 packaging/hip-targets-release.cmake delete mode 100644 packaging/hip-targets.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index c67ed29203..f0213ca9c9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -454,27 +454,20 @@ endif() ############################# if(HIP_PLATFORM STREQUAL "hcc") install(TARGETS hip_hcc_static hip_hcc host device EXPORT hip-targets DESTINATION ${LIB_INSTALL_DIR}) - install(EXPORT hip-targets DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR} NAMESPACE hip::) + # ToDo: The cmake generated target files are not working. We have to install manually created ones + # for now. Should fix this and remove target files under packaging. + #install(EXPORT hip-targets DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR} NAMESPACE hip::) elseif( HIP_PLATFORM STREQUAL "vdi") # install(TARGETS hip_on_vdi host device EXPORT hip-targets DESTINATION ${LIB_INSTALL_DIR}) endif() include(CMakePackageConfigHelpers) - if(HIP_COMPILER STREQUAL "hcc") - configure_package_config_file( - hip-config-hcc.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/hip-config.cmake - INSTALL_DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR} - PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR BIN_INSTALL_DIR - ) - elseif(HIP_COMPILER STREQUAL "clang") - configure_package_config_file( - hip-config-clang.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/hip-config.cmake - INSTALL_DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR} - PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR BIN_INSTALL_DIR - ) - endif() + configure_package_config_file( + hip-config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/hip-config.cmake + INSTALL_DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR} + PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR BIN_INSTALL_DIR + ) write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/hip-config-version.cmake diff --git a/hip-config-clang.cmake.in b/hip-config-clang.cmake.in deleted file mode 100644 index 7344458ffd..0000000000 --- a/hip-config-clang.cmake.in +++ /dev/null @@ -1,114 +0,0 @@ -@PACKAGE_INIT@ - -include(CMakeFindDependencyMacro OPTIONAL RESULT_VARIABLE _CMakeFindDependencyMacro_FOUND) -if (NOT _CMakeFindDependencyMacro_FOUND) - macro(find_dependency dep) - if (NOT ${dep}_FOUND) - set(cmake_fd_version) - if (${ARGC} GREATER 1) - set(cmake_fd_version ${ARGV1}) - endif() - set(cmake_fd_exact_arg) - if(${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION_EXACT) - set(cmake_fd_exact_arg EXACT) - endif() - set(cmake_fd_quiet_arg) - if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY) - set(cmake_fd_quiet_arg QUIET) - endif() - set(cmake_fd_required_arg) - if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED) - set(cmake_fd_required_arg REQUIRED) - endif() - find_package(${dep} ${cmake_fd_version} - ${cmake_fd_exact_arg} - ${cmake_fd_quiet_arg} - ${cmake_fd_required_arg} - ) - string(TOUPPER ${dep} cmake_dep_upper) - if (NOT ${dep}_FOUND AND NOT ${cmake_dep_upper}_FOUND) - set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "${CMAKE_FIND_PACKAGE_NAME} could not be found because dependency ${dep} could not be found.") - set(${CMAKE_FIND_PACKAGE_NAME}_FOUND False) - return() - endif() - set(cmake_fd_version) - set(cmake_fd_required_arg) - set(cmake_fd_quiet_arg) - set(cmake_fd_exact_arg) - endif() - endmacro() -endif() - -set(HIP_COMPILER "@HIP_COMPILER@") -set(HIP_RUNTIME "@HIP_RUNTIME@") - -set_and_check( hip_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@" ) -set_and_check( hip_INCLUDE_DIRS "${hip_INCLUDE_DIR}" ) -set_and_check( hip_LIB_INSTALL_DIR "@PACKAGE_LIB_INSTALL_DIR@" ) -set_and_check( hip_BIN_INSTALL_DIR "@PACKAGE_BIN_INSTALL_DIR@" ) - -set_and_check(hip_HIPCC_EXECUTABLE "${hip_BIN_INSTALL_DIR}/hipcc") -set_and_check(hip_HIPCONFIG_EXECUTABLE "${hip_BIN_INSTALL_DIR}/hipconfig") - -if(CMAKE_CXX_COMPILER MATCHES ".*hipcc") - execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version - OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE HIP_CLANG_CXX_COMPILER_VERSION_OUTPUT) - if(HIP_CLANG_CXX_COMPILER_VERSION_OUTPUT MATCHES "InstalledDir:[\t\r\n][\t\r\n]*([^\t\r\n])") - set(HIP_CLANG_ROOT ${CMAKE_MATCH_1}) - else() - set(HIP_CLANG_ROOT /opt/rocm/llvm) - endif() -else() - get_filename_component(HIP_CLANG_ROOT "${CMAKE_CXX_COMPILER}" PATH) - get_filename_component(HIP_CLANG_ROOT "${HIP_CLANG_ROOT}" PATH) -endif() -file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS ${HIP_CLANG_ROOT}/lib/clang/*/include) -find_path(HIP_CLANG_INCLUDE_PATH stddef.h - HINTS - ${HIP_CLANG_INCLUDE_SEARCH_PATHS} - NO_DEFAULT_PATH) -find_dependency(amd_comgr) -find_dependency(AMDDeviceLibs) -set(AMDGPU_TARGETS "gfx900;gfx906" CACHE STRING "AMD GPU targets to compile for") -set(GPU_TARGETS "${AMDGPU_TARGETS}" CACHE STRING "GPU targets to compile for") - -include( "${CMAKE_CURRENT_LIST_DIR}/hip-targets.cmake" ) - -set_property(TARGET hip::device APPEND PROPERTY - INTERFACE_COMPILE_OPTIONS -x hip --hip-device-lib-path=${AMD_DEVICE_LIBS_PREFIX}/lib -) - -set_property(TARGET hip::device APPEND PROPERTY - INTERFACE_LINK_LIBRARIES --hip-device-lib-path=${AMD_DEVICE_LIBS_PREFIX}/lib --hip-link -) - -set_property(TARGET hip::device APPEND PROPERTY - INTERFACE_INCLUDE_DIRECTORIES "${HIP_CLANG_INCLUDE_PATH}" -) - -set_property(TARGET hip::device APPEND PROPERTY - INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${HIP_CLANG_INCLUDE_PATH}" -) - -foreach(GPU_TARGET ${GPU_TARGETS}) - set_property(TARGET hip::device APPEND PROPERTY - INTERFACE_COMPILE_OPTIONS "--cuda-gpu-arch=${GPU_TARGET}" - ) - set_property(TARGET hip::device APPEND PROPERTY - INTERFACE_LINK_LIBRARIES "--cuda-gpu-arch=${GPU_TARGET}" - ) -endforeach() - -set( hip_LIBRARIES hip::host hip::device) -set( hip_LIBRARY ${hip_LIBRARIES}) - -set(HIP_INCLUDE_DIR ${hip_INCLUDE_DIR}) -set(HIP_INCLUDE_DIRS ${hip_INCLUDE_DIRS}) -set(HIP_LIB_INSTALL_DIR ${hip_LIB_INSTALL_DIR}) -set(HIP_BIN_INSTALL_DIR ${hip_BIN_INSTALL_DIR}) -set(HIP_LIBRARIES ${hip_LIBRARIES}) -set(HIP_LIBRARY ${hip_LIBRARY}) -set(HIP_HIPCC_EXECUTABLE ${hip_HIPCC_EXECUTABLE}) -set(HIP_HIPCONFIG_EXECUTABLE ${hip_HIPCONFIG_EXECUTABLE}) - diff --git a/hip-config-hcc.cmake.in b/hip-config-hcc.cmake.in deleted file mode 100644 index c0ffc6e2af..0000000000 --- a/hip-config-hcc.cmake.in +++ /dev/null @@ -1,68 +0,0 @@ -@PACKAGE_INIT@ - -include(CMakeFindDependencyMacro OPTIONAL RESULT_VARIABLE _CMakeFindDependencyMacro_FOUND) -if (NOT _CMakeFindDependencyMacro_FOUND) - macro(find_dependency dep) - if (NOT ${dep}_FOUND) - set(cmake_fd_version) - if (${ARGC} GREATER 1) - set(cmake_fd_version ${ARGV1}) - endif() - set(cmake_fd_exact_arg) - if(${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION_EXACT) - set(cmake_fd_exact_arg EXACT) - endif() - set(cmake_fd_quiet_arg) - if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY) - set(cmake_fd_quiet_arg QUIET) - endif() - set(cmake_fd_required_arg) - if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED) - set(cmake_fd_required_arg REQUIRED) - endif() - find_package(${dep} ${cmake_fd_version} - ${cmake_fd_exact_arg} - ${cmake_fd_quiet_arg} - ${cmake_fd_required_arg} - ) - string(TOUPPER ${dep} cmake_dep_upper) - if (NOT ${dep}_FOUND AND NOT ${cmake_dep_upper}_FOUND) - set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "${CMAKE_FIND_PACKAGE_NAME} could not be found because dependency ${dep} could not be found.") - set(${CMAKE_FIND_PACKAGE_NAME}_FOUND False) - return() - endif() - set(cmake_fd_version) - set(cmake_fd_required_arg) - set(cmake_fd_quiet_arg) - set(cmake_fd_exact_arg) - endif() - endmacro() -endif() - -set(HIP_COMPILER "@HIP_COMPILER@") -set(HIP_RUNTIME "@HIP_RUNTIME@") - -set_and_check( hip_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@" ) -set_and_check( hip_INCLUDE_DIRS "${hip_INCLUDE_DIR}" ) -set_and_check( hip_LIB_INSTALL_DIR "@PACKAGE_LIB_INSTALL_DIR@" ) -set_and_check( hip_BIN_INSTALL_DIR "@PACKAGE_BIN_INSTALL_DIR@" ) - -set_and_check(hip_HIPCC_EXECUTABLE "${hip_BIN_INSTALL_DIR}/hipcc") -set_and_check(hip_HIPCONFIG_EXECUTABLE "${hip_BIN_INSTALL_DIR}/hipconfig") - -find_dependency(hcc) -find_dependency(amd_comgr) -include( "${CMAKE_CURRENT_LIST_DIR}/hip-targets.cmake" ) - -set( hip_LIBRARIES hip::host hip::device) -set( hip_LIBRARY ${hip_LIBRARIES}) - -set(HIP_INCLUDE_DIR ${hip_INCLUDE_DIR}) -set(HIP_INCLUDE_DIRS ${hip_INCLUDE_DIRS}) -set(HIP_LIB_INSTALL_DIR ${hip_LIB_INSTALL_DIR}) -set(HIP_BIN_INSTALL_DIR ${hip_BIN_INSTALL_DIR}) -set(HIP_LIBRARIES ${hip_LIBRARIES}) -set(HIP_LIBRARY ${hip_LIBRARY}) -set(HIP_HIPCC_EXECUTABLE ${hip_HIPCC_EXECUTABLE}) -set(HIP_HIPCONFIG_EXECUTABLE ${hip_HIPCONFIG_EXECUTABLE}) - diff --git a/hip-config.cmake.in b/hip-config.cmake.in new file mode 100644 index 0000000000..baa7c1607f --- /dev/null +++ b/hip-config.cmake.in @@ -0,0 +1,168 @@ +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro OPTIONAL RESULT_VARIABLE _CMakeFindDependencyMacro_FOUND) +if (NOT _CMakeFindDependencyMacro_FOUND) + macro(find_dependency dep) + if (NOT ${dep}_FOUND) + set(cmake_fd_version) + if (${ARGC} GREATER 1) + set(cmake_fd_version ${ARGV1}) + endif() + set(cmake_fd_exact_arg) + if(${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION_EXACT) + set(cmake_fd_exact_arg EXACT) + endif() + set(cmake_fd_quiet_arg) + if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY) + set(cmake_fd_quiet_arg QUIET) + endif() + set(cmake_fd_required_arg) + if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED) + set(cmake_fd_required_arg REQUIRED) + endif() + find_package(${dep} ${cmake_fd_version} + ${cmake_fd_exact_arg} + ${cmake_fd_quiet_arg} + ${cmake_fd_required_arg} + ) + string(TOUPPER ${dep} cmake_dep_upper) + if (NOT ${dep}_FOUND AND NOT ${cmake_dep_upper}_FOUND) + set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "${CMAKE_FIND_PACKAGE_NAME} could not be found because dependency ${dep} could not be found.") + set(${CMAKE_FIND_PACKAGE_NAME}_FOUND False) + return() + endif() + set(cmake_fd_version) + set(cmake_fd_required_arg) + set(cmake_fd_quiet_arg) + set(cmake_fd_exact_arg) + endif() + endmacro() +endif() + +set(HIP_COMPILER "@HIP_COMPILER@") +set(HIP_RUNTIME "@HIP_RUNTIME@") + +set_and_check( hip_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@" ) +set_and_check( hip_INCLUDE_DIRS "${hip_INCLUDE_DIR}" ) +set_and_check( hip_LIB_INSTALL_DIR "@PACKAGE_LIB_INSTALL_DIR@" ) +set_and_check( hip_BIN_INSTALL_DIR "@PACKAGE_BIN_INSTALL_DIR@" ) + +set_and_check(hip_HIPCC_EXECUTABLE "${hip_BIN_INSTALL_DIR}/hipcc") +set_and_check(hip_HIPCONFIG_EXECUTABLE "${hip_BIN_INSTALL_DIR}/hipconfig") + +if(HIP_COMPILER STREQUAL "clang") + if(CMAKE_CXX_COMPILER MATCHES ".*hipcc") + execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE HIP_CLANG_CXX_COMPILER_VERSION_OUTPUT) + if(HIP_CLANG_CXX_COMPILER_VERSION_OUTPUT MATCHES "InstalledDir:[\t\r\n][\t\r\n]*([^\t\r\n])") + set(HIP_CLANG_ROOT ${CMAKE_MATCH_1}) + else() + set(HIP_CLANG_ROOT /opt/rocm/llvm) + endif() + else() + get_filename_component(HIP_CLANG_ROOT "${CMAKE_CXX_COMPILER}" PATH) + get_filename_component(HIP_CLANG_ROOT "${HIP_CLANG_ROOT}" PATH) + endif() + file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS ${HIP_CLANG_ROOT}/lib/clang/*/include) + find_path(HIP_CLANG_INCLUDE_PATH stddef.h + HINTS + ${HIP_CLANG_INCLUDE_SEARCH_PATHS} + NO_DEFAULT_PATH) + find_dependency(AMDDeviceLibs) + set(AMDGPU_TARGETS "gfx900;gfx906" CACHE STRING "AMD GPU targets to compile for") + set(GPU_TARGETS "${AMDGPU_TARGETS}" CACHE STRING "GPU targets to compile for") +else() + find_dependency(hcc) +endif() + +find_dependency(amd_comgr) + +include( "${CMAKE_CURRENT_LIST_DIR}/hip-targets.cmake" ) + +#If HIP isnot installed under ROCm, need this to find HSA assuming HSA is under ROCm +if( DEFINED ENV{ROCM_PATH} ) + set(ROCM_PATH "$ENV{ROCM_PATH}") +endif() + +#get_filename_component cannot resolve the symlinks if called from /opt/rocm/lib/hip +#and do three level up again +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_DIR}" REALPATH) +get_filename_component(_IMPORT_PREFIX "${_DIR}/../../../" REALPATH) + +#if HSA is not under ROCm then provide CMAKE_PREFIX_PATH= +find_path(HSA_HEADER hsa/hsa.h + PATHS + "${_IMPORT_PREFIX}/../include" + /opt/rocm/include +) + +if (HSA_HEADER-NOTFOUND) + message (FATAL_ERROR "HSA header not found! ROCM_PATH environment not set") +endif() + +if(HIP_RUNTIME MATCHES "VDI") + set_target_properties(hip::amdhip64 PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "__HIP_VDI__=1" + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" + ) + set_target_properties(hip::device PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "__HIP_VDI__=1" + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" + ) +else() + set_target_properties(hip::hip_hcc_static PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}") + + set_target_properties(hip::hip_hcc PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" + ) + set_target_properties(hip::device PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" + ) +endif() + +if(HIP_COMPILER STREQUAL "clang") + set_property(TARGET hip::device APPEND PROPERTY + INTERFACE_COMPILE_OPTIONS -x hip --hip-device-lib-path=${AMD_DEVICE_LIBS_PREFIX}/lib + ) + + set_property(TARGET hip::device APPEND PROPERTY + INTERFACE_LINK_LIBRARIES --hip-device-lib-path=${AMD_DEVICE_LIBS_PREFIX}/lib --hip-link + ) + + set_property(TARGET hip::device APPEND PROPERTY + INTERFACE_INCLUDE_DIRECTORIES "${HIP_CLANG_INCLUDE_PATH}/.." + ) + + set_property(TARGET hip::device APPEND PROPERTY + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${HIP_CLANG_INCLUDE_PATH}/.." + ) + + foreach(GPU_TARGET ${GPU_TARGETS}) + set_property(TARGET hip::device APPEND PROPERTY + INTERFACE_COMPILE_OPTIONS "--cuda-gpu-arch=${GPU_TARGET}" + ) + set_property(TARGET hip::device APPEND PROPERTY + INTERFACE_LINK_LIBRARIES "--cuda-gpu-arch=${GPU_TARGET}" + ) + endforeach() +endif() + +set( hip_LIBRARIES hip::host hip::device) +set( hip_LIBRARY ${hip_LIBRARIES}) + +set(HIP_INCLUDE_DIR ${hip_INCLUDE_DIR}) +set(HIP_INCLUDE_DIRS ${hip_INCLUDE_DIRS}) +set(HIP_LIB_INSTALL_DIR ${hip_LIB_INSTALL_DIR}) +set(HIP_BIN_INSTALL_DIR ${hip_BIN_INSTALL_DIR}) +set(HIP_LIBRARIES ${hip_LIBRARIES}) +set(HIP_LIBRARY ${hip_LIBRARY}) +set(HIP_HIPCC_EXECUTABLE ${hip_HIPCC_EXECUTABLE}) +set(HIP_HIPCONFIG_EXECUTABLE ${hip_HIPCONFIG_EXECUTABLE}) + diff --git a/include/hip/hcc_detail/hip_memory.h b/include/hip/hcc_detail/hip_memory.h index 866b9e879e..7a6958675b 100644 --- a/include/hip/hcc_detail/hip_memory.h +++ b/include/hip/hcc_detail/hip_memory.h @@ -27,7 +27,7 @@ THE SOFTWARE. // HIP heap is implemented as a global array with fixed size. Users may define // __HIP_SIZE_OF_PAGE and __HIP_NUM_PAGES to have a larger heap. -#if __HCC__ || __HIP__ +#if (__HCC__ || __HIP__) && __HIP_ENABLE_MALLOC__ // Size of page in bytes. #ifndef __HIP_SIZE_OF_PAGE diff --git a/include/hip/hcc_detail/hip_runtime.h b/include/hip/hcc_detail/hip_runtime.h index fdb61e70d3..4c1f5e9839 100644 --- a/include/hip/hcc_detail/hip_runtime.h +++ b/include/hip/hcc_detail/hip_runtime.h @@ -44,6 +44,11 @@ THE SOFTWARE. #include #endif //__cplusplus +// __hip_malloc is not working. Disable it by default. +#ifndef __HIP_ENABLE_MALLOC__ +#define __HIP_ENABLE_MALLOC__ 0 +#endif + #if __HCC_OR_HIP_CLANG__ #if __HIP__ @@ -308,11 +313,15 @@ static constexpr Coordinates threadIdx{}; #endif // defined __HCC__ #if __HCC_OR_HIP_CLANG__ +#if __HIP_ENABLE_MALLOC__ extern "C" __device__ void* __hip_malloc(size_t); extern "C" __device__ void* __hip_free(void* ptr); - static inline __device__ void* malloc(size_t size) { return __hip_malloc(size); } static inline __device__ void* free(void* ptr) { return __hip_free(ptr); } +#else +static inline __device__ void* malloc(size_t size) { __builtin_trap(); return nullptr; } +static inline __device__ void* free(void* ptr) { __builtin_trap(); return nullptr; } +#endif #endif //__HCC_OR_HIP_CLANG__ diff --git a/packaging/hip-hcc.txt b/packaging/hip-hcc.txt index 6a04ebffbd..d084e8d966 100644 --- a/packaging/hip-hcc.txt +++ b/packaging/hip-hcc.txt @@ -12,7 +12,7 @@ if(NOT @HIP_COMPILER@ STREQUAL "clang") endif() install(FILES @PROJECT_BINARY_DIR@/.hipInfo DESTINATION lib) install(FILES @PROJECT_BINARY_DIR@/hip-config.cmake @PROJECT_BINARY_DIR@/hip-config-version.cmake DESTINATION lib/cmake/hip) -install(FILES @hip_SOURCE_DIR@/packaging/hip-targets.cmake @hip_SOURCE_DIR@/packaging/hip-targets-release.cmake DESTINATION lib/cmake/hip) +install(FILES @CONFIG_PACKAGE_INSTALL_DIR@/hip-targets.cmake @CONFIG_PACKAGE_INSTALL_DIR@/hip-targets-release.cmake DESTINATION lib/cmake/hip) ############################# # Packaging steps diff --git a/packaging/hip-targets-release.cmake b/packaging/hip-targets-release.cmake deleted file mode 100644 index 90fd961184..0000000000 --- a/packaging/hip-targets-release.cmake +++ /dev/null @@ -1,58 +0,0 @@ -#---------------------------------------------------------------- -# Generated CMake target import file for configuration "Release". -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -#get_filename_component cannot resolve the symlinks if called from /opt/rocm/lib/hip -#and do three level up again -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_DIR}" REALPATH) -get_filename_component(_IMPORT_PREFIX "${_DIR}/../../../" REALPATH) - -if(NOT HIP_RUNTIME MATCHES "VDI") -# Import target "hip::hip_hcc_static" for configuration "Release" - set_property(TARGET hip::hip_hcc_static APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) - if(HIP_COMPILER STREQUAL "clang") - set_target_properties(hip::hip_hcc_static PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" - IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libhip_hcc_static.a" - ) - else() - set_target_properties(hip::hip_hcc_static PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" - IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "hc_am" - IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libhip_hcc_static.a" - ) - endif() - list(APPEND _IMPORT_CHECK_TARGETS hip::hip_hcc_static ) - list(APPEND _IMPORT_CHECK_FILES_FOR_hip::hip_hcc_static "${_IMPORT_PREFIX}/lib/libhip_hcc_static.a" ) - - # Import target "hip::hip_hcc" for configuration "Release" - set_property(TARGET hip::hip_hcc APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) - if(HIP_COMPILER STREQUAL "clang") - set_target_properties(hip::hip_hcc PROPERTIES - IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libhip_hcc.so" - IMPORTED_SONAME_RELEASE "libhip_hcc.so") - else() - set_target_properties(hip::hip_hcc PROPERTIES - IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "hcc::hccrt;hcc::hc_am" - IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libhip_hcc.so" - IMPORTED_SONAME_RELEASE "libhip_hcc.so") - endif() - list(APPEND _IMPORT_CHECK_TARGETS hip::hip_hcc ) - list(APPEND _IMPORT_CHECK_FILES_FOR_hip::hip_hcc "${_IMPORT_PREFIX}/lib/libhip_hcc.so" ) - -else() - - set_property(TARGET hip::amdhip64 APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) - set_target_properties(hip::amdhip64 PROPERTIES - IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libamdhip64.so" - IMPORTED_SONAME_RELEASE "libamdhip64.so") - list(APPEND _IMPORT_CHECK_TARGETS hip::amdhip64) - list(APPEND _IMPORT_CHECK_FILES_FOR_hip::amdhip64 "${_IMPORT_PREFIX}/lib/libamdhip64.so" ) - -endif() - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) diff --git a/packaging/hip-targets.cmake b/packaging/hip-targets.cmake deleted file mode 100644 index 6f6957f4d6..0000000000 --- a/packaging/hip-targets.cmake +++ /dev/null @@ -1,158 +0,0 @@ -# Generated by CMake 3.5.1 - -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) - message(FATAL_ERROR "CMake >= 2.6.0 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.6) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -if(HIP_RUNTIME MATCHES "VDI") - foreach(_expectedTarget hip::amdhip64 hip::host hip::device) -else() - foreach(_expectedTarget hip:hip_hcc_static hip::hip_hcc hip::host hip::device) -endif() - list(APPEND _expectedTargets ${_expectedTarget}) - if(NOT TARGET ${_expectedTarget}) - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - endif() -endforeach() -if("${_targetsDefined}" STREQUAL "${_expectedTargets}") - set(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - -#If HIP isnot installed under ROCm, need this to find HSA assuming HSA is under ROCm -if( DEFINED ENV{ROCM_PATH} ) - set(ROCM_PATH "$ENV{ROCM_PATH}") -endif() - -#get_filename_component cannot resolve the symlinks if called from /opt/rocm/lib/hip -#and do three level up again -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_DIR}" REALPATH) -get_filename_component(_IMPORT_PREFIX "${_DIR}/../../../" REALPATH) - -# Create imported target hip::hip_hcc_static -if( NOT HIP_RUNTIME MATCHES "VDI") - add_library(hip::hip_hcc_static STATIC IMPORTED) -endif() - -#if HSA is not under ROCm then provide CMAKE_PREFIX_PATH= -find_path(HSA_HEADER hsa/hsa.h - PATHS - "${ROCM_PATH}/include" - #Assuming HIP is installed under ROCm - "${_IMPORT_PREFIX}/../include" - /opt/rocm/include -) - -if (HSA_HEADER-NOTFOUND) - message (FATAL_ERROR "HSA header not found! ROCM_PATH environment not set") -endif() -if(HIP_RUNTIME MATCHES "VDI") - # Create imported target hip::amdhip64 - add_library(hip::amdhip64 SHARED IMPORTED) - - set_target_properties(hip::amdhip64 PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" - INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" - ) -else() - set_target_properties(hip::hip_hcc_static PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" - INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}") - - # Create imported target hip::hip_hcc - add_library(hip::hip_hcc SHARED IMPORTED) - - set_target_properties(hip::hip_hcc PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" - INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" - ) -endif() - -# Create imported target hip::host -add_library(hip::host INTERFACE IMPORTED) - -if(HIP_RUNTIME MATCHES "VDI") - set_target_properties(hip::host PROPERTIES - INTERFACE_LINK_LIBRARIES "hip::amdhip64") -else() - set_target_properties(hip::host PROPERTIES - INTERFACE_LINK_LIBRARIES "hip::hip_hcc") -endif() - - -# Create imported target hip::device -add_library(hip::device INTERFACE IMPORTED) - -if(HIP_COMPILER STREQUAL "hcc") -set_target_properties(hip::device PROPERTIES - INTERFACE_LINK_LIBRARIES "hip::host;hcc::hccrt;hcc::hc_am" - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" - INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" -) -else() -set_target_properties(hip::device PROPERTIES - INTERFACE_LINK_LIBRARIES "hip::host" -) -endif() - -if(CMAKE_VERSION VERSION_LESS 3.0.0) - message(FATAL_ERROR "This file relies on consumers using CMake 3.0.0 or greater.") -endif() - -# Load information for each installed configuration. -get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -file(GLOB CONFIG_FILES "${_DIR}/hip-targets-*.cmake") -foreach(f ${CONFIG_FILES}) - include(${f}) -endforeach() - -# Cleanup temporary variables. -set(_IMPORT_PREFIX) - -# Loop over all imported files and verify that they actually exist -foreach(target ${_IMPORT_CHECK_TARGETS} ) - foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) - if(NOT EXISTS "${file}" ) - message(FATAL_ERROR "The imported target \"${target}\" references the file - \"${file}\" -but this file does not exist. Possible reasons include: -* The file was deleted, renamed, or moved to another location. -* An install or uninstall procedure did not complete successfully. -* The installation package was faulty and contained - \"${CMAKE_CURRENT_LIST_FILE}\" -but not all the files it references. -") - endif() - endforeach() - unset(_IMPORT_CHECK_FILES_FOR_${target}) -endforeach() -unset(_IMPORT_CHECK_TARGETS) - -# This file does not depend on other imported targets which have -# been exported from the same project but in a separate export set. - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) diff --git a/packaging/hip-vdi.txt b/packaging/hip-vdi.txt index eefdcf69fb..20aa356383 100644 --- a/packaging/hip-vdi.txt +++ b/packaging/hip-vdi.txt @@ -7,7 +7,8 @@ install(FILES @PROJECT_BINARY_DIR@/lib/libhiprtc.so DESTINATION lib) install(FILES @PROJECT_BINARY_DIR@/.hipInfo DESTINATION lib) install(FILES @PROJECT_BINARY_DIR@/hip-config.cmake @PROJECT_BINARY_DIR@/hip-config-version.cmake DESTINATION lib/cmake/hip) -install(FILES @hip_SOURCE_DIR@/packaging/hip-targets.cmake @hip_SOURCE_DIR@/packaging/hip-targets-release.cmake DESTINATION lib/cmake/hip) +file(GLOB target_files @CONFIG_PACKAGE_INSTALL_DIR@/hip-targets-*.cmake) +install(FILES @CONFIG_PACKAGE_INSTALL_DIR@/hip-targets.cmake ${target_files} DESTINATION lib/cmake/hip) ############################# # Packaging steps diff --git a/tests/src/deviceLib/hipDeviceMalloc.cpp b/tests/src/deviceLib/hipDeviceMalloc.cpp index 4af7614a5c..aec891ed19 100644 --- a/tests/src/deviceLib/hipDeviceMalloc.cpp +++ b/tests/src/deviceLib/hipDeviceMalloc.cpp @@ -17,8 +17,8 @@ OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* HIT_START - * BUILD: %t %s NVCC_OPTIONS -std=c++11 - * TEST: %t EXCLUDE_HIP_PLATFORM nvcc + * BUILD: %t %s NVCC_OPTIONS -std=c++11 EXCLUDE_HIP_PLATFORM all + * TEST: %t EXCLUDE_HIP_PLATFORM all * HIT_END */ #include "test_common.h" diff --git a/vdi/CMakeLists.txt b/vdi/CMakeLists.txt index ee772874af..8c1ca1f2de 100644 --- a/vdi/CMakeLists.txt +++ b/vdi/CMakeLists.txt @@ -158,12 +158,11 @@ add_library(amdhip64_static STATIC add_library(host INTERFACE) target_link_libraries(host INTERFACE amdhip64) -target_link_libraries(host INTERFACE amdhip64_static) add_library(device INTERFACE) target_link_libraries(device INTERFACE host) -target_link_libraries(amdhip64_static amdvdi_static pthread dl) -target_link_libraries(amdhip64 amdvdi_static pthread dl) +target_link_libraries(amdhip64_static PRIVATE amdvdi_static pthread dl) +target_link_libraries(amdhip64 PRIVATE amdvdi_static pthread dl) INSTALL(PROGRAMS $ DESTINATION lib COMPONENT MAIN)