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>