Date: Tuesday, December 27, 2022 @ 18:34:39
  Author: tpkessler
Revision: 1368853

archrelease: copy trunk to community-testing-x86_64

Added:
  rocblas/repos/community-testing-x86_64/
  rocblas/repos/community-testing-x86_64/PKGBUILD
    (from rev 1368852, rocblas/trunk/PKGBUILD)
  rocblas/repos/community-testing-x86_64/test.cpp
    (from rev 1368852, rocblas/trunk/test.cpp)
  rocblas/repos/community-testing-x86_64/test.sh
    (from rev 1368852, rocblas/trunk/test.sh)

----------+
 PKGBUILD |   52 +++++++++++++++++++++++++++++++++++++++++++++
 test.cpp |   70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 test.sh  |    5 ++++
 3 files changed, 127 insertions(+)

Copied: rocblas/repos/community-testing-x86_64/PKGBUILD (from rev 1368852, 
rocblas/trunk/PKGBUILD)
===================================================================
--- community-testing-x86_64/PKGBUILD                           (rev 0)
+++ community-testing-x86_64/PKGBUILD   2022-12-27 18:34:39 UTC (rev 1368853)
@@ -0,0 +1,52 @@
+# Maintainer: Torsten Keßler <tpkessler at archlinux dot org>
+# Contributor: Markus Näther <[email protected]>
+pkgname=rocblas
+pkgver=5.4.1
+pkgrel=2
+pkgdesc='Next generation BLAS implementation for ROCm platform'
+arch=('x86_64')
+url='https://rocblas.readthedocs.io/en/latest'
+license=('MIT')
+depends=('hip' 'openmp')
+makedepends=('rocm-cmake' 'python' 'python-virtualenv' 'python-pyaml' 
'python-wheel'
+             'perl-file-which' 'python-msgpack' 'msgpack-cxx' 'gcc-fortran')
+_rocblas='https://github.com/ROCmSoftwarePlatform/rocBLAS'
+_tensile='https://github.com/ROCmSoftwarePlatform/Tensile'
+source=("$pkgname-$pkgver.tar.gz::$_rocblas/archive/rocm-$pkgver.tar.gz"
+        
"$pkgname-tensile-$pkgver.tar.gz::$_tensile/archive/refs/tags/rocm-$pkgver.tar.gz")
+sha256sums=('2f6d30b025306ba5f378154eb0494ac9260190120d085b67c3f499e7d2b6a70b'
+            '6bcc08426c14c203c799c93815293c2a17d5b656936536dcece1302d53816cef')
+options=(!lto)
+_dirname="$(basename "$_rocblas")-$(basename "${source[0]}" ".tar.gz")"
+_tensile_dir="$(basename "$_tensile")-$(basename "${source[1]}" ".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
+  PATH="/opt/rocm/llvm/bin:/opt/rocm/bin:${PATH}" \
+  CXXFLAGS="${CXXFLAGS} -fcf-protection=none" \
+  cmake \
+    -Wno-dev \
+    -B build \
+    -S "$_dirname" \
+    -DCMAKE_BUILD_TYPE=None \
+    -DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc \
+    -DCMAKE_INSTALL_PREFIX=/opt/rocm \
+    -DCMAKE_PREFIX_PATH=/opt/rocm/llvm/lib/cmake/llvm \
+    -Damd_comgr_DIR=/opt/rocm/lib/cmake/amd_comgr \
+    -DBUILD_WITH_TENSILE=ON \
+    -DTensile_LIBRARY_FORMAT=msgpack \
+    -DTensile_CODE_OBJECT_VERSION=V3 \
+    -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake \
+    -DTensile_TEST_LOCAL_PATH="$srcdir/$_tensile_dir"
+  cmake --build build
+}
+
+package() {
+  DESTDIR="$pkgdir" cmake --install build
+
+  echo "/opt/rocm/$pkgname/lib" > "$pkgname.conf"
+  install -Dm644 "$pkgname.conf" "$pkgdir/etc/ld.so.conf.d/rocblas.conf"
+
+  install -Dm644 "$_dirname/LICENSE.md" 
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}

Copied: rocblas/repos/community-testing-x86_64/test.cpp (from rev 1368852, 
rocblas/trunk/test.cpp)
===================================================================
--- community-testing-x86_64/test.cpp                           (rev 0)
+++ community-testing-x86_64/test.cpp   2022-12-27 18:34:39 UTC (rev 1368853)
@@ -0,0 +1,70 @@
+#include <rocblas/rocblas.h>
+#include <hip/hip_runtime.h>
+#include <vector>
+#include <random>
+#include <algorithm>
+#include <cmath>
+#include <iostream>
+
+int main()
+{
+    size_t n = 128;
+    size_t size = n * n;
+
+    std::random_device rd;
+    std::mt19937 gen(rd());
+    std::uniform_real_distribution<float> dist(-1.0, 1.0);
+    auto myrand = [&](){return dist(gen);};
+
+    float *x;
+    float *y;
+    float *z;
+    hipMalloc((void**)&x, sizeof *x * size);
+    hipMalloc((void**)&y, sizeof *y * size);
+    hipMalloc((void**)&z, sizeof *z * size);
+
+    std::vector<float> xin(size);
+    std::vector<float> yin(size);
+
+    std::generate(xin.begin(), xin.end(), myrand);
+    std::generate(yin.begin(), yin.end(), myrand);
+
+    hipMemcpy(x, xin.data(), sizeof *x * size, hipMemcpyHostToDevice);
+    hipMemcpy(y, yin.data(), sizeof *x * size, hipMemcpyHostToDevice);
+
+    rocblas_handle handle;
+    rocblas_create_handle(&handle);
+
+    float alpha = 15.412f;
+    float beta = 0.0f;
+    rocblas_sgemm(handle, rocblas_operation_none, rocblas_operation_none,
+        n, n, n, &alpha, x, n, y, n, &beta, z, n);
+
+    std::vector<float> zout(size);
+    hipMemcpy(zout.data(), z, sizeof *z * size, hipMemcpyDeviceToHost);
+
+    for(size_t j = 0; j < n; j++){
+        for(size_t i = 0; i < n; i++){
+            for(size_t k = 0; k < n; k++){
+                zout[i + j * n] -= alpha * xin[i + k * n] * yin[k + j * n];
+            }
+        }
+    }
+
+    float tol = 0.001f;
+    for(size_t i = 0; i < size; i++){
+        if(std::abs(zout[i]) > tol){
+            std::cout << "Element mismatch at index " << i << "\n";
+            std::cout << "Expected: 0\n";
+            std::cout << "Actual  : " << zout[i] << "\n";
+            return 1;
+        }
+    }
+
+    std::cout << "TESTS PASSED!" << std::endl;
+
+    hipFree(x);
+    hipFree(y);
+    hipFree(z);
+    rocblas_destroy_handle(handle);
+}

Copied: rocblas/repos/community-testing-x86_64/test.sh (from rev 1368852, 
rocblas/trunk/test.sh)
===================================================================
--- community-testing-x86_64/test.sh                            (rev 0)
+++ community-testing-x86_64/test.sh    2022-12-27 18:34:39 UTC (rev 1368853)
@@ -0,0 +1,5 @@
+#! /usr/bin/env sh
+
+OUT=$(mktemp -d)
+/opt/rocm/bin/hipcc -o "$OUT"/test test.cpp -lrocblas
+"$OUT"/test

Reply via email to