diff --git a/rocclr/CMakeLists.txt b/rocclr/CMakeLists.txt index 4c5fcc5952..63df360043 100644 --- a/rocclr/CMakeLists.txt +++ b/rocclr/CMakeLists.txt @@ -55,7 +55,14 @@ include_directories(${CMAKE_SOURCE_DIR}/compiler/llvm/tools/lld/include) include_directories(${CMAKE_SOURCE_DIR}/compiler/llvm/lib/Target/AMDGPU) include_directories(${CMAKE_BINARY_DIR}/compiler/llvm/lib/Target/AMDGPU) -add_subdirectory(compiler/driver EXCLUDE_FROM_ALL) +if(${USE_COMGR_LIBRARY} MATCHES "yes") + set(COMGR_DYN_DLL "yes") + add_definitions(-DCOMGR_DYN_DLL="yes") + include_directories(${CMAKE_SOURCE_DIR}/compiler/llvm/include) + add_definitions(-DUSE_COMGR_LIBRARY) +else() + add_subdirectory(compiler/driver EXCLUDE_FROM_ALL) +endif() set(BUILD_HC_LIB OFF CACHE BOOL "") set(ROCM_DEVICELIB_INCLUDE_TESTS OFF CACHE BOOL "") @@ -66,6 +73,7 @@ add_subdirectory(library/amdgcn EXCLUDE_FROM_ALL) add_subdirectory(compiler/lib/loaders/elf/utils/libelf) +find_package(ROCT REQUIRED) find_package(ROCR REQUIRED) add_subdirectory(runtime) @@ -119,50 +127,6 @@ set ( CPACK_GENERATOR RPM DEB ) set ( CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm/opencl" ) ## Debian package values -file(GENERATE OUTPUT "postinst" - CONTENT "#!/bin/bash - -set -e - -do_ldconfig() { - echo /opt/rocm/opencl/lib/x86_64 > /etc/ld.so.conf.d/x86_64-rocm-opencl.conf && ldconfig - mkdir -p /etc/OpenCL/vendors && (echo libamdocl64.so > /etc/OpenCL/vendors/amdocl64.icd) -} - -case \"$1\" in - configure) - do_ldconfig - ;; - abort-upgrade|abort-remove|abort-deconfigure) - echo \"$1\" - ;; - *) - exit 0 - ;; -esac -") - -file(GENERATE OUTPUT "prerm" - CONTENT "#!/bin/bash - -set -e - -rm_ldconfig() { - rm -f /etc/OpenCL/vendors/amdocl64.icd - rm -f /etc/ld.so.conf.d/x86_64-rocm-opencl.conf && ldconfig -} - -case \"$1\" in - remove) - rm_ldconfig - ;; - purge) - ;; - *) - exit 0 - ;; -esac -") set ( CPACK_DEBIAN_PACKAGE_MAINTAINER "AMD" ) set ( CPACK_DEBIAN_PACKAGE_DEPENDS "" ) @@ -172,26 +136,18 @@ set ( CPACK_DEBIAN_applications_FILE_NAME "rocm-opencl-1.2.0.deb" ) set ( CPACK_DEBIAN_libraries_PACKAGE_NAME "rocm-opencl-dev" ) set ( CPACK_DEBIAN_libraries_FILE_NAME "rocm-opencl-dev-1.2.0.deb" ) set ( CPACK_DEBIAN_libraries_PACKAGE_DEPENDS "rocm-opencl" ) -set ( CPACK_DEBIAN_applications_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/prerm;${CMAKE_CURRENT_BINARY_DIR}/postinst" ) +set ( CPACK_DEBIAN_applications_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/DEB/postinst;${CMAKE_CURRENT_SOURCE_DIR}/DEB/prerm" ) ## RPM package values -file(GENERATE OUTPUT "rpm_postinst" - CONTENT "echo /opt/rocm/opencl/lib/x86_64 > /etc/ld.so.conf.d/x86_64-rocm-opencl.conf && ldconfig; -mkdir -p /etc/OpenCL/vendors && (echo libamdocl64.so > /etc/OpenCL/vendors/amdocl64.icd)") -file(GENERATE OUTPUT "rpm_prerm" - CONTENT "rm -f /etc/OpenCL/vendors/amdocl64.icd -rm -f /etc/ld.so.conf.d/x86_64-rocm-opencl.conf && ldconfig") - set ( CPACK_RPM_COMPONENT_INSTALL ON) set ( CPACK_RPM_applications_PACKAGE_NAME "rocm-opencl" ) set ( CPACK_RPM_applications_FILE_NAME "rocm-opencl-1.2.0.rpm" ) set ( CPACK_RPM_libraries_PACKAGE_NAME "rocm-opencl-devel" ) set ( CPACK_RPM_libraries_FILE_NAME "rocm-opencl-devel-1.2.0.rpm" ) set ( CPACK_RPM_libraries_PACKAGE_DEPENDS "rocm-opencl" ) -set ( CPACK_RPM_applications_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/rpm_postinst" ) -set ( CPACK_RPM_applications_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/rpm_prerm" ) - +set ( CPACK_RPM_applications_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/RPM/rpm_post" ) +set ( CPACK_RPM_applications_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/RPM/rpm_postun" ) set ( CPACK_COMPONENTS_ALL applications libraries ) include ( CPack ) diff --git a/rocclr/cmake/modules/FindROCR.cmake b/rocclr/cmake/modules/FindROCR.cmake index 7d4c0ca4cf..2b198dcf8f 100644 --- a/rocclr/cmake/modules/FindROCR.cmake +++ b/rocclr/cmake/modules/FindROCR.cmake @@ -1,23 +1,16 @@ -# - Try to find the ROCm Runtime. -# Once done this will define -# ROCR_FOUND - System has the ROCR installed -# ROCR_INCLUDE_DIRS - The ROCR include directories -# ROCR_LIBRARIES - The libraries needed to use the ROCR - -find_path(ROCR_INCLUDE_DIR hsa.h - HINTS /opt/rocm/include /opt/rocm/hsa/include - PATH_SUFFIXES hsa) - -find_library(ROCR_LIBRARY hsa-runtime64 - HINTS /opt/rocm/lib /opt/rocm/hsa/lib) +# Try to find ROCR (Radeon Open Compute Runtime) +# +# Once found, this will define: +# - ROCR_FOUND - ROCR status (found or not found) +# - ROCR_INCLUDES - Required ROCR include directories +# - ROCR_LIBRARIES - Required ROCR libraries +find_path(FIND_ROCR_INCLUDES hsa.h HINTS /opt/rocm/include /opt/rocm/hsa/include PATH_SUFFIXES hsa) +find_library(FIND_ROCR_LIBRARIES hsa-runtime64 HINTS /opt/rocm/lib /opt/rocm/hsa/lib) include(FindPackageHandleStandardArgs) -# handle the QUIETLY and REQUIRED arguments and set ROCR_FOUND to TRUE -# if all listed variables are TRUE -find_package_handle_standard_args(ROCR DEFAULT_MSG - ROCR_LIBRARY ROCR_INCLUDE_DIR) +find_package_handle_standard_args(ROCR DEFAULT_MSG + FIND_ROCR_INCLUDES FIND_ROCR_LIBRARIES) +mark_as_advanced(FIND_ROCR_INCLUDES FIND_ROCR_LIBRARIES) -mark_as_advanced(ROCR_INCLUDE_DIR ROCR_LIBRARY) - -set(ROCR_LIBRARIES ${ROCR_LIBRARY}) -set(ROCR_INCLUDE_DIRS ${ROCR_INCLUDE_DIR}) +set(ROCR_INCLUDES ${FIND_ROCR_INCLUDES}) +set(ROCR_LIBRARIES ${FIND_ROCR_LIBRARIES}) diff --git a/rocclr/cmake/modules/FindROCT.cmake b/rocclr/cmake/modules/FindROCT.cmake new file mode 100644 index 0000000000..37f08fcff7 --- /dev/null +++ b/rocclr/cmake/modules/FindROCT.cmake @@ -0,0 +1,16 @@ +# Try to find ROCT (Radeon Open Compute Thunk) +# +# Once found, this will define: +# - ROCT_FOUND - ROCT status (found or not found) +# - ROCT_INCLUDES - Required ROCT include directories +# - ROCT_LIBRARIES - Required ROCT libraries +find_path(FIND_ROCT_INCLUDES hsakmt.h HINTS /opt/rocm/include) +find_library(FIND_ROCT_LIBRARIES hsakmt HINTS /opt/rocm/lib) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ROCT DEFAULT_MSG + FIND_ROCT_INCLUDES FIND_ROCT_LIBRARIES) +mark_as_advanced(FIND_ROCT_INCLUDES FIND_ROCT_LIBRARIES) + +set(ROCT_INCLUDES ${FIND_ROCT_INCLUDES}) +set(ROCT_LIBRARIES ${FIND_ROCT_LIBRARIES}) diff --git a/rocclr/runtime/CMakeLists.txt b/rocclr/runtime/CMakeLists.txt index 62e2bf7c00..0a55cf58ae 100644 --- a/rocclr/runtime/CMakeLists.txt +++ b/rocclr/runtime/CMakeLists.txt @@ -7,7 +7,7 @@ if(CMAKE_BUILD_TYPE MATCHES "^Debug$") add_definitions(-DDEBUG) endif() -include_directories(${ROCR_INCLUDE_DIRS}) +include_directories(${ROCR_INCLUDES}) include_directories(${CMAKE_SOURCE_DIR}/runtime) include_directories(${CMAKE_SOURCE_DIR}/api/opencl) @@ -29,6 +29,13 @@ include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/utils/libelf) add_subdirectory(device/rocm) +if(${USE_COMGR_LIBRARY} MATCHES "yes") + add_definitions(-DUSE_COMGR_LIBRARY -DCOMGR_DYN_DLL) + find_package(amd_comgr REQUIRED CONFIG) + include_directories("$") + set(COMGR_CPP device/comgrctx.cpp) +endif() + add_library(oclruntime OBJECT thread/thread.cpp thread/monitor.cpp @@ -61,6 +68,7 @@ add_library(oclruntime OBJECT ${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/elf.cpp ${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/elf_utils.cpp ${CMAKE_SOURCE_DIR}/compiler/tools/caching/cache.cpp + ${COMGR_CPP} ) set_target_properties(oclruntime PROPERTIES POSITION_INDEPENDENT_CODE ON) diff --git a/rocclr/runtime/device/rocm/CMakeLists.txt b/rocclr/runtime/device/rocm/CMakeLists.txt index 4ce7c453a3..7dce5b9738 100644 --- a/rocclr/runtime/device/rocm/CMakeLists.txt +++ b/rocclr/runtime/device/rocm/CMakeLists.txt @@ -7,6 +7,12 @@ include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/utils/libelf) include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${ROCM_OCL_INCLUDES}) +if(${USE_COMGR_LIBRARY} MATCHES "yes") + add_definitions(-DUSE_COMGR_LIBRARY -DCOMGR_DYN_DLL) + find_package(amd_comgr REQUIRED CONFIG) + include_directories("$") +endif() + add_library(oclrocm OBJECT roccounters.cpp rocprintf.cpp