sci-libs/hipFFT: ROCm FFT marshalling library

hipFFT is the front end of rocFFT, and is dependency of ROCm
supported math/DL frameworks like pytorch.

Bug: https://bugs.gentoo.org/705712
Closes: https://github.com/gentoo/gentoo/pull/22804
Package-Manager: Portage-3.0.20, Repoman-3.0.3
Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com>
Signed-off-by: Benda Xu <heroxbd@gentoo.org>
This commit is contained in:
YiyangWu
2021-08-26 15:33:50 +08:00
committed by Benda Xu
parent 4b75d7ac93
commit 02dc3ee11c
6 changed files with 185 additions and 0 deletions

2
sci-libs/hipFFT/Manifest Normal file
View File

@@ -0,0 +1,2 @@
DIST hipFFT-rocm-4.3.0.tar.gz 83355 BLAKE2B ee99b4cb685cbb846084d8a7c77982d75cf0d1597f9270260284bb26ae00702a31dd4d5ad9ae1885ab631c390f65c0f584f302be189701ba4f0dd9061b1bba5a SHA512 0d3100b054ff485eae06b13b8c568626b8e3a3286f36012c5a5f9bb4918e03c30c687a2714049bd797f6c3973f1730ad0936f02ad044cde1663c9c5750bbcf40
DIST rocFFT-4.3.0.tar.gz 840748 BLAKE2B 236a5faa930751d35e501a9a32ecc8b4075448ef21a0ffb0bb7ec04f4ed1cb67b908aa153b5b424e0823d3e306cf375d7c01a77d687220ed79de6d374037e003 SHA512 765d41e4018a04a53e847c03de80eec830d3e8766187fb8cb493624afa2673175347c16e6eeeebd4ad7d88bb866e58f7e572708f22238723c710b98565a0cd3d

View File

@@ -0,0 +1,11 @@
diff --color -uprN orig/clients/rider/rider.cpp hipFFT-rocm-4.3.0/clients/rider/rider.cpp
--- orig/clients/rider/rider.cpp 2021-08-26 15:05:32.267279103 +0800
+++ hipFFT-rocm-4.3.0/clients/rider/rider.cpp 2021-08-26 15:05:48.795279212 +0800
@@ -22,6 +22,7 @@
#include <cstddef>
#include <iostream>
#include <numeric>
+#include <complex>
#include <random>
#include <sstream>

View File

@@ -0,0 +1,42 @@
diff --color -uprN orig/CMakeLists.txt hipFFT-rocm-4.3.0/CMakeLists.txt
--- orig/CMakeLists.txt 2021-08-26 14:38:31.051268348 +0800
+++ hipFFT-rocm-4.3.0/CMakeLists.txt 2021-08-26 14:38:42.655268425 +0800
@@ -143,7 +143,7 @@ endif( )
add_subdirectory( library )
# force library install path to lib (CentOS 7 defaults to lib64)
-set(CMAKE_INSTALL_LIBDIR "lib" CACHE INTERNAL "Installation directory for libraries" FORCE)
+set(CMAKE_INSTALL_LIBDIR "lib64" CACHE INTERNAL "Installation directory for libraries" FORCE)
# Build clients of the library
if( BUILD_CLIENTS )
diff --color -uprN orig/library/CMakeLists.txt hipFFT-rocm-4.3.0/library/CMakeLists.txt
--- orig/library/CMakeLists.txt 2021-08-26 14:38:31.051268348 +0800
+++ hipFFT-rocm-4.3.0/library/CMakeLists.txt 2021-08-26 14:39:21.919268686 +0800
@@ -77,7 +77,7 @@ target_include_directories(hipfft
PUBLIC $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/library/include>
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
$<BUILD_INTERFACE:${HIP_INCLUDE_DIRS}>
- $<INSTALL_INTERFACE:include>
+ $<INSTALL_INTERFACE:include/hipfft>
)
if(BUILD_WITH_LIB STREQUAL "CUDA")
@@ -112,13 +112,13 @@ if( ROCM_FOUND )
rocm_install_targets( TARGETS hipfft
INCLUDE
${CMAKE_SOURCE_DIR}/library/include
- ${CMAKE_BINARY_DIR}/include
- PREFIX hipfft )
+ ${CMAKE_BINARY_DIR}/include )
+ #PREFIX hipfft )
rocm_export_targets( TARGETS hip::hipfft
- PREFIX hipfft
+ #PREFIX hipfft
DEPENDS PACKAGE hip
NAMESPACE hip:: )
- rocm_install_symlink_subdir( hipfft )
+ #rocm_install_symlink_subdir( hipfft )
# During transition to standalone hipFFT repository, don't install

View File

