commit:     39bc696e1bc0c295322d8372961c632001c2647f
Author:     Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Thu Aug  5 23:55:47 2021 +0000
Commit:     Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
CommitDate: Fri Aug  6 00:16:44 2021 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=39bc696e

sys-cluster/SOS: initial import

Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>

 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(+)

diff --git a/sys-cluster/SOS/Manifest b/sys-cluster/SOS/Manifest
new file mode 100644
index 000000000..f36dc6067
--- /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 000000000..f7f505c4f
--- /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 000000000..b671c4dd9
--- /dev/null
+++ b/sys-cluster/SOS/metadata.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="person">
+               <email>[email protected]</email>
+               <name>Alessandro Barbieri</name>
+       </maintainer>
+       <use>
+               <flag name="av-map">enable av-map instead of av-table in the 
OFI transport</flag>
+               <flag name="bounce-buffers">Enable bounce buffers by 
default</flag>
+               <flag name="cma">Use cross-memory attach for on-node 
communication</flag>
+               <flag name="completion-polling">Enable polling in quiet, fence, 
and local completion operations</flag>
+               <flag name="cxx">Enable C++ bindings</flag>
+               <flag name="error-checking">Enable error checking in SHMEM 
calls.  This will increase the overhead of communication operations.</flag>
+               <flag name="fortran">Enable fortran bindings</flag>
+               <flag name="long-fortran-header">Enable long Fortran header, 
including all function declarations</flag>
+               <flag name="manual-progress">Enable intermittent progress calls 
inside transport layer</flag>
+               <flag name="memcpy">Use memcpy to perform local put/get 
operations</flag>
+               <!--<flag name="nonblocking-fence">By default, shmem_fence() is 
equivalent to shmem_quiet(), which can be a lengthy operation.  Enabling this 
feature results in the ordering point being moved from the shmem_fence() to the 
next put-like call, which can help improve overlap in some cases.</flag>-->
+               <flag name="ofi">Use libfabric as transport layer</flag>
+               <flag name="ofi-fence">Use FI_FENCE feature to optimize 
put-with-signal operations</flag>
+               <flag name="ofi-mr-basic">OFI memory registration mode: 
basic</flag>
+               <flag name="ofi-mr-rma-event">The OFI transport will use 
FI_MR_RMA_EVENT</flag>
+               <flag name="ofi-mr-scalable">The OFI transport will use 
FI_MR_SCALABLE</flag>
+               <flag name="pmi-mpi">Use MPI for process management</flag>      
+               <flag name="pmi-simple">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.</flag>   
+               <flag name="portals4">Use portals4 as transport layer</flag>
+               <flag name="profiling">Enable profiling (pshmem) 
interface</flag>
+               <flag name="pthread-mutexes">Use pthread mutexes instead of 
internal queueing locks</flag>
+               <flag name="remote-virtual-addressing"> 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.</flag>
+               <flag name="thread-completion">Support SHMEM_THREAD_MULTIPLE in 
OFI transport using FI_THREAD_COMPLETION thread safety model instead of 
FI_THREAD_SAFE</flag>
+               <flag name="threads">Enable threading support</flag>
+               <flag name="total-data-ordering-always">Always assume total 
data ordering is available and abort a job if that's not the case</flag>
+               <flag name="total-data-ordering-check">Check will result in 
slightly higher overhead but will provide a fallback if the network doesn't 
provide total data ordering</flag>
+               <flag name="total-data-ordering-never">Never use total data 
ordering optimizations</flag>
+               <flag name="ucx">Use ucx transport</flag>
+               <flag name="xpmem">Use xpmem transport</flag>
+       </use>
+       <upstream>
+               
<bugs-to>https://github.com/Sandia-OpenSHMEM/SOS/issues</bugs-to> 
+               <remote-id type="github">Sandia-OpenSHMEM/SOS</remote-id>
+       </upstream>
+</pkgmetadata>

Reply via email to