mirror of
https://codeberg.org/guix/guix.git
synced 2026-01-25 12:05:19 -06:00
gnu: Bump rocm to version 7.1.0
* gnu/packages/llvm.scm (%rocm-llvm-version): New variable. (make-llvm-rocm): New procedure. (llvm-rocm): New variable. (make-clang-runtime-rocm): New procedure. (clang-runtime-rocm): New variable. (make-clang-rocm): New procedure. (clang-rocm): New variable. (rocm-device-libs): New variable. (rocm-comgr): New variable. (rocm-hipcc): New variable. (make-lld-rocm): New procedure. (lld-rocm): New variable. * gnu/packages/rocm.scm: Add perl to imports. (%rocm-version): Update to 7.1.0. (%rocm-systems-url, %rocm-systems-origin): New variables. (rocr-runtime): Use %rocm-systems-origin and update build. (rocm-opencl-runtime): Use %rocm-systems-origin and update build. (rocm-hip-runtime): New variable. (rocminfo): Use %rocm-systems-origin and update build. (%default-amdgpu-targets, %default-amdgpu-targets-property): New variables. (%amdgpu-targets): New syntax. (rocm-bandwidth-test): Update and add comprehensive build support. * gnu/local.mk: Add rocm-bandwidth-test patches. * gnu/packages/patches/rocm-bandwidth-test-fix-external-packages-search.patch, gnu/packages/patches/rocm-bandwidth-test-fix-hsa-include-file-lookup.patch, gnu/packages/patches/rocm-bandwidth-test-take-default-gpus-from-environment.patch: New files. * gnu/packages/patches/rocclr-5.6.0-enable-gfx800.patch, gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch: Update patch paths. Change-Id: I43f162b9f8ab898e25d8ecbe4ea30be84a29eb0d Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
ceaf4c4ead
commit
93f06c60ee
8 changed files with 741 additions and 250 deletions
|
|
@ -2281,6 +2281,9 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/rng-tools-revert-build-randstat.patch \
|
||||
%D%/packages/patches/rocclr-5.6.0-enable-gfx800.patch \
|
||||
%D%/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch \
|
||||
%D%/packages/patches/rocm-bandwidth-test-fix-external-packages-search.patch \
|
||||
%D%/packages/patches/rocm-bandwidth-test-fix-hsa-include-file-lookup.patch \
|
||||
%D%/packages/patches/rocm-bandwidth-test-take-default-gpus-from-environment.patch \
|
||||
%D%/packages/patches/rottlog-direntry.patch \
|
||||
%D%/packages/patches/ruby-actionpack-remove-browser-tests.patch \
|
||||
%D%/packages/patches/ruby-activesupport-fix-deprecation-warning.patch \
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@
|
|||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages cmake)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages crypto)
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages bootstrap) ;glibc-dynamic-linker
|
||||
|
|
@ -86,6 +87,7 @@
|
|||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-build)
|
||||
#:use-module (gnu packages rocm)
|
||||
#:use-module (gnu packages swig)
|
||||
#:use-module (gnu packages vulkan)
|
||||
#:use-module (gnu packages xml)
|
||||
|
|
@ -1279,40 +1281,282 @@ Library.")
|
|||
(define-public clang clang-13)
|
||||
(define-public clang-toolchain clang-toolchain-13)
|
||||
|
||||
(define-public llvm-for-rocm
|
||||
|
||||
|
||||
;; ROCm compiler infrastructure elements are compiled from a monorepo at
|
||||
;; https://github.com/ROCm/llvm-project. Due to some of these parts
|
||||
;; referencing both a common origin and llvm helpers (in particular related to
|
||||
;; patches and base packages). Other ROCm elements are part of rocm.scm
|
||||
|
||||
;; This must match '%rocm-version' in rocm.scm. They cannot be shared because
|
||||
;; toplevel variables cannot be called from one file to another.
|
||||
(define %rocm-llvm-version "7.1.0")
|
||||
|
||||
(define (make-llvm-rocm llvm-base)
|
||||
(package
|
||||
;; Currently based on LLVM 19.
|
||||
(inherit llvm-19)
|
||||
(name "llvm-for-rocm")
|
||||
(version "6.4.2") ;this must match '%rocm-version'
|
||||
(inherit llvm-base)
|
||||
;; XXX A lot of llvm package phases are dependent on llvm version. Are
|
||||
;; these resolved early, so that we can override the package version easily?
|
||||
(version %rocm-llvm-version)
|
||||
(name "llvm-rocm")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/ROCm/llvm-project.git")
|
||||
(commit (string-append "rocm-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(url "https://github.com/ROCm/llvm-project")
|
||||
(commit (string-append "rocm-" %rocm-llvm-version))))
|
||||
(file-name (git-file-name "rocm-llvm" %rocm-llvm-version))
|
||||
(sha256
|
||||
(base32
|
||||
"1j2cr362k7snsh5c1z38ikyihmjvy0088rj0f0dhng6cjwgysryp"))))
|
||||
"1nwbj2cz99psgq9s9l4wbsxj41l2d2dga5l9rw9jndk05jsn4n7s"))
|
||||
;; Some of these patches require a further dynamic substitution during
|
||||
;; package build. Therefore, it is important to derive from the base
|
||||
;; packages or to duplicate such substitutions. Additionally, some of
|
||||
;; those substitutions are only applied on specific subcomponents
|
||||
;; (llvm-clang), so duplicating the base-llvm structure with subcomponents
|
||||
;; is necessary.
|
||||
(patches
|
||||
(map search-patch
|
||||
(assoc-ref %llvm-patches (package-version llvm-base))))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments llvm-19)
|
||||
(substitute-keyword-arguments (package-arguments llvm-base)
|
||||
((#:configure-flags flags)
|
||||
#~(list "-DLLVM_ENABLE_PROJECTS=llvm;clang;lld"
|
||||
"-DLLVM_TARGETS_TO_BUILD=AMDGPU;X86"
|
||||
"-DCMAKE_SKIP_BUILD_RPATH=FALSE"
|
||||
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE"
|
||||
"-DBUILD_SHARED_LIBS:BOOL=TRUE"
|
||||
"-DLLVM_VERSION_SUFFIX="))))
|
||||
#~(append #$flags
|
||||
(list "-DLLVM_TARGETS_TO_BUILD=AMDGPU;X86"
|
||||
"-DLLVM_VERSION_SUFFIX=")))))
|
||||
(properties `((hidden? . #t)
|
||||
,@(package-properties llvm-19)))
|
||||
,@(package-properties llvm-base)))
|
||||
(home-page "https://github.com/ROCm/llvm-project")
|
||||
(synopsis
|
||||
(string-append (package-synopsis llvm-19) " (AMD fork)"))
|
||||
(string-append (package-synopsis llvm-base) " (AMD fork)"))
|
||||
(description
|
||||
(string-append (package-description llvm-19) "
|
||||
(string-append (package-description llvm-base) "
|
||||
|
||||
This AMD fork includes AMD-specific additions."))))
|
||||
|
||||
(define-public llvm-rocm (make-llvm-rocm llvm-20))
|
||||
|
||||
(define (make-clang-runtime-rocm clang-runtime-base)
|
||||
(package
|
||||
(inherit clang-runtime-base)
|
||||
(name "clang-runtime-rocm")
|
||||
(version (package-version llvm-rocm))
|
||||
(source (package-source llvm-rocm))
|
||||
(inputs (modify-inputs (package-inputs clang-runtime-base)
|
||||
(replace "llvm" llvm-rocm)))))
|
||||
|
||||
(define-public clang-runtime-rocm (make-clang-runtime-rocm clang-runtime-20))
|
||||
|
||||
(define (make-clang-rocm clang-base)
|
||||
;; note: tools-extra is embedded in the checkout
|
||||
(package
|
||||
(inherit clang-base)
|
||||
(name "clang-rocm")
|
||||
(version (package-version llvm-rocm))
|
||||
(source (package-source llvm-rocm))
|
||||
(inputs (modify-inputs (package-inputs clang-base)
|
||||
(delete "clang-tools-extra")))
|
||||
(propagated-inputs
|
||||
(modify-inputs (package-propagated-inputs clang-base)
|
||||
(replace "llvm" llvm-rocm)
|
||||
(replace "clang-runtime" clang-runtime-rocm)
|
||||
(append python-lit)))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments clang-base)
|
||||
;; The tests can be run, as allowed by check phase rewrite and
|
||||
;; LLVM_EXTERNAL_LIT setting. However, 84/46171 are failing. Most
|
||||
;; should probably be disabled.
|
||||
;;
|
||||
;; - CUDA tests are failing.
|
||||
;;
|
||||
;; - Checking for some -L[[SYSROOT]] is failing, which I guess is
|
||||
;; expected, given the patches we apply, which are mangling directory
|
||||
;; searching for libraries.
|
||||
;;
|
||||
;; Getting the test suite to pass doesn't seem out of reach. We
|
||||
;; probably should start with the standard llvm-clang-20x package.
|
||||
((#:tests? _ #t) #f)
|
||||
((#:configure-flags flags)
|
||||
#~(append #$flags
|
||||
(list
|
||||
"-DLLVM_TARGETS_TO_BUILD=AMDGPU;X86"
|
||||
;; WARNING: we could patch
|
||||
;; #$llvm-rocm/lib/cmake/llvm/AddLLVM.cmake to simplify, by
|
||||
;; substituting set(LIT_COMMAND
|
||||
;; "${Python3_EXECUTABLE};${lit_base_dir}/${lit_file_name}")
|
||||
;; pending this, having a correct python script here is a
|
||||
;; must-have.
|
||||
;; TODO: test this on llvm-rocm.
|
||||
(string-append
|
||||
"-DLLVM_EXTERNAL_LIT="
|
||||
(search-input-file %build-inputs "bin/.lit-real"))
|
||||
;; Disable clang wrapper which depends on lld as well.
|
||||
"-DCLANG_ENABLE_AMDCLANG=OFF")))
|
||||
((#:phases phases '%standard-phases)
|
||||
#~(modify-phases #$phases
|
||||
(replace 'check
|
||||
(lambda* (#:rest args)
|
||||
(setenv "HOME" "/tmp")
|
||||
(apply (assoc-ref
|
||||
(@ (guix build gnu-build-system) %standard-phases)
|
||||
'check)
|
||||
#:test-target "check-clang" args)))
|
||||
(replace 'add-tools-extra
|
||||
(lambda _
|
||||
(copy-recursively "../clang-tools-extra" "tools/extra")))))))))
|
||||
|
||||
(define-public clang-rocm (make-clang-rocm clang-20))
|
||||
|
||||
(define-public rocm-device-libs
|
||||
(package
|
||||
(name "rocm-device-libs")
|
||||
(version (package-version llvm-rocm))
|
||||
(source (package-source llvm-rocm))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; Not sure how to run them.
|
||||
#:build-type "Release"
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'chdir
|
||||
(lambda _
|
||||
(chdir "amd/device-libs")))
|
||||
(add-after 'install 'copy-include-directories
|
||||
(lambda _
|
||||
;; at this point we're within amd/build; i guess the build
|
||||
;; directory should be at the same level as source, but due to
|
||||
;; the chdir above...
|
||||
(with-directory-excursion "../device-libs"
|
||||
(for-each
|
||||
(lambda (directory)
|
||||
(let ((include-directory (string-append directory "/inc")))
|
||||
(copy-recursively
|
||||
include-directory
|
||||
(string-append #$output "/" include-directory))))
|
||||
(list "irif" "oclc" "ockl" "ocml"))))))))
|
||||
(inputs (list clang-rocm))
|
||||
(home-page "https://github.com/ROCm/llvm-project/")
|
||||
(synopsis "ROCm Device libraries")
|
||||
(description "ROCm device libraries provide AMD-specific device-side language runtime
|
||||
libraries, namely oclc, ocml, ockl, opencl, hip and hc.")
|
||||
(license license:ncsa)))
|
||||
|
||||
;; Usage note from amd/comgr/src/comgr-env.cpp: at runtime, comgr either needs
|
||||
;; the awful ROCM_PATH set, or the more palatable LLVM_PATH and HIP_PATH, set.
|
||||
(define-public rocm-comgr
|
||||
(package
|
||||
(name "rocm-comgr")
|
||||
(version (package-version llvm-rocm))
|
||||
(source (package-source llvm-rocm))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:build-type "Release"
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'prepare-to-build
|
||||
(lambda _
|
||||
(chdir "amd/comgr")
|
||||
(setenv "ROCM_PATH"
|
||||
#$(this-package-input "rocm-device-libs")))))))
|
||||
(inputs (list libffi rocm-device-libs))
|
||||
(native-inputs (list
|
||||
clang-rocm
|
||||
lld-rocm
|
||||
python))
|
||||
(home-page "https://github.com/ROCm/ROCm-CompilerSupport")
|
||||
(synopsis "ROCm Code Object Manager")
|
||||
(description "The Comgr library provides APIs for compiling and inspecting
|
||||
AMDGPU code objects.")
|
||||
(license license:ncsa)))
|
||||
|
||||
(define-public rocm-hipcc
|
||||
(package
|
||||
(name "rocm-hipcc")
|
||||
(version (package-version llvm-rocm))
|
||||
(source (package-source llvm-rocm))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; Not sure how to run them.
|
||||
#:build-type "Release"
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'chdir
|
||||
(lambda _
|
||||
(chdir "amd/hipcc")))
|
||||
(add-after 'chdir 'patch-rocm-path
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* (find-files "src" "\\.h$")
|
||||
(("roccmPath \\+ \"/bin/rocm_agent_enumerator\"")
|
||||
(format #f "~s" (search-input-file
|
||||
inputs
|
||||
"/bin/rocm_agent_enumerator"))))))
|
||||
;; This version file very important, as it is parsed under
|
||||
;; $#{llvm-rocm}/clang/lib/Driver/ToolChains/AMDGPU.cpp and its
|
||||
;; contents decides on some includes for hipcc.
|
||||
(add-after 'install 'info-version
|
||||
(lambda _
|
||||
(let ((hip-version-dir (string-append #$output "/share/hip")))
|
||||
(mkdir hip-version-dir)
|
||||
(with-directory-excursion hip-version-dir
|
||||
(with-output-to-file "version"
|
||||
(lambda _
|
||||
(apply format #t
|
||||
"HIP_VERSION_MAJOR=~a~%~
|
||||
HIP_VERSION_MINOR=~a~%~
|
||||
HIP_VERSION_PATCH=~a~%~
|
||||
HIP_VERSION_GITHASH=0~%"
|
||||
(string-split
|
||||
#$(version-major+minor+point version) #\.))))))))
|
||||
(add-after 'install 'wrap-programs
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((output-bindir (string-append (assoc-ref outputs "out") "/bin")))
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(wrap-program (string-append output-bindir "/" file)
|
||||
;; The following definitions and their meaning can be
|
||||
;; found in hibBin_base.h. We've defined neither
|
||||
;; HIP_RUNTIME nor HIP_ROCCLR_HOME.
|
||||
|
||||
;; HIP_ROCCLR_HOME unfortunately cannot be set here
|
||||
;; (circular dependency problem) -- it should be set to
|
||||
;; #$rocm-hip-runtime.
|
||||
|
||||
;;(list "HIP_ROCCLR_HOME" '= (list #$rocm-hip-runtime))
|
||||
(list "HIP_PATH" '= (list #$output))
|
||||
(list "HIP_CLANG_PATH"
|
||||
'=
|
||||
(list (string-append
|
||||
#$(this-package-input "clang-rocm")
|
||||
"/bin")))
|
||||
(list "DEVICE_LIB_PATH"
|
||||
'=
|
||||
(list (string-append
|
||||
#$(this-package-input "rocm-device-libs")
|
||||
"/amdgcn/bitcode")))
|
||||
|
||||
;; This is done in order to please check_config, which
|
||||
;; checks that HSA_PATH is in LD_LIBRARY_PATH
|
||||
(list "LD_LIBRARY_PATH"
|
||||
'suffix
|
||||
(list #$(this-package-input "rocr-runtime")))
|
||||
;; checks hipconfig is in PATH
|
||||
(list "PATH" 'suffix (list output-bindir))))
|
||||
'( "hipcc" "hipconfig" ))))))))
|
||||
(inputs (list clang-rocm
|
||||
rocm-device-libs
|
||||
rocr-runtime
|
||||
rocminfo
|
||||
perl
|
||||
bash-minimal))
|
||||
(home-page "https://github.com/ROCm/llvm-project/")
|
||||
(synopsis "ROCm HIP compiler driver (@command{hipcc})")
|
||||
(description "The HIP compiler driver (@command{hipcc}) is a compiler utility that will
|
||||
call @command{clang} and pass the appropriate include and library options for
|
||||
the target compiler and HIP infrastructure.")
|
||||
(license license:expat)))
|
||||
|
||||
|
||||
|
||||
(define-public libunwind-headers
|
||||
|
|
@ -1723,6 +1967,26 @@ existing compilers together.")
|
|||
(define-public python-clang-13
|
||||
(clang-python-bindings clang-13))
|
||||
|
||||
;; XXX
|
||||
;; I would move all of rocm packages here and define a ROCm section.
|
||||
|
||||
(define (make-lld-rocm lld-base)
|
||||
(package
|
||||
(inherit lld-base)
|
||||
(name "lld-rocm")
|
||||
(version (package-version llvm-rocm))
|
||||
(source (package-source llvm-rocm))
|
||||
(inputs (list llvm-rocm))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments lld-base)
|
||||
((#:configure-flags flags)
|
||||
#~(append #$flags
|
||||
'("-DLLVM_TARGETS_TO_BUILD=AMDGPU;X86")))))))
|
||||
|
||||
(define-public lld-rocm (make-lld-rocm lld-20))
|
||||
|
||||
|
||||
|
||||
(define-public include-what-you-use
|
||||
(package
|
||||
(name "include-what-you-use")
|
||||
|
|
@ -1733,8 +1997,8 @@ existing compilers together.")
|
|||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/include-what-you-use/include-what-you-use")
|
||||
(commit version)))
|
||||
(url "https://github.com/include-what-you-use/include-what-you-use")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0dkk65y6abf7bzv10q1ch3dyzj4d5y89qhh43jn189l861d6pzs0"))))
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ Signed-off-by: Jeremy Newton <Jeremy.Newton@amd.com>
|
|||
|
||||
diff --git a/rocclr/device/device.hpp b/rocclr/device/device.hpp
|
||||
index ef82630325..6409cebc90 100644
|
||||
--- a/rocclr/device/device.hpp
|
||||
+++ b/rocclr/device/device.hpp
|
||||
--- a/projects/clr/rocclr/device/device.hpp
|
||||
+++ b/projects/clr/rocclr/device/device.hpp
|
||||
@@ -1431,8 +1431,5 @@ class Isa {
|
||||
|
||||
/// @returns If the ROCm runtime supports the ISA.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,58 @@
|
|||
diff --git a/cmake/build_utils.cmake b/cmake/build_utils.cmake
|
||||
index 83db1be..6f62931 100644
|
||||
--- a/cmake/build_utils.cmake
|
||||
+++ b/cmake/build_utils.cmake
|
||||
@@ -1010,7 +1010,7 @@ macro(add_bundled_libraries)
|
||||
add_subdirectory(${FMT_SOURCE_DIR} EXCLUDE_FROM_ALL)
|
||||
set(FMT_LIBRARIES fmt::fmt-header-only)
|
||||
else()
|
||||
- find_package(${FMT_PACKAGE_NAME} REQUIRED ${FMT_PKG_MINIMUM_REQUIRED_VERSION})
|
||||
+ find_package(${FMT_PACKAGE_NAME} ${FMT_PKG_MINIMUM_REQUIRED_VERSION} REQUIRED)
|
||||
set(FMT_LIBRARIES fmt::fmt)
|
||||
endif()
|
||||
list(APPEND 3RD_PARTY_TARGET_LIST ${FMT_LIBRARIES})
|
||||
@@ -1020,8 +1020,8 @@ macro(add_bundled_libraries)
|
||||
# Note: C++23+ we can use std::stacktrace for the traces.
|
||||
# Some older compilers/systems will not allow that. We will force/use boost::stacktrace for now.
|
||||
# Check for 'Boost'
|
||||
- set(BOOST_PACKAGE_NAME "boost")
|
||||
- set(BOOST_LIBRARY_NAME "boost")
|
||||
+ set(BOOST_PACKAGE_NAME "Boost")
|
||||
+ set(BOOST_LIBRARY_NAME "Boost")
|
||||
set(BOOST_REPO_URL "https://github.com/boostorg/boost.git")
|
||||
set(BOOST_PKG_MINIMUM_REQUIRED_VERSION "1.74.0")
|
||||
set(BOOST_REPO_VERSION "boost-1.88.0")
|
||||
@@ -1128,7 +1128,7 @@ macro(add_bundled_libraries)
|
||||
add_subdirectory(${SPDLOG_SOURCE_DIR} EXCLUDE_FROM_ALL)
|
||||
set(SPDLOG_LIBRARIES spdlog::spdlog_header_only)
|
||||
else()
|
||||
- find_package(${SPDLOG_PACKAGE_NAME} REQUIRED ${SPDLOG_PKG_MINIMUM_REQUIRED_VERSION})
|
||||
+ find_package(${SPDLOG_PACKAGE_NAME} ${SPDLOG_PKG_MINIMUM_REQUIRED_VERSION} REQUIRED)
|
||||
set(SPDLOG_LIBRARIES spdlog::spdlog)
|
||||
endif()
|
||||
list(APPEND 3RD_PARTY_TARGET_LIST ${SPDLOG_LIBRARIES})
|
||||
@@ -1162,7 +1162,7 @@ macro(add_bundled_libraries)
|
||||
# find_package(Boost 1.74 REQUIRED COMPONENTS stacktrace_basic)
|
||||
# set(BOOST_LIBRARIES boost::boost)
|
||||
#endif()
|
||||
- set(CATCH2_PACKAGE_NAME "catch2")
|
||||
+ set(CATCH2_PACKAGE_NAME "Catch2")
|
||||
set(CATCH2_LIBRARY_NAME "Catch2")
|
||||
set(CATCH2_REPO_URL "https://github.com/catchorg/Catch2.git")
|
||||
set(CATCH2_PKG_MINIMUM_REQUIRED_VERSION "3.5.1")
|
||||
diff --git a/main/cmdline/CMakeLists.txt b/main/cmdline/CMakeLists.txt
|
||||
index ad8219e..f507a2b 100644
|
||||
--- a/main/cmdline/CMakeLists.txt
|
||||
+++ b/main/cmdline/CMakeLists.txt
|
||||
@@ -54,7 +54,7 @@ if(NOT USE_LOCAL_CLI11)
|
||||
set(CLI11_LIBRARIES CLI11::CLI11)
|
||||
set(CLI11_INCLUDE_DIRS)
|
||||
else()
|
||||
- find_package(CLI11 CONFIG QUIT)
|
||||
+ find_package(CLI11 CONFIG QUIET)
|
||||
endif()
|
||||
|
||||
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
diff --git a/plugins/tb/transferbench/CMakeLists.txt b/plugins/tb/transferbench/CMakeLists.txt
|
||||
index 98e4bc4..8e4588e 100644
|
||||
--- a/plugins/tb/transferbench/CMakeLists.txt
|
||||
+++ b/plugins/tb/transferbench/CMakeLists.txt
|
||||
@@ -153,7 +153,7 @@ endif()
|
||||
|
||||
## Check for hsa support
|
||||
find_library(HSA_LIBRARY hsa-runtime64 PATHS ${ROCM_PATH} ${ROCM_PATH}/lib)
|
||||
-find_path(HSA_INCLUDE_DIR hsa.h PATHS ${ROCM_PATH}/include ${ROCM_PATH}/include/hsa)
|
||||
+find_path(HSA_INCLUDE_DIR has/hsa.h PATHS ${ROCM_PATH}/include ${ROCM_PATH}/include/hsa)
|
||||
if(HSA_LIBRARY AND HSA_INCLUDE_DIR)
|
||||
add_library(hsa-runtime64 SHARED IMPORTED)
|
||||
set_target_properties(hsa-runtime64 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${HSA_INCLUDE_DIR}" IMPORTED_LOCATION "${HSA_LIBRARY}" INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${HSA_INCLUDE_DIR}")
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
diff --git a/plugins/tb/transferbench/CMakeLists.txt b/plugins/tb/transferbench/CMakeLists.txt
|
||||
index 8e4588e..1d0e12f 100644
|
||||
--- a/plugins/tb/transferbench/CMakeLists.txt
|
||||
+++ b/plugins/tb/transferbench/CMakeLists.txt
|
||||
@@ -61,20 +61,7 @@ option(ENABLE_NIC_EXEC "Enable RDMA NIC Executor in TransferBench"
|
||||
|
||||
# Default GPU architectures to build
|
||||
#==================================================================================================
|
||||
-set(DEFAULT_GPUS
|
||||
- gfx906
|
||||
- gfx908
|
||||
- gfx90a
|
||||
- gfx942
|
||||
- gfx950
|
||||
- gfx1030
|
||||
- gfx1100
|
||||
- gfx1101
|
||||
- gfx1102
|
||||
- gfx1150
|
||||
- gfx1151
|
||||
- gfx1200
|
||||
- gfx1201)
|
||||
+set(DEFAULT_GPUS ENV{AMDGPU_TARGETS})
|
||||
|
||||
# Build only for local GPU architecture
|
||||
if (BUILD_LOCAL_GPU_TARGET_ONLY)
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -2,8 +2,8 @@ Do not build and install clinfo.
|
|||
|
||||
diff --git a/opencl/CMakeLists.txt b/opencl/CMakeLists.txt
|
||||
index 7b97cfdef..23eec15b2 100644
|
||||
--- a/opencl/CMakeLists.txt
|
||||
+++ b/opencl/CMakeLists.txt
|
||||
--- a/projects/clr/opencl/CMakeLists.txt
|
||||
+++ b/projects/clr/opencl/CMakeLists.txt
|
||||
@@ -33,7 +33,7 @@ if(BUILD_ICD)
|
||||
add_subdirectory(khronos/icd)
|
||||
endif()
|
||||
|
|
@ -15,8 +15,8 @@ index 7b97cfdef..23eec15b2 100644
|
|||
add_subdirectory(tests/ocltst)
|
||||
diff --git a/opencl/packaging/CMakeLists.txt b/opencl/packaging/CMakeLists.txt
|
||||
index 7d9e6366f..f8d08e0fc 100644
|
||||
--- a/opencl/packaging/CMakeLists.txt
|
||||
+++ b/opencl/packaging/CMakeLists.txt
|
||||
--- a/projects/clr/opencl/packaging/CMakeLists.txt
|
||||
+++ b/projects/clr/opencl/packaging/CMakeLists.txt
|
||||
@@ -16,7 +16,7 @@ endif()
|
||||
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
||||
set(CPACK_RPM_COMPONENT_INSTALL ON)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2021 Lars-Dominik Braun <lars@6xq.net>
|
||||
;;; Copyright © 2022, 2023, 2025 John Kehayias <john.kehayias@protonmail.com>
|
||||
;;; Copyright © 2026 Jean-Baptiste Note <jean-baptiste.note@m4x.org>
|
||||
;;;
|
||||
;;; This program is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
|
|
@ -24,34 +25,242 @@
|
|||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages boost)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages cpp)
|
||||
#:use-module (gnu packages curl)
|
||||
#:use-module (gnu packages elf)
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages llvm)
|
||||
#:use-module (gnu packages logging)
|
||||
#:use-module (gnu packages opencl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages pretty-print)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages version-control)
|
||||
#:use-module (gnu packages vim)
|
||||
#:use-module (gnu packages xdisorg))
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages xdisorg)
|
||||
#:use-module (gnu packages libffi)
|
||||
#:use-module (ice-9 match))
|
||||
|
||||
;; The components are tightly integrated and can only be upgraded as a unit. If
|
||||
;; you want to upgrade ROCm, bump this version number and update hashes below.
|
||||
(define %rocm-version "6.4.2")
|
||||
|
||||
;; As of version 6.1.0 several of the ROCm projects are contained within their
|
||||
;; forked LLVM repository. This is the same as the source for llvm-for-rocm.
|
||||
(define %rocm-llvm-origin
|
||||
(define %rocm-version "7.1.0")
|
||||
|
||||
;; ROCm-systems derived packages belong here.
|
||||
|
||||
(define %rocm-systems-url "https://github.com/ROCm/rocm-systems")
|
||||
(define %rocm-systems-origin
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/ROCm/llvm-project/")
|
||||
(url (string-append %rocm-systems-url))
|
||||
(commit (string-append "rocm-" %rocm-version))))
|
||||
(file-name (git-file-name "llvm-for-rocm" %rocm-version))
|
||||
(file-name (git-file-name "rocm-systems" %rocm-version))
|
||||
(sha256
|
||||
(base32
|
||||
"1j2cr362k7snsh5c1z38ikyihmjvy0088rj0f0dhng6cjwgysryp"))))
|
||||
"16h88j5440csz69s7gpcbmiwn72bz4zjlkdm2c7wcyp73m2knnm2"))
|
||||
(patches
|
||||
(search-patches
|
||||
"rocclr-5.6.0-enable-gfx800.patch"
|
||||
"rocm-opencl-runtime-4.3-noclinfo.patch"))))
|
||||
|
||||
(define-public rocr-runtime
|
||||
(package
|
||||
(name "rocr-runtime")
|
||||
(version %rocm-version)
|
||||
(source %rocm-systems-origin)
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; No tests.
|
||||
#:build-type "Release"
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'chdir
|
||||
(lambda _
|
||||
(chdir "projects/rocr-runtime")))
|
||||
(add-after 'unpack 'add-rocm-device-lib-path
|
||||
(lambda _
|
||||
(setenv "ROCM_PATH"
|
||||
#$(this-package-input "rocm-device-libs")))))))
|
||||
(inputs
|
||||
(list libdrm
|
||||
libelf-shared
|
||||
clang-rocm
|
||||
lld-rocm
|
||||
numactl
|
||||
rocm-device-libs)) ; For bitcode.
|
||||
(native-inputs (list pkg-config xxd))
|
||||
(home-page %rocm-systems-url)
|
||||
(synopsis "ROCm Platform Runtime")
|
||||
(description "User-mode API interfaces and libraries necessary for host
|
||||
applications to launch compute kernels to available HSA ROCm kernel agents.")
|
||||
(license license:ncsa)))
|
||||
|
||||
(define-public rocm-opencl-runtime
|
||||
(package
|
||||
(name "rocm-opencl-runtime")
|
||||
(version %rocm-version)
|
||||
(home-page %rocm-systems-url)
|
||||
(source %rocm-systems-origin)
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; Not sure how to run them.
|
||||
#:build-type "Release"
|
||||
#:configure-flags
|
||||
#~(list
|
||||
(string-append "-DAMD_OPENCL_PATH=" #$(package-source this-package))
|
||||
"-DCLR_BUILD_OCL=ON"
|
||||
(string-append "-DROCM_PATH=" #$output)
|
||||
;; Don't build the ICD loader as we have the opencl-icd-loader
|
||||
;; package already.
|
||||
"-DBUILD_ICD=OFF"
|
||||
;; Don't duplicate the install in an "opencl" directory as well.
|
||||
"-DFILE_REORG_BACKWARD_COMPATIBILITY=OFF")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'chdir
|
||||
(lambda _
|
||||
(chdir "projects/clr")))
|
||||
(add-after 'chdir 'no-os-release
|
||||
(lambda _
|
||||
(substitute* "opencl/packaging/CMakeLists.txt"
|
||||
(("/etc/os-release") "/dev/null"))))
|
||||
(add-after 'install 'create-icd
|
||||
;; Manually install ICD, which simply consists of dumping
|
||||
;; the path of the .so into the correct file.
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((vendors (string-append #$output "/etc/OpenCL/vendors"))
|
||||
(sopath (string-append #$output "/lib/libamdocl64.so")))
|
||||
(mkdir-p vendors)
|
||||
(with-output-to-file (string-append vendors "/amdocl64.icd")
|
||||
(lambda _ (display sopath)))))))))
|
||||
(inputs
|
||||
(list glew
|
||||
mesa
|
||||
numactl
|
||||
opencl-headers
|
||||
opencl-icd-loader
|
||||
libffi
|
||||
rocm-comgr
|
||||
rocr-runtime))
|
||||
(synopsis "ROCm OpenCL Runtime")
|
||||
(description "OpenCL 2.0 compatible language runtime, supporting offline
|
||||
and in-process/in-memory compilation.")
|
||||
(license license:expat)))
|
||||
|
||||
;; this runtime includes the hipcc and hip-config present in rocm-hipcc
|
||||
;; wrapping them in rocm-hipcc allows the copies that are made here to be
|
||||
;; wrapped also.
|
||||
(define-public rocm-hip-runtime
|
||||
(package
|
||||
(name "rocm-hip-runtime")
|
||||
(version %rocm-version)
|
||||
(home-page %rocm-systems-url)
|
||||
(source %rocm-systems-origin)
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; Not sure how to run them.
|
||||
#:build-type "Release"
|
||||
#:configure-flags
|
||||
#~(list
|
||||
(string-append "-DAMD_OPENCL_PATH=" #$(package-source this-package))
|
||||
"-DCLR_BUILD_HIP=ON"
|
||||
"-DCLR_BUILD_OCL=OFF"
|
||||
(string-append "-DROCM_PATH=" #$output)
|
||||
"-DHIP_PLATFORM=amd"
|
||||
(string-append
|
||||
"-DHIPCC_BIN_DIR=" #$(this-package-native-input "rocm-hipcc") "/bin")
|
||||
(string-append
|
||||
"-DHIP_COMMON_DIR=" #$(package-source this-package) "/projects/hip")
|
||||
;; for now
|
||||
"-DUSE_PROF_API=OFF"
|
||||
"-DHIP_ENABLE_ROCPROFILER_REGISTER=OFF")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'chdir
|
||||
(lambda _
|
||||
(chdir "projects/clr")))
|
||||
(add-after 'chdir 'no-os-release
|
||||
(lambda _
|
||||
(substitute* '("hipamd/packaging/CMakeLists.txt"
|
||||
"hipamd/CMakeLists.txt")
|
||||
(("/etc/os-release") "/dev/null"))))
|
||||
(add-after 'chdir 'less-cmake-warnings
|
||||
(lambda _
|
||||
(substitute* "rocclr/cmake/ROCclrLC.cmake"
|
||||
(("2\\.9") "3.0"))))
|
||||
(add-after 'chdir 'fix-clang-location-for-embed-pch
|
||||
(lambda _
|
||||
(substitute* "hipamd/src/CMakeLists.txt"
|
||||
;; differentiate between CLANG and LLVM packages
|
||||
(("\\$\\{HIP_LLVM_ROOT\\}")
|
||||
(string-append "${HIP_LLVM_ROOT} "
|
||||
#$(this-package-input "clang-rocm"))))
|
||||
(substitute* "hipamd/src/hip_embed_pch.sh"
|
||||
(("\\$5") "$6")
|
||||
(("LLVM_DIR=\"\\$4\"")
|
||||
"LLVM_DIR=\"$4\"; CLANG_DIR=\"$5\";")
|
||||
(("\\$LLVM_DIR/bin/clang")
|
||||
(string-append "$CLANG_DIR/bin/clang"))))))))
|
||||
(inputs
|
||||
(list glew
|
||||
mesa
|
||||
numactl
|
||||
perl
|
||||
opencl-headers
|
||||
rocm-comgr
|
||||
rocr-runtime
|
||||
rocm-device-libs
|
||||
libffi
|
||||
clang-rocm))
|
||||
(native-inputs
|
||||
(list rocm-hipcc))
|
||||
(synopsis "ROCm HIP Runtime")
|
||||
(description "HIP language runtime, allowing execution of HIP kernels
|
||||
on AMD harware, with library support for in-process/in-memory
|
||||
compilation (hipclr) of HIP kernel code, and its execution on AMD hardware.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public rocminfo
|
||||
(package
|
||||
(name "rocminfo")
|
||||
(version %rocm-version)
|
||||
(source %rocm-systems-origin)
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; No tests.
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'chdir
|
||||
(lambda _
|
||||
(chdir "projects/rocminfo")))
|
||||
(add-after 'chdir 'patch-binary-paths
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "rocminfo.cc"
|
||||
(("lsmod")
|
||||
(search-input-file inputs "bin/lsmod"))
|
||||
(("grep")
|
||||
(search-input-file inputs "bin/grep"))))))))
|
||||
(inputs
|
||||
(list rocr-runtime kmod python))
|
||||
(home-page %rocm-systems-url)
|
||||
(synopsis "ROCm Application for Reporting System Info")
|
||||
(description "List @acronym{HSA,Heterogeneous System Architecture} Agents
|
||||
available to ROCm and show their properties.")
|
||||
(license license:ncsa)))
|
||||
|
||||
|
||||
|
||||
;; ROCm base helpers.
|
||||
|
||||
(define-public rocm-cmake
|
||||
(package
|
||||
|
|
@ -60,14 +269,14 @@
|
|||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/ROCm/rocm-cmake/")
|
||||
(commit (string-append "rocm-" version))))
|
||||
(url "https://github.com/ROCm/rocm-cmake/")
|
||||
(commit (string-append "rocm-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1af9z59bm8pj577x43q614v3ff039wijvcdpgw6sdsq1c0ssj260"))))
|
||||
"19jyymisxiikphzmq6h8vy5cg0r5dz3lxr5wvdf44frb8wxr8vla"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments `(#:tests? #f)) ; Tests try to use git commit
|
||||
(arguments `(#:tests? #f)) ; Tests try to use git commit
|
||||
(native-inputs (list git))
|
||||
(home-page "https://rocm.docs.amd.com/projects/ROCmCMakeBuildTools/")
|
||||
(synopsis "ROCm cmake modules")
|
||||
|
|
@ -75,31 +284,6 @@
|
|||
tasks needed for the ROCM software stack.")
|
||||
(license license:ncsa)))
|
||||
|
||||
(define-public rocm-device-libs
|
||||
(package
|
||||
(name "rocm-device-libs")
|
||||
(version %rocm-version)
|
||||
(source %rocm-llvm-origin)
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; Not sure how to run them.
|
||||
#:build-type "Release"
|
||||
#:configure-flags
|
||||
#~(list "-DCMAKE_SKIP_BUILD_RPATH=FALSE"
|
||||
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'chdir
|
||||
(lambda _
|
||||
(chdir "amd/device-libs"))))))
|
||||
(inputs (list llvm-for-rocm))
|
||||
(home-page "https://github.com/ROCm/llvm-project/")
|
||||
(synopsis "ROCm Device libraries")
|
||||
(description "AMD-specific device-side language runtime libraries, namely
|
||||
oclc, ocml, ockl, opencl, hip and hc.")
|
||||
(license license:ncsa)))
|
||||
|
||||
(define-public rocm-hip-cpu
|
||||
;; There are no releases or tags.
|
||||
(let ((commit "e112c935057434897bb12d9ab3910380a8bd5f58")
|
||||
|
|
@ -122,193 +306,26 @@ oclc, ocml, ockl, opencl, hip and hc.")
|
|||
(list
|
||||
#:configure-flags #~(list "-DBUILD_EXAMPLES=ON")))
|
||||
(home-page "https://github.com/ROCm/HIP-CPU/")
|
||||
(synopsis "An implementation of HIP that works on CPUs")
|
||||
(synopsis "Implementation of HIP that works on CPUs")
|
||||
(description "The HIP CPU Runtime is a header-only library that allows
|
||||
CPUs to execute unmodified HIP code. It is generic and does not assume a
|
||||
particular CPU vendor or architecture.")
|
||||
(license license:expat))))
|
||||
|
||||
(define-public rocm-comgr
|
||||
(package
|
||||
(name "rocm-comgr")
|
||||
(version %rocm-version)
|
||||
(source %rocm-llvm-origin)
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:build-type "Release"
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'prepare-to-build
|
||||
(lambda _
|
||||
(chdir "amd/comgr")
|
||||
(setenv "ROCM_PATH"
|
||||
#$(this-package-input "rocm-device-libs")))))))
|
||||
(inputs (list rocm-device-libs))
|
||||
(native-inputs (list llvm-for-rocm python))
|
||||
(home-page "https://github.com/ROCm/ROCm-CompilerSupport")
|
||||
(synopsis "ROCm Code Object Manager")
|
||||
(description "The Comgr library provides APIs for compiling and inspecting
|
||||
AMDGPU code objects.")
|
||||
(license license:ncsa)))
|
||||
(define %default-amdgpu-targets
|
||||
'("gfx908" "gfx90a" "gfx942" "gfx1030" "gfx1100" "gfx1101" "gfx1200" "gfx1201"))
|
||||
|
||||
;; This package is deprecated; this is the last version released.
|
||||
(define-public roct-thunk-interface
|
||||
(package
|
||||
(name "roct-thunk-interface")
|
||||
(version "6.2.4")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/ROCm/ROCT-Thunk-Interface.git")
|
||||
(commit (string-append "rocm-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1y3mn4860z7ca71cv4hhag7racpc208acy8rws8ldw5k8yjc68m0"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments `(#:tests? #f)) ; Not sure how to run tests.
|
||||
(inputs (list libdrm numactl))
|
||||
(native-inputs (list `(,gcc "lib") pkg-config))
|
||||
(home-page "https://github.com/ROCm/ROCT-Thunk-Interface")
|
||||
(synopsis "Radeon Open Compute Thunk Interface")
|
||||
(description "User-mode API interfaces used to interact with the ROCk
|
||||
driver.")
|
||||
(license (list license:expat license:ncsa))))
|
||||
;; I guess the intent would be to have this overridable with a package
|
||||
;; transform akin to --with-property=amdgpu-target="gfx1100;gfx1101"
|
||||
(define %default-amdgpu-targets-property
|
||||
`(amdgpu-targets
|
||||
.
|
||||
,(string-join %default-amdgpu-targets ";")))
|
||||
|
||||
(define-public rocr-runtime
|
||||
(package
|
||||
(name "rocr-runtime")
|
||||
(version %rocm-version)
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/ROCm/ROCR-Runtime.git")
|
||||
(commit (string-append "rocm-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"01gqbzqm5m28dw9b2calrbp9a23w2cc2gwi3pay8yl8qvk4jgkff"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; No tests.
|
||||
#:build-type "Release"
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'add-rocm-device-lib-path
|
||||
(lambda _
|
||||
(setenv "ROCM_PATH"
|
||||
#$(this-package-input "rocm-device-libs")))))))
|
||||
(inputs
|
||||
(list libdrm
|
||||
libelf-shared
|
||||
llvm-for-rocm
|
||||
numactl
|
||||
rocm-device-libs ; For bitcode.
|
||||
roct-thunk-interface))
|
||||
(native-inputs (list pkg-config xxd))
|
||||
(home-page "https://github.com/ROCm/ROCR-Runtime")
|
||||
(synopsis "ROCm Platform Runtime")
|
||||
(description "User-mode API interfaces and libraries necessary for host
|
||||
applications to launch compute kernels to available HSA ROCm kernel agents.")
|
||||
(license license:ncsa)))
|
||||
|
||||
(define-public rocm-opencl-runtime
|
||||
(package
|
||||
(name "rocm-opencl-runtime")
|
||||
(version %rocm-version)
|
||||
(home-page "https://github.com/ROCm/clr")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url home-page)
|
||||
(commit (string-append "rocm-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"00zr1fw84nifn2b2zd4wxf00f1171hjmz1lypzzmydsk5yw01q0c"))
|
||||
(patches
|
||||
(search-patches
|
||||
"rocclr-5.6.0-enable-gfx800.patch"
|
||||
;; Guix includes a program clinfo already.
|
||||
"rocm-opencl-runtime-4.3-noclinfo.patch"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; Not sure how to run them.
|
||||
#:build-type "Release"
|
||||
#:configure-flags
|
||||
#~(list
|
||||
(string-append "-DAMD_OPENCL_PATH=" #$(package-source this-package))
|
||||
"-DCLR_BUILD_OCL=ON"
|
||||
(string-append "-DROCM_PATH=" #$output)
|
||||
;; Don't build the ICD loader as we have the opencl-icd-loader
|
||||
;; package already.
|
||||
"-DBUILD_ICD=OFF"
|
||||
;; Don't duplicate the install in an "opencl" directory as well.
|
||||
"-DFILE_REORG_BACKWARD_COMPATIBILITY=OFF")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'no-os-release
|
||||
(lambda _
|
||||
(substitute* "opencl/packaging/CMakeLists.txt"
|
||||
(("\"/etc/os-release\"")
|
||||
"\"/dev/null\""))))
|
||||
(add-after 'install 'create-icd
|
||||
;; Manually install ICD, which simply consists of dumping
|
||||
;; the path of the .so into the correct file.
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((vendors (string-append #$output "/etc/OpenCL/vendors"))
|
||||
(sopath (string-append #$output "/lib/libamdocl64.so")))
|
||||
(mkdir-p vendors)
|
||||
(with-output-to-file (string-append vendors "/amdocl64.icd")
|
||||
(lambda _ (display sopath)))))))))
|
||||
(inputs
|
||||
(list glew
|
||||
mesa
|
||||
numactl
|
||||
opencl-headers
|
||||
opencl-icd-loader
|
||||
rocm-comgr
|
||||
rocr-runtime))
|
||||
(synopsis "ROCm OpenCL Runtime")
|
||||
(description "OpenCL 2.0 compatible language runtime, supporting offline
|
||||
and in-process/in-memory compilation.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public rocminfo
|
||||
(package
|
||||
(name "rocminfo")
|
||||
(version %rocm-version)
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/ROCm/rocminfo.git")
|
||||
(commit (string-append "rocm-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"15mzmxz011sg42jg0dbxz57f4fagmxzdjc6zhd0yab3cq7k1kiv2"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; No tests.
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-binary-paths
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "rocminfo.cc"
|
||||
(("lsmod")
|
||||
(search-input-file inputs "bin/lsmod"))
|
||||
(("grep") (search-input-file inputs "bin/grep"))))))))
|
||||
(inputs
|
||||
(list rocr-runtime kmod))
|
||||
(home-page "https://github.com/ROCm/rocminfo")
|
||||
(synopsis "ROCm Application for Reporting System Info")
|
||||
(description "List @acronym{HSA,Heterogeneous System Architecture} Agents
|
||||
available to ROCm and show their properties.")
|
||||
(license license:ncsa)))
|
||||
(define-syntax-rule (%amdgpu-targets)
|
||||
(string-split
|
||||
(assoc-ref (package-properties this-package) 'amdgpu-targets)
|
||||
#\;))
|
||||
|
||||
(define-public rocm-bandwidth-test
|
||||
(package
|
||||
|
|
@ -317,15 +334,120 @@ available to ROCm and show their properties.")
|
|||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/ROCm/rocm_bandwidth_test.git")
|
||||
(commit (string-append "rocm-" version))))
|
||||
(url "https://github.com/ROCm/rocm_bandwidth_test")
|
||||
(commit (string-append "rocm-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1afmyx0dkif7djdcm5rfhnsibbrkj4py6dvh0gw4x3v750ms69wv"))))
|
||||
"09ssn8lkjaypq8qy3v28z25qvxsyha4cv4dk6xmfxmgfy8252yqy"))
|
||||
(patches
|
||||
(search-patches
|
||||
"rocm-bandwidth-test-take-default-gpus-from-environment.patch"
|
||||
"rocm-bandwidth-test-fix-hsa-include-file-lookup.patch"
|
||||
"rocm-bandwidth-test-fix-external-packages-search.patch"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments `(#:tests? #f)) ; No tests.
|
||||
(inputs (list rocr-runtime))
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f
|
||||
#:build-type "Release"
|
||||
#:configure-flags
|
||||
#~(list
|
||||
"-DAMD_APP_TREAT_WARNINGS_AS_ERRORS=FALSE"
|
||||
"-DAMD_APP_ROCM_BUILD_PACKAGE=ON"
|
||||
;; The rocm build system is very opiniated about the rpath and
|
||||
;; mangles it beyond recognition, stripping all inputs from it.
|
||||
;; Avoid the breakage.
|
||||
"-DAMD_APP_ROCM_BUILD_TRY_RPATH=OFF"
|
||||
;; Allows the plugin files to be correctly rpathed to $#output/lib
|
||||
;; where shared libraries reside.
|
||||
"-DAMD_WORK_BENCH_PLUGIN_ADD_INSTALL_PREFIX_TO_RPATH=TRUE"
|
||||
;; Unfortunately this also needs to be patched everywhere, as the
|
||||
;; value is individually set to OFF for a lot of targets, and not
|
||||
;; propagated from the top. So set it here, and use substitutions
|
||||
;; below.
|
||||
"-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
|
||||
(string-append "-DROCM_PATH=" #$output)
|
||||
"-DUSE_LOCAL_FMT_LIB=ON"
|
||||
"-DUSE_LOCAL_NLOHMANN_JSON=ON"
|
||||
"-DUSE_LOCAL_SPDLOG=ON"
|
||||
"-DUSE_LOCAL_BOOST=ON"
|
||||
"-DUSE_LOCAL_CLI11=ON"
|
||||
"-DUSE_LOCAL_CATCH2=ON")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-out-bogus-git-requirement
|
||||
(lambda _
|
||||
(substitute* "CMakeLists.txt"
|
||||
(("find_package\\(Git QUIET\\)")
|
||||
"set(GIT_FOUND ON)"))))
|
||||
;; This converts the amdgpu-targets property to its proper entry
|
||||
;; point in this package; this relies on the patch
|
||||
;; rocm-bandwidth-test-take-default-gpus-from-environment.patch
|
||||
;; above, as I can't seem to find a way to do multiline matches.
|
||||
;; Note that compiling for all GPUs architectures is sequential, and
|
||||
;; will run for a very long time.
|
||||
(add-after 'unpack 'inject-amdgpu-targets
|
||||
(lambda _
|
||||
(substitute* "plugins/tb/transferbench/CMakeLists.txt"
|
||||
(("set\\(DEFAULT_GPUS[^)]*\\)")
|
||||
(string-append
|
||||
"set(DEFAULT_GPUS " #$(string-join (%amdgpu-targets)) ")" )))))
|
||||
;; See configure-flags above.
|
||||
(add-after 'unpack 'fix-use-link-path
|
||||
(lambda _
|
||||
(substitute* (find-files "." "CMakeLists\\.txt$|\\.cmake$")
|
||||
;; NB: this will also catch instances of
|
||||
;; CMAKE_INSTALL_RPATH_USE_LINK_PATH
|
||||
(("INSTALL_RPATH_USE_LINK_PATH FALSE")
|
||||
"INSTALL_RPATH_USE_LINK_PATH TRUE"))))
|
||||
;; For the same reason, just in case patchelf ends up in the inputs
|
||||
;; (the build system may require it), we remove a hardcoded rpath in
|
||||
;; a bash build script which triggers if patchelf is detected.
|
||||
(add-after 'unpack 'remove-hardcoded-patchelf
|
||||
(lambda _
|
||||
(substitute* "plugins/tb/transferbench/build_libamd_tb.sh"
|
||||
(("command -v patchelf") "false"))))
|
||||
;; XXX The build system uses -fuse-ld=lld flag for c++ linking if it
|
||||
;; finds ld.lld in any way. Unfortunately, for some reason, ld.lld
|
||||
;; does not correctly setup the rpath when compiling the
|
||||
;; rocm_bandwidth_test binary (the only executable which shows the
|
||||
;; problem). We do need ld.lld from lld-rocm in the path for
|
||||
;; ROCm-specific linking however. Therefore, just disable ld.lld
|
||||
;; lookup for standard binaries.
|
||||
;; I guess there's a standard Guix way to have lld behave for rpath
|
||||
;; -- which should be applied to lld-rocm, probably.
|
||||
(add-after 'unpack 'dont-use-lld-for-executables
|
||||
(lambda _
|
||||
(substitute* "cmake/build_utils.cmake"
|
||||
(("find_program\\(LD_LLD_PATH ld\\.lld\\)")
|
||||
"#find_program(LD_LLD_PATH ld.lld)"))))
|
||||
;; This is just cosmetic and removes superfluous rpath entries
|
||||
;; involving a nonexistant relative llvm/lib path.
|
||||
;; XXX: RUNPATH checks are okay with $ORIGIN, but it looks like
|
||||
;; other packages are removing it altogether -- what to do?
|
||||
(add-after 'unpack 'remove-dubious-rpath
|
||||
(lambda _
|
||||
(substitute* (find-files "." "CMakeLists\\.txt$|\\.cmake$")
|
||||
((":\\\\\\$ORIGIN(/\\.\\./lib)?/llvm/lib") "")))))))
|
||||
(inputs (list rocr-runtime
|
||||
rocm-hip-runtime
|
||||
rocm-cmake
|
||||
rocm-device-libs
|
||||
rocm-comgr
|
||||
numactl
|
||||
curl
|
||||
fmt-11
|
||||
nlohmann-json
|
||||
spdlog-1.15
|
||||
boost
|
||||
cli11
|
||||
catch2-3.8))
|
||||
(properties
|
||||
(list %default-amdgpu-targets-property))
|
||||
(native-inputs (list
|
||||
rocm-hipcc
|
||||
clang-rocm
|
||||
lld-rocm))
|
||||
(home-page "https://github.com/ROCm/rocm_bandwidth_test")
|
||||
(synopsis "Bandwidth test for ROCm")
|
||||
(description "RocBandwidthTest is designed to capture the performance
|
||||
|
|
@ -335,7 +457,6 @@ cop/read/writer operations. In addition one can also query the topology of
|
|||
the system in terms of memory pools and their agents.")
|
||||
(license license:expat)))
|
||||
|
||||
|
||||
;; e-smi looks hard to unbundle correctly from amd-smi
|
||||
;; the required esmi version is hardcoded in CMakeLists.txt
|
||||
(define (make-esmi-source version hash)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue