summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk2
-rw-r--r--gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch11
-rw-r--r--gnu/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch14
-rw-r--r--gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch29
-rw-r--r--gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch25
-rw-r--r--gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch65
-rw-r--r--gnu/packages/rocm.scm95
7 files changed, 115 insertions, 126 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 5c20e1fd6a..576c1a3eb6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1762,9 +1762,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/rnp-disable-ruby-rnp-tests.patch		\
   %D%/packages/patches/rnp-unbundle-googletest.patch		\
   %D%/packages/patches/rocm-comgr-3.1.0-dependencies.patch \
-  %D%/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch \
   %D%/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch \
-  %D%/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch \
   %D%/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch \
   %D%/packages/patches/ruby-mustache-1.1.1-fix-race-condition-tests.patch \
   %D%/packages/patches/ruby-sanitize-system-libxml.patch	\
diff --git a/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch b/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch
index c91d273f92..fc2c74718a 100644
--- a/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch
+++ b/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch
@@ -11,11 +11,11 @@ Without these additional required dependencies, linking fails with errors such a
  CMakeLists.txt | 20 ++++++++++++++++++--
  1 file changed, 18 insertions(+), 2 deletions(-)
 
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 1794a07..c7b852a 100644
+diff --git a/lib/comgr/CMakeLists.txt b/lib/comgr/CMakeLists.txt
+index 8b5ca2f..a7d226f 100644
 --- a/lib/comgr/CMakeLists.txt
 +++ b/lib/comgr/CMakeLists.txt
