Date: Saturday, January 7, 2023 @ 21:27:14
Author: tpkessler
Revision: 1381791
archrelease: copy trunk to community-testing-x86_64
Added:
rccl/repos/community-testing-x86_64/
rccl/repos/community-testing-x86_64/PKGBUILD
(from rev 1381790, rccl/trunk/PKGBUILD)
rccl/repos/community-testing-x86_64/test.cpp
(from rev 1381790, rccl/trunk/test.cpp)
rccl/repos/community-testing-x86_64/test.sh
(from rev 1381790, rccl/trunk/test.sh)
----------+
PKGBUILD | 40 +++++++++++++++++++++++++++++++
test.cpp | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
test.sh | 5 +++
3 files changed, 123 insertions(+)
Copied: rccl/repos/community-testing-x86_64/PKGBUILD (from rev 1381790,
rccl/trunk/PKGBUILD)
===================================================================
--- community-testing-x86_64/PKGBUILD (rev 0)
+++ community-testing-x86_64/PKGBUILD 2023-01-07 21:27:14 UTC (rev 1381791)
@@ -0,0 +1,40 @@
+# Maintainer: Torsten Keßler <tpkessler at archlinux dot org>
+# Contriubtor: Markus Näther <[email protected]>
+# Contributor: acxz <akashpatel2008 at yahoo dot com>
+
+pkgname=rccl
+pkgver=5.4.1
+pkgrel=2
+pkgdesc="ROCm Communication Collectives Library"
+arch=('x86_64')
+url='https://rccl.readthedocs.io/en/rocm-5.4.1/'
+license=('custom')
+depends=('hip' 'rocm-smi-lib')
+makedepends=('rocm-cmake' 'python')
+_git='https://github.com/ROCmSoftwarePlatform/rccl'
+source=("$pkgname-$pkgver.tar.gz::$_git/archive/rocm-$pkgver.tar.gz")
+sha256sums=('d423921c69b3d4c522c109c2f17ec1703f0fa573e2999564803da2fe788f3a00')
+_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 \
+ -B build \
+ -S "$_dirname" \
+ -DCMAKE_BUILD_TYPE=None \
+ -DCMAKE_CXX_COMPILER=/opt/rocm/hip/bin/hipcc \
+ -DCMAKE_INSTALL_PREFIX=/opt/rocm
+ 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/$pkgname.conf"
+
+ install -Dm644 "$srcdir/$_dirname/LICENSE.txt"
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
Copied: rccl/repos/community-testing-x86_64/test.cpp (from rev 1381790,
rccl/trunk/test.cpp)
===================================================================
--- community-testing-x86_64/test.cpp (rev 0)
+++ community-testing-x86_64/test.cpp 2023-01-07 21:27:14 UTC (rev 1381791)
@@ -0,0 +1,78 @@
+#include <stdio.h>
+#include <hip/hip_runtime.h>
+#include <rccl/rccl.h>
+#include <math.h>
+
+#define NDEV 1
+
+int main(int argc, char* argv[])
+{
+ ncclComm_t comms[NDEV];
+
+ int size = 100;
+ int devs[NDEV];
+ for(int i = 0; i < NDEV; i++){
+ devs[i] = i;
+ }
+
+ float* hsend = (float*) malloc(size * sizeof *hsend);
+ float* hrecv = (float*) malloc(size * sizeof *hrecv);
+
+ for (int i = 0; i < size; i++) {
+ hsend[i] = 1.0f;
+ hrecv[i] = 0.0f;
+ }
+
+ float* sendbuff[NDEV];
+ float* recvbuff[NDEV];
+ hipStream_t s[NDEV];
+ for (int i = 0; i < NDEV; i++) {
+ hipSetDevice(i);
+ hipMalloc(sendbuff + i, size * sizeof(float));
+ hipMalloc(recvbuff + i, size * sizeof(float));
+ hipMemcpy(sendbuff[i], hsend, size * sizeof *hsend, hipMemcpyHostToDevice);
+ hipMemcpy(recvbuff[i], hrecv, size * sizeof *hrecv, hipMemcpyHostToDevice);
+ hipStreamCreate(s+i);
+ hipDeviceSynchronize();
+ }
+
+ ncclCommInitAll(comms, NDEV, devs);
+
+ ncclGroupStart();
+ for (int i = 0; i < NDEV; i++)
+ ncclAllReduce(&sendbuff[i][0], &recvbuff[i][0], size, ncclFloat, ncclSum,
+ comms[i], s[i]);
+ ncclGroupEnd();
+
+
+ for (int i = 0; i < NDEV; i++) {
+ hipSetDevice(i);
+ hipStreamSynchronize(s[i]);
+ }
+
+ hipSetDevice(0);
+ hipMemcpy(hrecv, recvbuff[0], size * sizeof *hrecv, hipMemcpyDeviceToHost);
+ hipDeviceSynchronize();
+ for (int i = 0; i < size; i++) {
+ if(fabsf(hsend[i] - hrecv[i]) > 0.001f){
+ printf("At entry %i\n", i);
+ printf("Expected %f\n", hsend[i]);
+ printf("Received %f\n", hrecv[i]);
+ return EXIT_FAILURE;
+ }
+ }
+ printf("TESTS PASSED!\n");
+
+ for (int i = 0; i < NDEV; i++) {
+ hipSetDevice(i);
+ hipFree(sendbuff[i]);
+ hipFree(recvbuff[i]);
+ }
+
+ for(int i = 0; i < NDEV; ++i){
+ ncclCommDestroy(comms[i]);
+ }
+
+ free(hsend);
+ free(hrecv);
+}
Copied: rccl/repos/community-testing-x86_64/test.sh (from rev 1381790,
rccl/trunk/test.sh)
===================================================================
--- community-testing-x86_64/test.sh (rev 0)
+++ community-testing-x86_64/test.sh 2023-01-07 21:27:14 UTC (rev 1381791)
@@ -0,0 +1,5 @@
+#! /usr/bin/env sh
+
+OUT=$(mktemp -d)
+/opt/rocm/bin/hipcc -o "$OUT"/test test.cpp -lrccl
+"$OUT"/test