Date: Monday, December 26, 2022 @ 16:57:07
  Author: tpkessler
Revision: 1368499

Migrate rocprim from AUR to community

Added:
  rocprim/
  rocprim/repos/
  rocprim/trunk/
  rocprim/trunk/PKGBUILD
  rocprim/trunk/test.cpp
  rocprim/trunk/test.sh

----------+
 PKGBUILD |   37 +++++++++++++++++++++++++++++++++++++
 test.cpp |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 test.sh  |    6 ++++++
 3 files changed, 102 insertions(+)

Added: rocprim/trunk/PKGBUILD
===================================================================
--- rocprim/trunk/PKGBUILD                              (rev 0)
+++ rocprim/trunk/PKGBUILD      2022-12-26 16:57:07 UTC (rev 1368499)
@@ -0,0 +1,37 @@
+# Maintainer: Torsten Keßler <tpkessler at archlinux dot org>
+# Contributor: Markus Näther <[email protected]>
+pkgname=rocprim
+pkgver=5.4.1
+pkgrel=2
+pkgdesc='Header-only library providing HIP parallel primitives'
+arch=('x86_64')
+url='https://codedocs.xyz/ROCmSoftwarePlatform/rocPRIM'
+_git='https://github.com/ROCmSoftwarePlatform/rocPRIM'
+license=('MIT')
+depends=('hip')
+makedepends=('rocm-cmake')
+source=("$pkgname-$pkgver.tar.gz::$_git/archive/rocm-$pkgver.tar.gz")
+sha256sums=('3a2e09eb5b65114444feed545c03fbf766af33ace1f14467d4190d63c688ca61')
+_dirname="$(basename "$_git")-$(basename "${source[0]}" ".tar.gz")"
+
+build() {
+  # -fcf-protection is not supported by HIP, see
+  # 
https://docs.amd.com/bundle/ROCm-Compiler-Reference-Guide-v5.4/page/Appendix_A.html
+
+  CXXFLAGS="${CXXFLAGS} -fcf-protection=none" \
+  cmake \
+    -Wno-dev \
+    -S "$_dirname" \
+    -B build \
+    -DCMAKE_BUILD_TYPE=None \
+    -DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc \
+    -DCMAKE_INSTALL_PREFIX=/opt/rocm \
+    -Damd_comgr_DIR=/opt/rocm/lib/cmake/amd_comgr
+  cmake --build build
+}
+
+package() {
+  DESTDIR="$pkgdir" cmake --install build
+
+  install -Dm644 "$_dirname/LICENSE.txt" 
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}

Added: rocprim/trunk/test.cpp
===================================================================
--- rocprim/trunk/test.cpp                              (rev 0)
+++ rocprim/trunk/test.cpp      2022-12-26 16:57:07 UTC (rev 1368499)
@@ -0,0 +1,59 @@
+#include <rocprim/rocprim.hpp>
+#include <vector>
+#include <iostream>
+#include <random>
+#include <algorithm>
+#include <cmath>
+
+int main()
+{
+    auto xpy = [] __device__(float x, float y) -> float{
+        return x + y;
+    };
+
+    size_t size = 1024;
+    std::vector<float> xin(size);
+    std::vector<float> yin(size);
+
+    std::random_device rd;
+    std::mt19937 gen(rd());
+    std::uniform_real_distribution<float> dist(-1.0, 1.0);
+
+    auto myrand = [&]() -> float {return dist(gen);};
+
+    std::generate(xin.begin(), xin.end(), myrand);
+    std::generate(yin.begin(), yin.end(), myrand);
+
+    std::vector<float> zref(size);
+    for(size_t i = 0; i < size; i++){
+        zref[i] = xin[i] + yin[i];
+    }
+
+    float *x;
+    float *y;
+    float *z;
+    hipMalloc((void**)&x, sizeof *x * size);
+    hipMalloc((void**)&y, sizeof *y * size);
+    hipMalloc((void**)&z, sizeof *z * size);
+
+    hipMemcpy(x, xin.data(), sizeof *x * size, hipMemcpyHostToDevice);
+    hipMemcpy(y, yin.data(), sizeof *y * size, hipMemcpyHostToDevice);
+
+    rocprim::transform(x, y, z, size, xpy);
+
+    std::vector<float> zout(size);
+    hipMemcpy(zout.data(), z, sizeof *z * size, hipMemcpyDeviceToHost);
+
+    for(size_t i = 0; i < size; i++){
+        if(std::abs(zout[i] - zref[i]) > 0.001f){
+            std::cout << "Element mismatch at index " << i << "\n";
+            std::cout << "Got " << zout[i] << " but expected " << zref[i] << 
"\n";
+            return 1;
+        }
+    }
+    std::cout << "TESTS PASSED!" << std::endl;
+
+    hipFree(x);
+    hipFree(y);
+    hipFree(z);
+}

Added: rocprim/trunk/test.sh
===================================================================
--- rocprim/trunk/test.sh                               (rev 0)
+++ rocprim/trunk/test.sh       2022-12-26 16:57:07 UTC (rev 1368499)
@@ -0,0 +1,6 @@
+#! /usr/bin/env sh
+
+OUT=$(mktemp -d)
+# rocPRIM uses C++14 extensions but hipcc uses C++11 by default
+/opt/rocm/bin/hipcc -std=gnu++14 -o "$OUT"/test test.cpp
+"$OUT"/test


Property changes on: rocprim/trunk/test.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property

Reply via email to