-@@ -207,7 +207,11 @@ install(FILES
+@@ -294,7 +294,11 @@ install(FILES
    DESTINATION "${AMD_COMGR_PACKAGE_PREFIX}")
  
  set(CLANG_LIBS
@@ -28,7 +28,7 @@ index 1794a07..c7b852a 100644
  
  set(LLD_LIBS
    lldELF
-@@ -218,8 +222,20 @@ if (LLVM_LINK_LLVM_DYLIB)
+@@ -305,8 +309,21 @@ if (LLVM_LINK_LLVM_DYLIB)
  else()
    llvm_map_components_to_libnames(LLVM_LIBS
      ${LLVM_TARGETS_TO_BUILD}
@@ -46,7 +46,8 @@ index 1794a07..c7b852a 100644
 +    IRReader
 +    CodeGen
 +    Linker
++    Demangle
 +    BinaryFormat)
  endif()
  
- target_link_libraries(amd_comgr
+ target_link_options(amd_comgr
diff --git a/gnu/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch b/gnu/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch
deleted file mode 100644
index d81bb0747f..0000000000
--- a/gnu/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Add missing include dirs for ROCclr.
-
---- a/amdocl/CMakeLists.txt	2020-12-05 22:05:55.838529158 +0100
-+++ b/amdocl/CMakeLists.txt	2020-12-05 22:07:35.677524507 +0100
-@@ -23,6 +23,9 @@
- include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos)
- include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos/headers)
- include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos/headers/opencl2.2)
-+include_directories(${ROCclr_DIR}/../../../include)
-+include_directories(${ROCclr_DIR}/../../../include/compiler/lib/include/)
-+include_directories(${ROCclr_DIR}/../../../include/elf/)
- 
- if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
-    (CMAKE_${COMPILER}_COMPILER_ID MATCHES "Clang"))
diff --git a/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch b/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch
index 5709e0d19a..97376fd421 100644
--- a/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch
+++ b/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch
@@ -4,25 +4,26 @@ diff --git a/CMakeLists.txt.orig b/CMakeLists.txt
 index 76847d3..3f62bfe 100644
 --- a/CMakeLists.txt.orig
 +++ b/CMakeLists.txt
-@@ -72,7 +72,7 @@ find_package(ROCclr REQUIRED CONFIG
+@@ -15,9 +15,9 @@ option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorganization backward co
  
- add_subdirectory(khronos/icd)
+ 
+ set(OPENCL_ICD_LOADER_HEADERS_DIR "${CMAKE_CURRENT_LIST_DIR}/khronos/headers/opencl2.2" CACHE PATH "")
+ #add_subdirectory(khronos/icd)
  add_subdirectory(amdocl)
 -add_subdirectory(tools/clinfo)
 +#add_subdirectory(tools/clinfo)
  add_subdirectory(tools/cltrace)
  if(BUILD_TESTS)
    add_subdirectory(tests/ocltst)
-@@ -108,9 +108,9 @@ endif()
- ###--- Packaging ------------------------------------------------------------###
+diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt
+index 48353eb..cd1e7c1 100644
+--- a/packaging/CMakeLists.txt
++++ b/packaging/CMakeLists.txt
+@@ -5,6 +5,6 @@ set(CPACK_COMPONENTS_ALL binary dev icd)
+ set(CPACK_DEB_COMPONENT_INSTALL ON)
+ set(CPACK_RPM_COMPONENT_INSTALL ON)
  
- # MAIN package
--install(PROGRAMS $<TARGET_FILE:clinfo>
--        DESTINATION bin
--        COMPONENT MAIN)
-+#install(PROGRAMS $<TARGET_FILE:clinfo>
-+#        DESTINATION bin
-+#        COMPONENT MAIN)
- install(PROGRAMS $<TARGET_FILE:cltrace>
-         DESTINATION lib
-         COMPONENT MAIN)
+-install(TARGETS clinfo DESTINATION bin COMPONENT binary)
++#install(TARGETS clinfo DESTINATION bin COMPONENT binary)
+ install(TARGETS amdocl DESTINATION lib COMPONENT binary)
+ install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION share/doc/${CMAKE_PROJECT_NAME} COMPONENT binary)
diff --git a/gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch b/gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch
deleted file mode 100644
index e0328d7734..0000000000
--- a/gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Do not build and install cltrace.
-
-diff --git a/CMakeLists.txt.orig b/CMakeLists.txt
-index c449db4..9cff673 100644
---- a/CMakeLists.txt.orig
-+++ b/CMakeLists.txt
-@@ -73,7 +73,7 @@ find_package(ROCclr REQUIRED CONFIG
- #add_subdirectory(khronos/icd)
- add_subdirectory(amdocl)
- #add_subdirectory(tools/clinfo)
--add_subdirectory(tools/cltrace)
-+#add_subdirectory(tools/cltrace)
- if(BUILD_TESTS)
-   add_subdirectory(tests/ocltst)
- endif()
-@@ -108,9 +108,6 @@ endif()
- #install(PROGRAMS $<TARGET_FILE:clinfo>
- #        DESTINATION bin
- #        COMPONENT MAIN)
--install(PROGRAMS $<TARGET_FILE:cltrace>
--        DESTINATION lib
--        COMPONENT MAIN)
- install(PROGRAMS $<TARGET_FILE:amdocl64>
-         DESTINATION lib
-         COMPONENT MAIN)
diff --git a/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch b/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch
index ed20f02503..9f80d7da9d 100644
--- a/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch
+++ b/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch
@@ -2,36 +2,21 @@ Do not build and install libOpenCL.
 
 --- b/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -70,7 +70,7 @@
-     ${ROCclr_DIR}
-     ${LIBROCclr_STATIC_DIR})
+@@ -15,9 +15,9 @@ option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorganization backward co
  
+ 
+ set(OPENCL_ICD_LOADER_HEADERS_DIR "${CMAKE_CURRENT_LIST_DIR}/khronos/headers/opencl2.2" CACHE PATH "")
 -add_subdirectory(khronos/icd)
 +#add_subdirectory(khronos/icd)
  add_subdirectory(amdocl)
- #add_subdirectory(tools/clinfo)
+ add_subdirectory(tools/clinfo)
  add_subdirectory(tools/cltrace)
-@@ -93,9 +93,6 @@
-     OUTPUT_VARIABLE OPENCL_VERSION_GITDATE
-     OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if(BUILD_TESTS)
+   add_subdirectory(tests/ocltst)
+@@ -25,16 +25,6 @@ endif()
+ 
+ ###--- Packaging ------------------------------------------------------------###
  
--get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION)
--get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION)
--
- find_package(ROCM QUIET CONFIG PATHS /opt/rocm)
- 
- if(ROCM_FOUND)
-@@ -117,25 +114,6 @@
- install(PROGRAMS $<TARGET_FILE:amdocl64>
-         DESTINATION lib
-         COMPONENT MAIN)
--install(PROGRAMS $<TARGET_FILE:OpenCL>
--        DESTINATION lib
--        COMPONENT MAIN)
--install(PROGRAMS $<TARGET_SONAME_FILE:OpenCL>
--        DESTINATION lib
--        COMPONENT MAIN)
--
 -# DEV package
 -install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/khronos/headers/opencl2.2/CL"
 -        DESTINATION include
