From ef6b23f403f345d00c9bbcab697611a8d6c50df0 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Tue, 24 May 2022 17:42:16 +0200 Subject: [PATCH] sci-libs/STRUMPACK: new package, add 6.3.1 Signed-off-by: Alessandro Barbieri --- sci-libs/STRUMPACK/Manifest | 1 + sci-libs/STRUMPACK/STRUMPACK-6.3.1.ebuild | 68 +++++++++++++++++++++++ sci-libs/STRUMPACK/metadata.xml | 29 ++++++++++ 3 files changed, 98 insertions(+) create mode 100644 sci-libs/STRUMPACK/Manifest create mode 100644 sci-libs/STRUMPACK/STRUMPACK-6.3.1.ebuild create mode 100644 sci-libs/STRUMPACK/metadata.xml diff --git a/sci-libs/STRUMPACK/Manifest b/sci-libs/STRUMPACK/Manifest new file mode 100644 index 0000000000..3ea889d53f --- /dev/null +++ b/sci-libs/STRUMPACK/Manifest @@ -0,0 +1 @@ +DIST STRUMPACK-6.3.1.tar.gz 2054022 BLAKE2B c838a6746c82ce9173295ef8fa798f68a8887788feddd3163d90393c3bee0a25fdd1d6d874446771043279602389759d955ca1be9d7a2b4ce0744a0d634b4eb0 SHA512 178df6a777d97f06969d64767b5640eaaad486f4c985213c7a967f9f919bc5c0222c512cea2401ed30fd72463b5e0e2f6f08b12b37b3b8461bd7e03a1cc6e5c1 diff --git a/sci-libs/STRUMPACK/STRUMPACK-6.3.1.ebuild b/sci-libs/STRUMPACK/STRUMPACK-6.3.1.ebuild new file mode 100644 index 0000000000..4039698f39 --- /dev/null +++ b/sci-libs/STRUMPACK/STRUMPACK-6.3.1.ebuild @@ -0,0 +1,68 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake fortran-2 + +DESCRIPTION="Structured Matrix Package (LBNL)" +HOMEPAGE="https://github.com/pghysels/STRUMPACK" +SRC_URI="https://github.com/pghysels/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + +KEYWORDS="~amd64" +LICENSE="BSD" +SLOT="0" +IUSE="+butterflypack combblas count-flops +hip message-counters metis +mpi +openmp +scotch papi task-timers +zfp" # +cuda +slate +ptscotch +magma matlab + +RDEPEND=" + butterflypack? ( sci-libs/ButterflyPACK ) + hip? ( + sci-libs/hipBLAS + sci-libs/rocBLAS + sci-libs/rocSOLVER + ) + metis? ( sci-libs/parmetis ) + mpi? ( virtual/mpi ) + papi? ( dev-libs/papi ) + scotch? ( sci-libs/scotch ) + zfp? ( dev-libs/zfp ) + + sci-libs/metis + virtual/blas + virtual/lapack +" +# magma? ( sci-libs/magma ) +DEPEND="${RDEPEND}" + +REQUIRED_USE=" + butterflypack? ( mpi ) + combblas? ( mpi ) + metis? ( mpi ) +" +# ?? ( cuda hip ) +# ptscotch? ( mpi ) +# slate? ( mpi ) +# magma? ( cuda ) +DOCS=( README.md CHANGELOG SUPPORT ) + +src_configure() { + local mycmakeargs=( + -DTPL_ENABLE_MAGMA=NO + -DTPL_ENABLE_PTSCOTCH=NO + -DTPL_ENABLE_SLATE=NO + + -DSTRUMPACK_COUNT_FLOPS=$(usex count-flops) + -DSTRUMPACK_MESSAGE_COUNTERS=$(usex message-counters) + -DSTRUMPACK_TASK_TIMERS=$(usex task-timers) + -DSTRUMPACK_USE_HIP=$(usex hip) + -DSTRUMPACK_USE_MPI=$(usex mpi) + -DSTRUMPACK_USE_OPENMP=$(usex openmp) + -DTPL_ENABLE_BPACK=$(usex butterflypack) + -DTPL_ENABLE_COMBBLAS=$(usex combblas) + -DTPL_ENABLE_PAPI=$(usex papi) + -DTPL_ENABLE_PARMETIS=$(usex metis) + -DTPL_ENABLE_SCOTCH=$(usex scotch) + -DTPL_ENABLE_ZFP=$(usex zfp) + ) + cmake_src_configure +} diff --git a/sci-libs/STRUMPACK/metadata.xml b/sci-libs/STRUMPACK/metadata.xml new file mode 100644 index 0000000000..48656f88c3 --- /dev/null +++ b/sci-libs/STRUMPACK/metadata.xml @@ -0,0 +1,29 @@ + + + + + lssndrbarbieri@gmail.com + Alessandro Barbieri + + + https://github.com/pghysels/STRUMPACK/issues + pghysels/STRUMPACK + + STRUMPACK - STRUctured Matrix PACKage - is a software library providing linear algebra routines and linear system solvers for sparse and for dense rank-structured linear systems. Many large dense matrices are rank structured, meaning they exhibit some kind of low-rank property, for instance in hierarchically defined sub-blocks. In sparse direct solvers based on LU factorization, the LU factors can often also be approximated well using rank-structured matrix compression, leading to robust preconditioners. The sparse solver in STRUMPACK can also be used as an exact direct solver, in which case it functions similarly as for instance SuperLU or superlu_dist. The STRUMPACK sparse direct solver delivers good performance and distributed memory scalability and provides excellent CUDA support. +Currently, STRUMPACK has support for the Hierarchically Semi-Separable (HSS), Block Low Rank (BLR), Hierachically Off-Diagonal Low Rank (HODLR), Butterfly and Hierarchically Off-Diagonal Butterfly (HODBF) rank-structured matrix formats. Such matrices appear in many applications, e.g., the Boundary Element Method for discretization of integral equations, structured matrices like Toeplitz and Cauchy, kernel and covariance matrices etc. In the LU factorization of sparse linear systems arising from the discretization of partial differential equations, the fill-in in the triangular factors often has low-rank structure. Hence, the sparse linear solve algorithms in STRUMPACK exploit the different dense rank-structured matrix formats to compress the fill-in. This leads to purely algebraic, fast and scalable (both with problem size and compute cores) approximate direct solvers or preconditioners. These preconditioners are mostly aimed at large sparse linear systems which result from the discretization of a partial differential equation, but are not limited to any particular type of problem. STRUMPACK also provides preconditioned GMRES and BiCGStab iterative solvers. +Apart from rank-structured compression, the STRUMPACK sparse solver also support compression of the factors using the ZFP library, a general purpose compression algorithm tuned for floating point data. This can be used with a specified precision, or with lossless compression. +The HODLR and Butterfly functionality in STRUMPACK is implemented through interfaces to the ButterflyPACK package: https://github.com/liuyangzhuan/ButterflyPACK + + + ButterflyPACK code by Yang Liu + Use CombBLAS for weighted matching + Build with flop counters + Use HIP for AMD or NVIDIA GPU acceleration + Build with counter for MPI messages + Build with support for ParMetis + Build with support for PAPI monitoring + Build with support for Scotch + Build with timers for internal routines + Build with support for ZFP compression + +