From 39bc696e1bc0c295322d8372961c632001c2647f Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Fri, 6 Aug 2021 01:55:47 +0200 Subject: [PATCH] sys-cluster/SOS: initial import Signed-off-by: Alessandro Barbieri --- sys-cluster/SOS/Manifest | 1 + sys-cluster/SOS/SOS-1.5.0.ebuild | 131 +++++++++++++++++++++++++++++++ sys-cluster/SOS/metadata.xml | 43 ++++++++++ 3 files changed, 175 insertions(+) create mode 100644 sys-cluster/SOS/Manifest create mode 100644 sys-cluster/SOS/SOS-1.5.0.ebuild create mode 100644 sys-cluster/SOS/metadata.xml diff --git a/sys-cluster/SOS/Manifest b/sys-cluster/SOS/Manifest new file mode 100644 index 0000000000..f36dc60677 --- /dev/null +++ b/sys-cluster/SOS/Manifest @@ -0,0 +1 @@ +DIST SOS-1.5.0.tar.gz 544478 BLAKE2B f2a63fbf39958ac238e2d687d866c2f600956b933f956a4d8552acff29973de4d3e46a323b3f8eb3a63d395728cbafdfe119ea99d0fb5e17250d879ff269fb0e SHA512 0506bda8ab898cd1aaea82e230c64e17dde4ccfb3b70c9a4397c90d08643b3c7f96e7eae70e1a2b706b33737e979315372bcc338fc957652cd1b5e55d7a560ad diff --git a/sys-cluster/SOS/SOS-1.5.0.ebuild b/sys-cluster/SOS/SOS-1.5.0.ebuild new file mode 100644 index 0000000000..f7f505c4fc --- /dev/null +++ b/sys-cluster/SOS/SOS-1.5.0.ebuild @@ -0,0 +1,131 @@ +# Copyright 2019-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +FORTRAN_NEEDED="fortran" + +inherit autotools fortran-2 + +DESCRIPTION="implementation of the OpenSHMEM specification" +HOMEPAGE="https://github.com/Sandia-OpenSHMEM/SOS" +SRC_URI="https://github.com/Sandia-OpenSHMEM/SOS/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="BSD public-domain mpich2" +SLOT="0" +KEYWORDS="~amd64" +IUSE_OFI_MR=" + ofi-mr-basic + +ofi-mr-scalable + ofi-mr-rma-event +" +IUSE_TOTAL_DATA_ORDERING=" + total-data-ordering-always + +total-data-ordering-check + total-data-ordering-never +" +IUSE_EXPAND="OFI_MR TOTAL_DATA_ORDERING" +IUSE="${IUSE_OFI_MR} ${IUSE_TOTAL_DATA_ORDERING} av-map bounce-buffers cma completion-polling cxx +debug error-checking fortran long-fortran-header manual-progress memcpy ofi ofi-fence openmp ++pmi-mpi pmi-simple portals4 profiling pthread-mutexes remote-virtual-addressing threads +thread-completion ucx xpmem" + +RDEPEND=" + ofi? ( sys-block/libfabric ) + pmi-simple? ( sys-cluster/pmix[pmi] ) + pmi-mpi? ( virtual/mpi ) + portals4? ( sys-cluster/portals4 ) + ucx? ( sys-cluster/ucx ) + xpmem? ( sys-kernel/xpmem ) +" +DEPEND="${RDEPEND}" + +REQUIRED_USE=" + ^^ ( ${IUSE_OFI_MR/+/} ) + ^^ ( ${IUSE_TOTAL_DATA_ORDERING/+/} ) + ^^ ( pmi-mpi pmi-simple ) + ?? ( cma xpmem ) + ?? ( ofi portals4 ) +" + +pkg_setup() { + FORTRAN_NEED_OPENMP=0 + use openmp && FORTRAN_NEED_OPENMP=1 + + fortran-2_pkg_setup +} + +src_prepare() { + default + + #copied from bootstrap + if [[ ! -d ./config ]]; then + mkdir ./config || die + fi + FILES=./man/*.1 + echo -n "dist_man1_MANS =" > ./man/Makefile.am || die + for f in $FILES + do + echo -n " $(basename $f)" >> ./man/Makefile.am || die + done + FILES=./man/*.3 + echo -e -n "\ndist_man3_MANS =" >> ./man/Makefile.am || die + for f in $FILES + do + echo -n " $(basename $f)" >> ./man/Makefile.am || die + done + echo -e "\n" >> ./man/Makefile.am || die + + eautoreconf +} + +src_configure() { + local ofimr + use ofi-mr-basic && ofimr="basic" + use ofi-mr-scalable && ofimr="scalable" + use ofi-mr-rma-event && ofimr="rma-event" + + local tda + use total-data-ordering-always && tda="always" + use total-data-ordering-check && tda="check" + use total-data-ordering-never && tda="never" + + local myconf=( + --disable-picky + --disable-rpm-prefix + --enable-ofi-mr="${ofimr}" + --enable-total-data-ordering="${tda}" + $(use_enable av-map) + $(use_enable bounce-buffers) + $(use_enable completion-polling) + $(use_enable cxx) + $(use_enable debug) + $(use_enable error-checking) + $(use_enable fortran) + $(use_enable long-fortran-header) + $(use_enable manual-progress) + $(use_enable memcpy) + $(use_enable ofi-fence) + $(use_enable openmp) + $(use_enable pmi-mpi) + $(use_enable pmi-simple) + $(use_enable profiling) + $(use_enable pthread-mutexes) + $(use_enable remote-virtual-addressing) + $(use_enable threads) + $(use_enable thread-completion) + + $(use_with cma) + $(use_with ofi) + $(use_with pmi-mpi pmi) + $(use_with portals4) + $(use_with ucx) + $(use_with xpmem) + ) + econf "${myconf[@]}" +} + +src_install() { + default + find "${ED}" -name '*.la' -delete || die +} diff --git a/sys-cluster/SOS/metadata.xml b/sys-cluster/SOS/metadata.xml new file mode 100644 index 0000000000..b671c4dd9e --- /dev/null +++ b/sys-cluster/SOS/metadata.xml @@ -0,0 +1,43 @@ + + + + + lssndrbarbieri@gmail.com + Alessandro Barbieri + + + enable av-map instead of av-table in the OFI transport + Enable bounce buffers by default + Use cross-memory attach for on-node communication + Enable polling in quiet, fence, and local completion operations + Enable C++ bindings + Enable error checking in SHMEM calls. This will increase the overhead of communication operations. + Enable fortran bindings + Enable long Fortran header, including all function declarations + Enable intermittent progress calls inside transport layer + Use memcpy to perform local put/get operations + + Use libfabric as transport layer + Use FI_FENCE feature to optimize put-with-signal operations + OFI memory registration mode: basic + The OFI transport will use FI_MR_RMA_EVENT + The OFI transport will use FI_MR_SCALABLE + Use MPI for process management + Include support for interfacing with a PMI 1.0 launcher. The launcher must be provided by a separate package, such as MPICH, Hydra, or SLURM. + Use portals4 as transport layer + Enable profiling (pshmem) interface + Use pthread mutexes instead of internal queueing locks + Enable optimizations assuming the symmetric heap is always symmetric with regards to virtual address. This may cause applications to abort during shmem_init() if such a symmetric heap can not be created, but will reduce the instruction count for some operations. This optimization also requires that the Portals 4 implementation support BIND_INACCESSIBLE on LEs. This optimization will reduce the overhead of communication calls. + Support SHMEM_THREAD_MULTIPLE in OFI transport using FI_THREAD_COMPLETION thread safety model instead of FI_THREAD_SAFE + Enable threading support + Always assume total data ordering is available and abort a job if that's not the case + Check will result in slightly higher overhead but will provide a fallback if the network doesn't provide total data ordering + Never use total data ordering optimizations + Use ucx transport + Use xpmem transport + + + https://github.com/Sandia-OpenSHMEM/SOS/issues + Sandia-OpenSHMEM/SOS + +