@@ -41,15 +26,26 @@ Do not build and install libOpenCL.
 -        PATTERN cl_d3d11.h EXCLUDE
 -        PATTERN cl_dx9_media_sharing.h EXCLUDE
 -        PATTERN cl_egl.h EXCLUDE)
--install(PROGRAMS $<TARGET_LINKER_FILE:OpenCL>
--        DESTINATION lib
--        COMPONENT DEV)
- 
+-
  #############################
  # Packaging steps
+ #############################
+@@ -53,8 +43,8 @@ if (DEFINED ROCM_PATCH_VERSION)
+   set(OPENCL_AMD_ICD_FILE "amdocl64_${ROCM_PATCH_VERSION}.icd")
+ endif()
+ 
+-get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION)
+-get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION)
++#get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION)
++#get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION)
+ 
+ #Set Package Version
+ set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
+diff --git a/khronos/icd/CMakeLists.txt b/khronos/icd/CMakeLists.txt
+index 4bafa86..987dd6f 100644
 --- a/khronos/icd/CMakeLists.txt	2020-06-07 16:05:32.425022904 +0200
 +++ b/khronos/icd/CMakeLists.txt	2020-06-07 16:06:03.273022786 +0200
-@@ -132,7 +132,7 @@
+@@ -132,7 +132,7 @@ if (BUILD_TESTING)
      add_subdirectory (test)
  endif()
  
@@ -61,3 +57,14 @@ Do not build and install libOpenCL.
 +#    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
 +#    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
 +#    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt
+index 48353eb..cd1e7c1 100644
+--- a/packaging/CMakeLists.txt
++++ b/packaging/CMakeLists.txt
+@@ -17,5 +17,5 @@ install(DIRECTORY ${CMAKE_SOURCE_DIR}/khronos/headers/opencl2.2/CL
+         PATTERN cl_dx9_media_sharing.h EXCLUDE
+         PATTERN cl_egl.h EXCLUDE )
+ 
+-install(TARGETS OpenCL DESTINATION lib COMPONENT icd )
++#install(TARGETS OpenCL DESTINATION lib COMPONENT icd )
+ install(FILES ${CMAKE_SOURCE_DIR}/khronos/icd/LICENSE DESTINATION share/doc/rocm-ocl-icd COMPONENT icd)
diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm
index 2ccc6d3251..6c1a83cc88 100644
--- a/gnu/packages/rocm.scm
+++ b/gnu/packages/rocm.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2021 Lars-Dominik Braun <lars@6xq.net>
+;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;;
 ;;; 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
@@ -18,21 +19,25 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix utils)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (gnu packages)
   #: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 opencl)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages version-control)
-  #:use-module (gnu packages vim))
+  #:use-module (gnu packages vim)
+  #:use-module (gnu packages xdisorg))
 
 ;; 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 "4.3.0")
