commit:     02dc3ee11c5815bec6c60fe88285d8d446f7263f
Author:     YiyangWu <xgreenlandforwyy <AT> gmail <DOT> com>
AuthorDate: Thu Aug 26 07:33:50 2021 +0000
Commit:     Benda XU <heroxbd <AT> gentoo <DOT> org>
CommitDate: Tue Nov 30 06:32:54 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=02dc3ee1

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 <AT> gmail.com>
Signed-off-by: Benda Xu <heroxbd <AT> gentoo.org>

 sci-libs/hipFFT/Manifest                           |  2 +
 .../files/hipFFT-4.3.0-add-complex-header.patch    | 11 ++++
 .../hipFFT-4.3.0-gentoo-install-locations.patch    | 42 ++++++++++++
 .../files/hipFFT-4.3.0-remove-git-dependency.patch | 33 ++++++++++
 sci-libs/hipFFT/hipFFT-4.3.0.ebuild                | 75 ++++++++++++++++++++++
 sci-libs/hipFFT/metadata.xml                       | 22 +++++++
 6 files changed, 185 insertions(+)

diff --git a/sci-libs/hipFFT/Manifest b/sci-libs/hipFFT/Manifest
new file mode 100644
index 000000000000..c756438b9383
--- /dev/null
+++ b/sci-libs/hipFFT/Manifest
@@ -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

diff --git a/sci-libs/hipFFT/files/hipFFT-4.3.0-add-complex-header.patch 
b/sci-libs/hipFFT/files/hipFFT-4.3.0-add-complex-header.patch
new file mode 100644
index 000000000000..200481788b95
--- /dev/null
+++ b/sci-libs/hipFFT/files/hipFFT-4.3.0-add-complex-header.patch
@@ -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>
+ 

diff --git a/sci-libs/hipFFT/files/hipFFT-4.3.0-gentoo-install-locations.patch 
b/sci-libs/hipFFT/files/hipFFT-4.3.0-gentoo-install-locations.patch
new file mode 100644
index 000000000000..891774eb5a47
--- /dev/null
+++ b/sci-libs/hipFFT/files/hipFFT-4.3.0-gentoo-install-locations.patch
@@ -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

diff --git a/sci-libs/hipFFT/files/hipFFT-4.3.0-remove-git-dependency.patch 
b/sci-libs/hipFFT/files/hipFFT-4.3.0-remove-git-dependency.patch
new file mode 100644
index 000000000000..563da3085ab9
--- /dev/null
+++ b/sci-libs/hipFFT/files/hipFFT-4.3.0-remove-git-dependency.patch
@@ -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( )

diff --git a/sci-libs/hipFFT/hipFFT-4.3.0.ebuild 
b/sci-libs/hipFFT/hipFFT-4.3.0.ebuild
new file mode 100644
index 000000000000..5f7d3a95f58a
--- /dev/null
+++ b/sci-libs/hipFFT/hipFFT-4.3.0.ebuild
@@ -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
+}

diff --git a/sci-libs/hipFFT/metadata.xml b/sci-libs/hipFFT/metadata.xml
new file mode 100644
index 000000000000..7839d343e80f
--- /dev/null
+++ b/sci-libs/hipFFT/metadata.xml
@@ -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>s...@gentoo.org</email>
+    <name>Gentoo Science Project</name>
+  </maintainer>
+  <maintainer type="person" proxied="yes">
+    <email>gen...@holzke.net</email>
+    <name>Wilfried Holzke</name>
+  </maintainer>
+  <maintainer type="person" proxied="yes">
+    <email>xgreenlandfor...@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>

Reply via email to