summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorDavid Elsing <david.elsing@posteo.net>2026-02-03 21:33:21 +0100
committerLudovic Courtès <ludo@gnu.org>2026-02-10 23:46:36 +0100
commit9f2f9101b4ef7f4df966b8731948adca48c7359c (patch)
tree99a290918db3d304b839aeb6fb3f404ed7fec49f /gnu
parentfa9a13d7e0c537e6d6463d79421e7d6395e15b53 (diff)
gnu: Add rocprim.
Adapted from the Guix-HPC channel (https://gitlab.inria.fr/guix-hpc/guix-hpc). * gnu/packages/rocm-libs.scm (rocprim): New variable. * gnu/packages/patches/rocprim-placement-new-delete.patch: New patch. * gnu/local.mk (dist_patch_DATA): Register it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/patches/rocprim-placement-new-delete.patch17
-rw-r--r--gnu/packages/rocm-libs.scm30
3 files changed, 48 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index bf36a90139c..576cc1ee4b0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2292,6 +2292,7 @@ dist_patch_DATA = \
%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/rocprim-placement-new-delete.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 \
diff --git a/gnu/packages/patches/rocprim-placement-new-delete.patch b/gnu/packages/patches/rocprim-placement-new-delete.patch
new file mode 100644
index 00000000000..363e9079238
--- /dev/null
+++ b/gnu/packages/patches/rocprim-placement-new-delete.patch
@@ -0,0 +1,17 @@
+diff --git a/rocprim/include/rocprim/config.hpp b/rocprim/include/rocprim/config.hpp
+index 2dd3e55..36acff1 100644
+--- a/rocprim/include/rocprim/config.hpp
++++ b/rocprim/include/rocprim/config.hpp
+@@ -27,6 +27,12 @@
+ #include <hip/hip_fp16.h>
+ #include <hip/hip_runtime.h>
+
++__device__ _GLIBCXX_NODISCARD inline void* operator new(std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT
++{
++ return __p;
++}
++__device__ inline void operator delete (void*, void*) _GLIBCXX_USE_NOEXCEPT {}
++
+ // This file is generated by CMake. It's safe to ignore this when parsed by clangd.
+ #ifndef _CLANGD
+ #include "rocprim_version.hpp"
diff --git a/gnu/packages/rocm-libs.scm b/gnu/packages/rocm-libs.scm
index ac0b9512850..00af86f0397 100644
--- a/gnu/packages/rocm-libs.scm
+++ b/gnu/packages/rocm-libs.scm
@@ -469,3 +469,33 @@ functionalities beyond a traditional BLAS library.")
(description "rocBLAS is the ROCm Basic Linear Algebra Subprograms
(BLAS) library. It is implemented in the HIP programming language.")
(license (list license:expat license:bsd-3))))
+
+(define-public rocprim
+ (package
+ (name "rocprim")
+ (version %rocm-version)
+ (source
+ (rocm-library-source
+ "rocprim"
+ ;; XXX: With libstdc++, the placement new operator is not defined for
+ ;; device code.
+ #:patches (search-patches "rocprim-placement-new-delete.patch")))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:build-type "Release"
+ #:tests? #f ; requires GPU
+ #:configure-flags
+ #~(list "-DCMAKE_CXX_COMPILER=hipcc"
+ #$(string-append "-DAMDGPU_TARGETS="
+ (current-amd-gpu-targets-string)))))
+ (inputs (list rocm-hip-runtime))
+ (native-inputs (list rocm-cmake rocm-toolchain))
+ (properties `((amd-gpu-targets . ,%default-amd-gpu-targets)))
+ (home-page %rocm-libraries-url)
+ (synopsis
+ "Header-only library providing HIP parallel primitives")
+ (description
+ "The rocPRIM is a header-only library providing HIP parallel primitives
+for developing performant GPU-accelerated code on the AMD ROCm platform.")
+ (license license:expat)))