mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
sci-libs/rocFFT: add 5.1.3, use rocm.eclass
profiles/base: mask rocFFT-5.1.3 gfx906 amdgpu target, because intolerable error found on Radeon VII. No need to rebuilt rocFFT when hip upgrade because librocfft is dynamically linked to libhipamd, while llvm SLOT does not matter because it is only used to produce GPU kernels, libclang and libLLVM does not linked in. Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com> Signed-off-by: Benda Xu <heroxbd@gentoo.org>
This commit is contained in:
@@ -11,6 +11,12 @@
|
||||
# Allowing that use flag for >=43.0 would stop users from updating nautilus
|
||||
>=app-text/evince-43.0 nautilus
|
||||
|
||||
# Yiyang Wu <xgreenlandforwyy@gmail.com> (2022-09-21)
|
||||
# Intolerable mathematical errors found on AMD Radeon VII GPU during src_test,
|
||||
# may lead to incorrect results in computation.
|
||||
# https://github.com/ROCmSoftwarePlatform/rocFFT/issues/369
|
||||
=sci-libs/rocFFT-5.1.3 amdgpu_targets_gfx906
|
||||
|
||||
# Georgy Yakovlev <gyakovlev@gentoo.org> (2022-09-17)
|
||||
# po4a crashes while translating
|
||||
# mask for now
|
||||
@@ -24,7 +30,7 @@
|
||||
# bug #870211.
|
||||
dev-lang/rust llvm-libunwind
|
||||
|
||||
# Matt Jolly <Matt.Jolly@footclan.ninja (2022-09-09)
|
||||
# Matt Jolly <Matt.Jolly@footclan.ninja> (2022-09-09)
|
||||
# app-antivirus/clamav JIT support requires LLVM <=13
|
||||
# ebuild support is there but currently failing to link
|
||||
app-antivirus/clamav jit
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
DIST rocFFT-4.0.0.tar.gz 772176 BLAKE2B f08db9487449e707ba814a66d23992f68c140017a38f72ee45b3b224fc3e46abd40b976aef645f4432601265b38cff8939456981c686360eba135349b5d28fb5 SHA512 db9a6b49162dfb7924aa5f5dc8d42c92a5a741e03c3c0b4ece2cfb72de7506a345f3d28d31a3d7755cfe78078c448c9f952ca671e472335a4301de8702916176
|
||||
DIST rocFFT-4.3.0.tar.gz 840748 BLAKE2B 236a5faa930751d35e501a9a32ecc8b4075448ef21a0ffb0bb7ec04f4ed1cb67b908aa153b5b424e0823d3e306cf375d7c01a77d687220ed79de6d374037e003 SHA512 765d41e4018a04a53e847c03de80eec830d3e8766187fb8cb493624afa2673175347c16e6eeeebd4ad7d88bb866e58f7e572708f22238723c710b98565a0cd3d
|
||||
DIST rocFFT-5.0.2.tar.gz 837508 BLAKE2B b74d0c6edd7b232f775bffefbca829d88d9d7cd9108c27a0698f45d7fe2760d40463bcda8c710e923874b3bbfb1e83e0fe8622db4dfa28afb29392b3e135e9a5 SHA512 d6810a92a10a27dbcac8a04e8fcd56c7fa198f208da626d8938d5ff28b6ab8b89a058c7a56b5666464165e8f6bd7c4c031a94315625a3613eb02a9b8eccd9eb9
|
||||
DIST rocFFT-5.1.3.tar.gz 845470 BLAKE2B 86060ce4f8612869fedc5bc92ed6a5bb7fbc539b26c7f5ab0ded5406ab6c340f64116782285d040824e54557af87d9ddb6f907fd1550b80c3da903d3c1d5e5c0 SHA512 175402856bd4753e74ce14326569be99221e21d0ce675e007900f6982c53e1566ad0b060eec545e0f17ff4dc4811688cc1003dc986226205ee95ee6f22d1ca43
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
Contributed-by: perestoronin https://bugs.gentoo.org/693200#c25
|
||||
--- a/library/src/include/twiddles.h
|
||||
+++ b/library/src/include/twiddles.h
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <numeric>
|
||||
#include <tuple>
|
||||
#include <vector>
|
||||
+#include <stdexcept>
|
||||
|
||||
static const size_t LTWD_BASE_DEFAULT = 8;
|
||||
static const size_t LARGE_TWIDDLE_THRESHOLD = 4096;
|
||||
67
sci-libs/rocFFT/files/rocFFT-5.1.3-unbundle-sqlite.patch
Normal file
67
sci-libs/rocFFT/files/rocFFT-5.1.3-unbundle-sqlite.patch
Normal file
@@ -0,0 +1,67 @@
|
||||
Disable rocFFT fetching SQLite3 and link to system libsqlite.so
|
||||
Index: rocFFT-rocm-5.1.3/library/src/CMakeLists.txt
|
||||
===================================================================
|
||||
--- rocFFT-rocm-5.1.3.orig/library/src/CMakeLists.txt
|
||||
+++ rocFFT-rocm-5.1.3/library/src/CMakeLists.txt
|
||||
@@ -134,49 +134,22 @@ set( rocfft_source
|
||||
rtcsubprocess.cpp
|
||||
)
|
||||
|
||||
-# SQLite 3.36.0 enabled the backup API by default, which we need
|
||||
-# for cache serialization. We also want to use a static SQLite,
|
||||
-# and distro static libraries aren't typically built
|
||||
-# position-independent.
|
||||
-include( FetchContent )
|
||||
-
|
||||
-set(SQLITE_SRC_URL https://sqlite.org/2021/sqlite-amalgamation-3360000.zip CACHE STRING "Location of SQLite source code")
|
||||
-set(SQLITE_SRC_SHA256 999826fe4c871f18919fdb8ed7ec9dd8217180854dd1fe21eea96aed36186729 CACHE STRING "SHA256 hash of SQLite source code")
|
||||
-
|
||||
-# embed SQLite
|
||||
-FetchContent_Declare(sqlite_local
|
||||
- URL ${SQLITE_SRC_URL}
|
||||
- URL_HASH SHA256=${SQLITE_SRC_SHA256}
|
||||
-)
|
||||
-FetchContent_MakeAvailable(sqlite_local)
|
||||
-add_library( sqlite3 OBJECT ${sqlite_local_SOURCE_DIR}/sqlite3.c )
|
||||
-set_target_properties( sqlite3 PROPERTIES
|
||||
- C_VISIBILITY_PRESET "hidden"
|
||||
- VISIBILITY_INLINES_HIDDEN ON
|
||||
- POSITION_INDEPENDENT_CODE ON
|
||||
- )
|
||||
-
|
||||
-# we don't need extensions, and omitting them from SQLite removes the
|
||||
-# need for dlopen/dlclose from within rocFFT
|
||||
-target_compile_options(
|
||||
- sqlite3
|
||||
- PRIVATE -DSQLITE_OMIT_LOAD_EXTENSION
|
||||
-)
|
||||
-
|
||||
set_property(
|
||||
SOURCE rtc.cpp
|
||||
PROPERTY OBJECT_DEPENDS ${kgen_embed_h}
|
||||
)
|
||||
|
||||
+find_package( SQLite3 REQUIRED )
|
||||
+
|
||||
prepend_path( ".." rocfft_headers_public relative_rocfft_headers_public )
|
||||
|
||||
add_library( rocfft
|
||||
${rocfft_source}
|
||||
${relative_rocfft_headers_public}
|
||||
- $<TARGET_OBJECTS:sqlite3>
|
||||
)
|
||||
add_library( roc::rocfft ALIAS rocfft )
|
||||
|
||||
+target_link_libraries( rocfft PRIVATE ${SQLite3_LIBRARIES} )
|
||||
if( NOT WIN32 )
|
||||
target_link_libraries( rocfft PRIVATE -lstdc++fs )
|
||||
endif()
|
||||
@@ -209,7 +182,7 @@ endif()
|
||||
target_include_directories( rocfft
|
||||
PRIVATE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/library/src/include>
|
||||
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/library/src/device>
|
||||
- ${sqlite_local_SOURCE_DIR}
|
||||
+ ${SQLite3_LIBRARIES}
|
||||
PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/library/include>
|
||||
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
144
sci-libs/rocFFT/rocFFT-5.1.3.ebuild
Normal file
144
sci-libs/rocFFT/rocFFT-5.1.3.ebuild
Normal file
@@ -0,0 +1,144 @@
|
||||
# Copyright 1999-2022 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{8..10} )
|
||||
ROCM_VERSION=${PV}
|
||||
|
||||
inherit cmake check-reqs edo multiprocessing python-r1 rocm
|
||||
|
||||
DESCRIPTION="Next generation FFT implementation for ROCm"
|
||||
HOMEPAGE="https://github.com/ROCmSoftwarePlatform/rocFFT"
|
||||
SRC_URI="https://github.com/ROCmSoftwarePlatform/rocFFT/archive/rocm-${PV}.tar.gz -> rocFFT-${PV}.tar.gz"
|
||||
|
||||
LICENSE="MIT"
|
||||
KEYWORDS="~amd64"
|
||||
SLOT="0/$(ver_cut 1-2)"
|
||||
|
||||
# RDEPEND: perfscripts? dev-python/plotly[${PYTHON_USEDEP}] # currently masked by arch/amd64/x32/package.mask
|
||||
RDEPEND="
|
||||
perfscripts? (
|
||||
>=media-gfx/asymptote-2.61
|
||||
dev-texlive/texlive-latex
|
||||
dev-tex/latexmk
|
||||
sys-apps/texinfo
|
||||
dev-python/sympy[${PYTHON_USEDEP}]
|
||||
dev-python/numpy[${PYTHON_USEDEP}]
|
||||
dev-python/scipy[${PYTHON_USEDEP}]
|
||||
dev-python/pandas[${PYTHON_USEDEP}] )
|
||||
${PYTHON_DEPS}"
|
||||
|
||||
DEPEND="dev-util/hip
|
||||
${PYTHON_DEPS}"
|
||||
|
||||
BDEPEND="
|
||||
test? ( dev-cpp/gtest dev-libs/boost
|
||||
>=sci-libs/fftw-3 sys-libs/libomp )
|
||||
>=dev-util/cmake-3.22
|
||||
dev-util/rocm-cmake:${SLOT}
|
||||
"
|
||||
|
||||
CHECKREQS_DISK_BUILD="7G"
|
||||
|
||||
IUSE="benchmark perfscripts test"
|
||||
REQUIRED_USE="perfscripts? ( benchmark ) ${PYTHON_REQUIRED_USE} ${ROCM_REQUIRED_USE}"
|
||||
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
S="${WORKDIR}/rocFFT-rocm-${PV}"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-4.2.0-add-functional-header.patch"
|
||||
"${FILESDIR}/${PN}-5.1.3-unbundle-sqlite.patch"
|
||||
"${FILESDIR}/${PN}-5.0.2-add-math-header.patch"
|
||||
"${FILESDIR}/${PN}-5.1.3-add-stdexcept-header.patch" )
|
||||
|
||||
required_mem() {
|
||||
if use test; then
|
||||
echo "52G"
|
||||
else
|
||||
if [[ -n "${AMDGPU_TARGETS}" ]]; then
|
||||
local NARCH=$(($(awk -F";" '{print NF-1}' <<< "${AMDGPU_TARGETS}" || die)+1)) # count how many archs user specified in ${AMDGPU_TARGETS}
|
||||
else
|
||||
local NARCH=7 # The default number of AMDGPU_TARGETS for rocFFT-4.3.0. May change in the future.
|
||||
fi
|
||||
echo "$(($(makeopts_jobs)*${NARCH}*25+2200))M" # A linear function estimating how much memory required
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_pretend() {
|
||||
return # leave the disk space check to pkg_setup phase
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export CHECKREQS_MEMORY=$(required_mem)
|
||||
check-reqs_pkg_setup
|
||||
python_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
sed -e "s/PREFIX rocfft//" \
|
||||
-e "/rocm_install_symlink_subdir/d" \
|
||||
-e "/<INSTALL_INTERFACE/s,include,include/rocFFT," \
|
||||
-i library/src/CMakeLists.txt || die
|
||||
|
||||
sed -e "/rocm_install_symlink_subdir/d" \
|
||||
-e "$!N;s:PREFIX\n[ ]*rocfft:# PREFIX rocfft\n:;P;D" \
|
||||
-i library/src/device/CMakeLists.txt || die
|
||||
|
||||
if use perfscripts; then
|
||||
pushd scripts/perf || die
|
||||
sed -e "/\/opt\/rocm/d" -e "/rocmversion/s,rocm_info.strip(),\"${PV}\"," -i perflib/specs.py || dir
|
||||
sed -e "/^top/,+1d" -i rocfft-perf suites.py || die
|
||||
sed -e "s,perflib,${PN}_perflib,g" -i rocfft-perf suites.py perflib/*.py || die
|
||||
sed -e "/^top = /s,__file__).*$,\"${EPREFIX}/usr/share/${PN}-perflib\")," -i perflib/pdf.py perflib/generators.py || die
|
||||
popd
|
||||
fi
|
||||
|
||||
cmake_src_prepare
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
addpredict /dev/kfd
|
||||
addpredict /dev/dri/
|
||||
|
||||
local mycmakeargs=(
|
||||
-DCMAKE_SKIP_RPATH=On
|
||||
-DAMDGPU_TARGETS="$(get_amdgpu_flags)"
|
||||
-Wno-dev
|
||||
-DCMAKE_INSTALL_INCLUDEDIR="include/rocFFT/"
|
||||
-DBUILD_CLIENTS_TESTS=$(usex test ON OFF)
|
||||
-DBUILD_CLIENTS_SELFTEST=$(usex test ON OFF)
|
||||
-DPYTHON3_EXE=${EPYTHON}
|
||||
-DBUILD_CLIENTS_RIDER=$(usex benchmark ON OFF)
|
||||
)
|
||||
|
||||
CXX=hipcc cmake_src_configure
|
||||
}
|
||||
|
||||
src_test() {
|
||||
check_amdgpu
|
||||
cd "${BUILD_DIR}/clients/staging" || die
|
||||
export LD_LIBRARY_PATH=${BUILD_DIR}/library/src/:${BUILD_DIR}/library/src/device
|
||||
edob ./${PN,,}-test
|
||||
edob ./${PN,,}-selftest
|
||||
}
|
||||
|
||||
src_install() {
|
||||
cmake_src_install
|
||||
|
||||
if use benchmark; then
|
||||
cd "${BUILD_DIR}"/clients/staging || die
|
||||
dobin *rider
|
||||
fi
|
||||
|
||||
if use perfscripts; then
|
||||
cd "${S}"/scripts/perf || die
|
||||
python_foreach_impl python_doexe rocfft-perf
|
||||
python_moduleinto ${PN}_perflib
|
||||
python_foreach_impl python_domodule perflib/*.py
|
||||
insinto /usr/share/${PN}-perflib
|
||||
doins *.asy suites.py
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user