@@ -0,0 +1,33 @@
diff --color -uprN orig/cmake/dependencies.cmake hipFFT-rocm-4.3.0/cmake/dependencies.cmake
--- orig/cmake/dependencies.cmake 2021-08-26 14:48:57.867272506 +0800
+++ hipFFT-rocm-4.3.0/cmake/dependencies.cmake 2021-08-26 14:51:02.571273334 +0800
@@ -21,9 +21,6 @@
#
# #############################################################################
-# Git
-find_package(Git REQUIRED)
-
# HIP
if(NOT BUILD_WITH_LIB STREQUAL "CUDA")
find_package(hip REQUIRED)
diff --color -uprN orig/CMakeLists.txt hipFFT-rocm-4.3.0/CMakeLists.txt
--- orig/CMakeLists.txt 2021-08-26 14:48:57.867272506 +0800
+++ hipFFT-rocm-4.3.0/CMakeLists.txt 2021-08-26 14:49:15.247272622 +0800
@@ -117,16 +117,6 @@ message(STATUS "BUILD_WITH_COMPILER = "
include(cmake/dependencies.cmake)
if( BUILD_CLIENTS_TESTS )
- if( GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git" )
- message(STATUS "rocFFT submodule update")
- execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- RESULT_VARIABLE GIT_SUBMOD_RESULT)
- if( NOT GIT_SUBMOD_RESULT EQUAL "0" )
- message(FATAL_ERROR "git submodule update --init --recursive failed with ${GIT_SUBMOD_RESULT}, please checkout submodules manually.")
- endif( )
- endif( )
-
if( NOT EXISTS "${PROJECT_SOURCE_DIR}/rocFFT/CMakeLists.txt" )
message(FATAL_ERROR "The rocFFT submodule is not present! Please update git submodules and try again.")
endif( )

View File

@@ -0,0 +1,75 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit cmake flag-o-matic
DESCRIPTION="CU / ROCM agnostic hip FFT implementation"
HOMEPAGE="https://github.com/ROCmSoftwarePlatform/hipFFT"
SRC_URI="https://github.com/ROCmSoftwarePlatform/hipFFT/archive/refs/tags/rocm-${PV}.tar.gz -> hipFFT-rocm-${PV}.tar.gz
test? ( https://github.com/ROCmSoftwarePlatform/rocFFT/archive/rocm-${PV}.tar.gz -> rocFFT-${PV}.tar.gz )"
LICENSE="MIT"
KEYWORDS="~amd64"
IUSE="benchmark test"
SLOT="0/$(ver_cut 1-2)"
RESTRICT="!test? ( test )"
RDEPEND="dev-util/hip:${SLOT}
sci-libs/rocFFT:${SLOT}"
DEPEND="${RDEPEND}"
BDEPEND="
test? (
dev-cpp/gtest
dev-libs/boost
)"
S="${WORKDIR}/hipFFT-rocm-${PV}"
PATCHES=(
"${FILESDIR}/${PN}-4.3.0-gentoo-install-locations.patch"
"${FILESDIR}/${PN}-4.3.0-remove-git-dependency.patch"
"${FILESDIR}/${PN}-4.3.0-add-complex-header.patch"
)
src_prepare() {
use test && rmdir rocFFT && ln -s ../rocFFT-rocm-${PV} rocFFT
eapply_user
cmake_src_prepare
}
src_configure() {
# Grant access to the device
addwrite /dev/kfd
addpredict /dev/dri/
local mycmakeargs=(
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr"
-DCMAKE_INSTALL_INCLUDEDIR="include/hipfft"
-DCMAKE_SKIP_RPATH=ON
-DBUILD_CLIENTS_TESTS=$(usex test ON OFF)
-DBUILD_CLIENTS_RIDER=$(usex benchmark ON OFF)
${AMDGPU_TARGETS+-DAMDGPU_TARGETS="${AMDGPU_TARGETS}"}
-D__skip_rocmclang="ON" ## fix cmake-3.21 configuration issue caused by officialy support programming language "HIP"
)
cmake_src_configure
}
src_test () {
addwrite /dev/kfd
addpredict /dev/dri
cd "${BUILD_DIR}/clients/staging" || die
einfo "Running hipfft-test"
LD_LIBRARY_PATH=${BUILD_DIR}/library ./hipfft-test || die
}
src_install() {
cmake_src_install
if use benchmark; then
cd "${BUILD_DIR}/clients/staging" || die
dobin hipfft-rider
fi
}

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>sci@gentoo.org</email>
<name>Gentoo Science Project</name>
</maintainer>
<maintainer type="person" proxied="yes">
<email>gentoo@holzke.net</email>
<name>Wilfried Holzke</name>
</maintainer>
<maintainer type="person" proxied="yes">
<email>xgreenlandforwyy@gmail.com</email>
<name>Yiyang Wu</name>
</maintainer>
<upstream>
<remote-id type="github">ROCmSoftwarePlatform/hipFFT</remote-id>
</upstream>
<use>
<flag name="benchmark">Build and install benchmark programs hipfft-rider.</flag>
</use>
</pkgmetadata>