+(define %rocm-version "5.1.3")
 
 (define-public rocm-cmake
   (package
@@ -46,7 +51,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0sic2zxmzl2pb2865vvq55mbpcr8pby8v19pjdlm08pypqw5h6h6"))))
+                "1bn3l04qnc1ls9abs15s1sgsrwmkfk0g8jgdjqshrcr3ab8ffcpf"))))
     (build-system cmake-build-system)
     (arguments `(#:tests? #f)) ; Tests try to use git commit
     (native-inputs (list git))
@@ -68,7 +73,7 @@ tasks needed for the ROCM software stack.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1f8xsylfajpxqjk6ayjnrry53y8b0a6lh9d72pd41nffxfyzvw3w"))))
+                "07vkrxxc49i72r0lcl6dap0qcw1bignsw920rj4h1mac3bwa8q4j"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
@@ -93,7 +98,7 @@ oclc, ocml, ockl, opencl, hip and hc.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0bakbm7shr0l67lph44b5cnc9psd6rivg1mp79qizaawkn380x60"))
+                "1achb3216cbm7x2d05xj7j7ivn24y11q2d2p5whw3v4ykgfqql6f"))
               (patches
                (search-patches "rocm-comgr-3.1.0-dependencies.patch"))))
     (build-system cmake-build-system)
@@ -125,10 +130,11 @@ AMDGPU code objects.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ffqhrrscmcydfqf61dk58d7nnxk6n2k68jhqfj7a4hvhlphb74f"))))
+                "0k5bchq1jhgraqrhj9q47b45n33wnd2ipwrrj39q51jzxmyyzxj2"))))
     (build-system cmake-build-system)
     (arguments `(#:tests? #f)) ; Not sure how to run tests.
-    (inputs (list numactl))
+    (inputs (list libdrm numactl))
+    (native-inputs (list `(,gcc "lib") pkg-config))
     (home-page "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface")
     (synopsis "Radeon Open Compute Thunk Interface")
     (description "User-mode API interfaces used to interact with the ROCk
@@ -147,7 +153,7 @@ driver.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0jqfqf5ymwlbpac065bhigmkgsk7mbyimdgvca7ymn38wpf80ka7"))))
+                "1j1cy64w13plgsy20mir4xm6x4xnwkyil3g03xnda6ynhd7bkhv7"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
@@ -174,10 +180,23 @@ driver.")
 applications to launch compute kernels to available HSA ROCm kernel agents.")
     (license license:ncsa)))
 
-(define-public rocclr
+;; This is the source only for ROCclr as from v4.5 it should only be built as
+;; part of a client.  A warning is output if attempting to build stand-alone
+;; and there is no install.  The previous version is kept as rocclr-4.
+(define rocclr-src
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/ROCm-Developer-Tools/ROCclr.git")
+          (commit (string-append "rocm-" %rocm-version))))
+    (sha256
+     (base32
+      "0x1frzpz9j1s516vscbdm9g5cqirvv5w7wmq2kyljcygnci7yqar"))))
+
+(define-public rocclr-4
   (package
-    (name "rocclr")
-    (version %rocm-version)
+    (name "rocclr-4")
+    (version "4.3.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -232,39 +251,41 @@ allows runtimes to work on Windows as well as on Linux without much effort.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1cglpiaj3ny1z74ssmy6j63vj92sfy4q38ix6qsga0mg3b2wvqz3"))
+                "1rirvc8h0ahicw1vw4js4jq5gw25x47gmg3gczmyz97c72wvgfiv"))
               (patches
                (search-patches
-                "rocm-opencl-runtime-3.10.0-includes.patch"
                 ;; Do not install libOpenCL, which ocl-icd provides.
                 "rocm-opencl-runtime-4.3-noopencl.patch"
                 ;; Guix includes a program clinfo already.
-                "rocm-opencl-runtime-4.3-noclinfo.patch"
-                ;; cltrace linking fails, remove it.
-                "rocm-opencl-runtime-4.3-nocltrace.patch"))))
+                "rocm-opencl-runtime-4.3-noclinfo.patch"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f ; Not sure how to run them.
-       #:phases
-       (modify-phases %standard-phases
-         (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* ((out (assoc-ref outputs "out"))
-                    (vendors (string-append out "/etc/OpenCL/vendors"))
-                    (sopath (string-append out "/lib/libamdocl64.so")))
-               (mkdir-p vendors)
-               (with-output-to-file (string-append vendors "/amdocl64.icd")
-                 (lambda _ (display sopath)))))))))
+     (list
+      #:tests? #f ; Not sure how to run them.
+      #:configure-flags
+      #~(list
+         (string-append "-DAMD_OPENCL_PATH=" #$(package-source this-package))
+         ;; The ROCclr source is needed to build the runtime.
+         (string-append "-DROCCLR_PATH=" #$rocclr-src)
+         (string-append "-DROCM_PATH=" #$output))
+      #:phases
+      #~(modify-phases %standard-phases
+          (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 mesa
-           rocm-comgr
-           rocr-runtime
-           rocclr
+     (list glew
+           mesa
+           numactl
            opencl-icd-loader
-           glew))
-    (native-inputs `())
+           rocm-comgr
+           rocr-runtime))
     (synopsis "ROCm OpenCL Runtime")
     (description "OpenCL 2.0 compatible language runtime, supporting offline
 and in-process/in-memory compilation.")
@@ -282,7 +303,7 @@ and in-process/in-memory compilation.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0pcm308vwkjrwnrk507iya20mkil8j0vx699w9jk2gas4n4jvkcz"))))
+                "0hdfbvn55h5lk5s8vqlmri5r94vlas8v8yjxwd9d70igslk0kr67"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ; No tests.
@@ -314,7 +335,7 @@ available to ROCm and show their properties.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0a14kwkjpiyljgzxblh031qibn6xgbxp6m12zdy1pmwb2c44jjmm"))))
+                "0rnn2ms68mvzpcp31dk304sfqnv352i7vb48k7rw3qjahhrjm48c"))))
     (build-system cmake-build-system)
     (arguments `(#:tests? #f)) ; No tests.
     (inputs (list rocr-runtime))