Date: Wednesday, December 28, 2022 @ 12:38:02 Author: tpkessler Revision: 1370723
Migrate rocfft from AUR to community Added: rocfft/ rocfft/repos/ rocfft/trunk/ rocfft/trunk/PKGBUILD rocfft/trunk/test.cpp rocfft/trunk/test.sh ----------+ PKGBUILD | 40 ++++++++++++++++++++++++++++++++++++ test.cpp | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ test.sh | 5 ++++ 3 files changed, 112 insertions(+) Added: rocfft/trunk/PKGBUILD =================================================================== --- rocfft/trunk/PKGBUILD (rev 0) +++ rocfft/trunk/PKGBUILD 2022-12-28 12:38:02 UTC (rev 1370723) @@ -0,0 +1,40 @@ +# Maintainer: Torsten Keßler <tpkessler at archlinux dot org> +# Contributor: Jakub Okoński <[email protected]> +# Contributor: Markus Näther <[email protected]> +pkgname=rocfft +pkgver=5.4.1 +pkgrel=2 +pkgdesc='Next generation FFT implementation for ROCm' +arch=('x86_64') +url='https://rocfft.readthedocs.io/en/latest/library.html' +license=('MIT') +depends=('hip' 'python') +makedepends=('rocm-cmake') +_git='https://github.com/ROCmSoftwarePlatform/rocFFT' +source=("$pkgname-$pkgver.tar.gz::$_git/archive/rocm-$pkgver.tar.gz") +sha256sums=('b2383cb6dfac285bae37733356dbd0f56b008f14db4b5a05bea8d28624cccffa') +options=(!lto) +_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/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/rocfft.conf" + + install -Dm644 "$srcdir/$_dirname/LICENSE.md" "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} Added: rocfft/trunk/test.cpp =================================================================== --- rocfft/trunk/test.cpp (rev 0) +++ rocfft/trunk/test.cpp 2022-12-28 12:38:02 UTC (rev 1370723) @@ -0,0 +1,67 @@ +#include <rocfft/rocfft.h> +#include <hip/hip_runtime.h> +#include <hip/hip_vector_types.h> +#include <vector> +#include <numeric> +#include <cmath> +#include <iostream> + +int main() +{ + size_t size = 1024 * 1024; + + rocfft_setup(); + + float2 *x; + hipMalloc((void**)&x, sizeof *x * size); + + + std::vector<float2> xin(size); + for(auto &xx: xin){ + xx.x = 1.0f; + xx.y = 0.0f; + } + hipMemcpy(x, xin.data(), sizeof *x * size, hipMemcpyHostToDevice); + + rocfft_plan plan = nullptr; + size_t len = size; + rocfft_plan_create(&plan, rocfft_placement_inplace, + rocfft_transform_type_complex_forward, rocfft_precision_single, + 1, &len, 1, nullptr); + size_t work_size = 0; + rocfft_plan_get_work_buffer_size(plan, &work_size); + void *work; + rocfft_execution_info info = nullptr; + if(work_size){ + rocfft_execution_info_create(&info); + hipMalloc((void**)&work, work_size); + rocfft_execution_info_set_work_buffer(info, work, work_size); + } + rocfft_execute(plan, (void**)&x, nullptr, info); + + std::vector<float2> xout(size); + hipMemcpy(xout.data(), x, sizeof *x * size, hipMemcpyDeviceToHost); + + std::vector<float2> xref(size); + for(auto &xx: xref){ + xx.x = 0.0f; + xx.y = 0.0f; + } + xref[0].x = 1.0f * size; + + float tol = 0.001f; + for(size_t i = 0; i < size; i++){ + if(std::abs(xref[i].x - xout[i].x) + std::abs(xref[i].y - xout[i].y) > tol){ + std::cout << "Element mismatch at index " << i << "\n"; + std::cout << "Expected: " << xref[i].x << " " << xref[i].y << "\n"; + std::cout << "Actual : " << xout[i].x << " " << xout[i].y << "\n"; + return 1; + } + } + + std::cout << "TESTS PASSED!" << std::endl; + + hipFree(x); + rocfft_plan_destroy(plan); + rocfft_cleanup(); +} Added: rocfft/trunk/test.sh =================================================================== --- rocfft/trunk/test.sh (rev 0) +++ rocfft/trunk/test.sh 2022-12-28 12:38:02 UTC (rev 1370723) @@ -0,0 +1,5 @@ +#! /usr/bin/env sh + +OUT=$(mktemp -d) +/opt/rocm/bin/hipcc -o "$OUT"/test test.cpp -lrocfft +"$OUT"/test Property changes on: rocfft/trunk/test.sh ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property
