mirror of
https://github.com/gentoo-mirror/guru.git
synced 2026-07-10 15:45:15 -04:00
sys-cluster/sionlib: new package
Package-Manager: Portage-3.0.18, Repoman-3.0.3 Signed-off-by: Alessandro Barbieri <lssndrbarbieri@gmail.com>
This commit is contained in:
1
sys-cluster/sionlib/Manifest
Normal file
1
sys-cluster/sionlib/Manifest
Normal file
@@ -0,0 +1 @@
|
||||
DIST sionlib-1.7.6.tar.gz 486418 BLAKE2B 885eb2012ec6da031f5ae8b093ee4f3e5bbe31c9b24a11576f2ad01b32ddd8a85051565034f0e6c756af51409fb89f9c79f80b35c8337f2dc7912cb9e54d909b SHA512 afdd8520f489bc940edc51ffa636a25cad778de07bfbb21d2bd2ab767e57b16044990d85ef44d2e6482a376196f5c6a2a6f1a71556dd987f8094dd396a971d1c
|
||||
134
sys-cluster/sionlib/files/respect-flags.patch
Normal file
134
sys-cluster/sionlib/files/respect-flags.patch
Normal file
@@ -0,0 +1,134 @@
|
||||
diff '--color=auto' -ru a/config/determine-cc.sh b/config/determine-cc.sh
|
||||
--- a/config/determine-cc.sh 2021-04-25 01:09:35.175990108 +0200
|
||||
+++ b/config/determine-cc.sh 2021-04-25 01:10:02.876433713 +0200
|
||||
@@ -1,7 +1,6 @@
|
||||
#!/bin/sh
|
||||
# determine what compiler is behind "cc" (and presumably "CC" and "ftn") wrapper
|
||||
|
||||
-CC=`which cc 2>/dev/null`
|
||||
COMP=
|
||||
if [ -z "$CC" ]; then
|
||||
echo "No 'cc' located!"
|
||||
diff '--color=auto' -ru a/config/select-compiler.sh b/config/select-compiler.sh
|
||||
--- a/config/select-compiler.sh 2021-04-25 01:09:35.175990108 +0200
|
||||
+++ b/config/select-compiler.sh 2021-04-25 01:10:26.882817842 +0200
|
||||
@@ -9,7 +9,7 @@
|
||||
CPS=""
|
||||
COMP=""
|
||||
|
||||
-GNU=`which gcc 2> /dev/null`
|
||||
+GNU="${CC}"
|
||||
if [ -n "${GNU}" ]
|
||||
then
|
||||
NCPS=`expr ${NCPS} + 1`
|
||||
diff '--color=auto' -ru a/config/select-mpi.sh b/config/select-mpi.sh
|
||||
--- a/config/select-mpi.sh 2021-04-25 01:09:35.175990108 +0200
|
||||
+++ b/config/select-mpi.sh 2021-04-25 01:12:41.269962840 +0200
|
||||
@@ -76,7 +76,6 @@
|
||||
if [ -z "${MPIS}" ]; then MPIS="${MPI}"; else MPIS="${MPIS}|${MPI}"; fi
|
||||
fi
|
||||
|
||||
-MPICC=`which mpicc 2> /dev/null`
|
||||
if [ -n "${MPICC}" ]
|
||||
then
|
||||
FMPI=""
|
||||
@@ -86,7 +85,7 @@
|
||||
MPIROOTDIR1=`dirname ${MBINDIR}`
|
||||
|
||||
echo "#include <mpi.h>" > conftest.c
|
||||
- mpicc -E conftest.c | grep '/mpi.h"' | head -1 > mpiconf.txt
|
||||
+ "${MPICC}" -E conftest.c | grep '/mpi.h"' | head -1 > mpiconf.txt
|
||||
MINCDIR=`cat mpiconf.txt | sed -e 's#^.* "##' -e 's#/mpi.h".*##'`
|
||||
if [ -n "${MINCDIR}" ]
|
||||
then
|
||||
diff '--color=auto' -ru a/mf/Makefile.defs.linux-gomp b/mf/Makefile.defs.linux-gomp
|
||||
--- a/mf/Makefile.defs.linux-gomp 2021-04-25 01:09:35.119989211 +0200
|
||||
+++ b/mf/Makefile.defs.linux-gomp 2021-04-25 01:52:32.378951608 +0200
|
||||
@@ -23,24 +23,19 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# SIONlib General Settings
|
||||
#------------------------------------------------------------------------------
|
||||
-OPTFLAGS = -g -O0 -Wall
|
||||
+CFLAGS += -std=c99 $(PFLAG) $(OPTFLAGS) -fPIC
|
||||
|
||||
-CC = gcc
|
||||
-CFLAGS = -std=c99 $(PFLAG) $(OPTFLAGS) -fPIC
|
||||
+CXXFLAGS += $(PFLAG) $(OPTFLAGS) -fPIC
|
||||
|
||||
-CXX = g++
|
||||
-CXXFLAGS = $(PFLAG) $(OPTFLAGS) -O3
|
||||
-
|
||||
-F77 = gfortran
|
||||
-FFLAGS = $(PFLAG) $(OPTFLAGS)
|
||||
+FFLAGS += $(PFLAG) $(OPTFLAGS) -fPIC
|
||||
|
||||
F90 = $(F77)
|
||||
-F90FLAGS = $(PFLAG) $(OPTFLAGS) -ffree-form
|
||||
+F90FLAGS += $(PFLAG) $(OPTFLAGS) -ffree-form -fPIC $(FCFLAGS)
|
||||
|
||||
FPP =
|
||||
FDOPT = -D
|
||||
|
||||
-LDFLAGS = $(PFLAG) $(OPTFLAGS) $(HINTSLIB)
|
||||
+LDFLAGS += $(PFLAG) $(OPTFLAGS) $(HINTSLIB)
|
||||
UTILLIB =
|
||||
FOBASE = pomp_fwrapper_base.o
|
||||
|
||||
@@ -101,10 +96,6 @@
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
MPIENABLE = 1
|
||||
-MPICC = mpicc
|
||||
-MPICXX = mpicxx
|
||||
-MPIF77 = mpif77
|
||||
-MPIF90 = mpif90
|
||||
MPILIB = -lmpich
|
||||
PMPILIB = -lpmpich
|
||||
#PMPILIB = # MPICH2
|
||||
@@ -139,8 +130,7 @@
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
SZLIB = szlib
|
||||
-SZLIB_OPTFLAGS = -O3
|
||||
-SZLIB_CFLAGS = -I$(TOPDIR)/utils/szlib -DELG_COMPRESSED -DCUBE_COMPRESSED
|
||||
+SZLIB_CFLAGS = -I$(TOPDIR)/utils/szlib -DELG_COMPRESSED -DCUBE_COMPRESSED $(CFLAGS)
|
||||
SZLIB_LIBPATH = -L$(TOPDIR)/utils/szlib
|
||||
SZLIB_LIB = -lsc.z
|
||||
|
||||
diff '--color=auto' -ru a/src/fortraninterface/Makefile b/src/fortraninterface/Makefile
|
||||
--- a/src/fortraninterface/Makefile 2021-04-25 01:09:35.141989563 +0200
|
||||
+++ b/src/fortraninterface/Makefile 2021-04-25 01:23:48.055976593 +0200
|
||||
@@ -109,7 +110,7 @@
|
||||
$(CPP) $(F90FLAGS) $(F90FLAGS_CPP) -P -E -I ../lib sion_f90.F90 > sion_f90.f90
|
||||
sion_f90.mod : sion_f90.o
|
||||
sion_f90.o : sion_f90.f90 sion_f77.h $(SION_HDRS)
|
||||
- $(F90) -c sion_f90.f90
|
||||
+ $(F90) $(F90FLAGS) -c sion_f90.f90
|
||||
|
||||
sion_f90_omp.o: sion_f90.o
|
||||
sion_f90_mpi.o: sion_f90.o
|
||||
@@ -121,21 +122,21 @@
|
||||
$(CPP) $(F90FLAGS) $(F90FLAGS_CPP) $(F90MPIFLAGS) -P -E -I ../lib sion_f90_mpi.F90 > sion_f90_mpi.f90
|
||||
sion_f90_mpi.mod : sion_f90_mpi.o
|
||||
sion_f90_mpi.o : sion_f90_mpi.f90 sion_f90.mod $(SION_HDRS)
|
||||
- $(MPIF90) -c sion_f90_mpi.f90
|
||||
+ $(MPIF90) $(F90FLAGS) $(F90MPIFLAGS) -c sion_f90_mpi.f90
|
||||
|
||||
# F90 Interface (OMP)
|
||||
sion_f90_omp.f90: sion_f90_omp.F90
|
||||
$(CPP) $(F90OMPFLAGS) $(F90FLAGS) $(F90FLAGS_CPP) -P -E -I ../lib sion_f90_omp.F90 > sion_f90_omp.f90
|
||||
sion_f90_omp.mod : sion_f90_omp.o
|
||||
sion_f90_omp.o : sion_f90_omp.f90 sion_f90.mod $(SION_HDRS)
|
||||
- $(OMPF90) -c sion_f90_omp.f90
|
||||
+ $(OMPF90) $(F90FLAGS) $(F90OMPFLAGS) -c sion_f90_omp.f90
|
||||
|
||||
# F90 Interface (OMPI)
|
||||
sion_f90_ompi.f90: sion_f90_ompi.F90 $(SION_HDRS)
|
||||
$(CPP) $(F90MPIFLAGS) $(F90OMPFLAGS) $(F90FLAGS) $(F90FLAGS_CPP) -P -E -I ../lib sion_f90_ompi.F90 > sion_f90_ompi.f90
|
||||
sion_f90_ompi.mod : sion_f90_ompi.o
|
||||
sion_f90_ompi.o : sion_f90_ompi.f90 $(SION_HDRS)
|
||||
- $(MPIF90) -c sion_f90_ompi.f90
|
||||
+ $(MPIF90) $(F90FLAGS) $(F90MPIFLAGS) -c sion_f90_ompi.f90
|
||||
|
||||
|
||||
|
||||
34
sys-cluster/sionlib/metadata.xml
Normal file
34
sys-cluster/sionlib/metadata.xml
Normal file
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="person">
|
||||
<email>lssndrbarbieri@gmail.com</email>
|
||||
<name>Alessandro Barbieri</name>
|
||||
</maintainer>
|
||||
<longdescription>
|
||||
SIONlib is a library for writing and reading data from several thousands of parallel tasks into/from one or a small number of physical files. Only the open and close functions are collective while file access can be performed independently.
|
||||
|
||||
SIONlib can be used as a replacement for standard I/O APIs (e.g. POSIX) that are used to access distinct files from every parallel process. SIONlib will bundle the data into one or few files in a coordinated fashion in order to sidestep sequentialising mechanism in the file system. At the same time, the task-per-file picture is maintained for the application, every process has access to its logical file only. File access is performed using SIONlib equivalents to standard C-I/O functionality (fwrite becomes sion_write, fseek becomes sion_seek, etc.) which have similar semantics as their C counterparts.
|
||||
|
||||
Internally, the physical files are sub-divided into sequences of blocks, which themselves contain one chunk of data belonging to every logical file. In case the amount to be written to a file is known up front, it can optionally be specified when opening the file and the sequence of blocks collapses into a single block with one chunk per task containing all of its data. If a chunk size cannot be specified ahead of time, a sensible default is chosen and reads and writes that cross chunk boundaries are handled transparently by SIONlib.
|
||||
|
||||
SIONlib also uses information about the block size of the underlying file system, because access to the same block from different tasks often leads to contention.
|
||||
|
||||
Both, the estimated chunk size and file system block size are used to align individual chunks with file system blocks. Ensuring contention-free access to file system blocks enables efficient parallel writing and reading.
|
||||
|
||||
SIONlib provides two different interfaces: one for parallel access (with implementations for different parallel programming technologies such as MPI, OpenMP and hybrid MPI+OpenMP) and one for sequential access which is also used internally by the SIONlib utilities.
|
||||
</longdescription>
|
||||
<use>
|
||||
<!--<flag name="cuda">enable CUDA aware interface</flag>-->
|
||||
<flag name="cxx">Disable C++ support</flag>
|
||||
<flag name="debug">enable SIONlib debug</flag>
|
||||
<flag name="fortran">Enable Fortran support</flag>
|
||||
<flag name="mpi">enable mpi</flag>
|
||||
<flag name="python">enable python support</flag>
|
||||
<flag name="ompi">enable hybrid openmp mpi</flag>
|
||||
<flag name="openmp">enable openmp</flag>
|
||||
<flag name="parutils">Enable compilation of parutils (used for benchmarking)</flag>
|
||||
<flag name="pthreads">configure SIONlib to use pthreads for locking</flag>
|
||||
<!--<flag name="sionfwd">enable I/O forwarding with SIONfwd</flag>-->
|
||||
</use>
|
||||
</pkgmetadata>
|
||||
104
sys-cluster/sionlib/sionlib-1.7.6.ebuild
Normal file
104
sys-cluster/sionlib/sionlib-1.7.6.ebuild
Normal file
@@ -0,0 +1,104 @@
|
||||
# Copyright 2019-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
FORTRAN_NEEDED="fortran"
|
||||
PYTHON_COMPAT=( pypy3 python3_{7,8,9} )
|
||||
inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs
|
||||
|
||||
DESCRIPTION="Scalable I/O library for parallel access to task-local files"
|
||||
HOMEPAGE="https://www.fz-juelich.de/ias/jsc/EN/Expertise/Support/Software/SIONlib/_node.html"
|
||||
SRC_URI="http://apps.fz-juelich.de/jsc/sionlib/download.php?version=${PV} -> ${P}.tar.gz"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64"
|
||||
IUSE="+cxx debug doc +fortran +mpi +ompi +openmp +parutils +pthreads python"
|
||||
#TODO: cuda sionfwd msa
|
||||
#--enable-sionfwd=/path/to/sionfwd
|
||||
#--msa=(hostname-regex|deep-est-sdv)] MSA aware collective operations for the given system
|
||||
|
||||
PATCHES=( "${FILESDIR}/respect-flags.patch" )
|
||||
|
||||
RDEPEND="
|
||||
${PYTHON_DEPS}
|
||||
mpi? ( virtual/mpi )
|
||||
ompi? (
|
||||
sys-libs/libomp
|
||||
virtual/mpi
|
||||
)
|
||||
openmp? ( sys-libs/libomp )
|
||||
"
|
||||
DEPEND="${RDEPEND}"
|
||||
BDEPEND="doc? ( app-doc/doxygen )"
|
||||
S="${WORKDIR}/${PN}"
|
||||
|
||||
pkg_setup() {
|
||||
FORTRAN_NEED_OPENMP=0
|
||||
use openmp && FORTRAN_NEED_OPENMP=1
|
||||
use ompi && FORTRAN_NEED_OPENMP=1
|
||||
|
||||
fortran-2_pkg_setup
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
export AR=$(tc-getAR)
|
||||
export CC=$(tc-getCC)
|
||||
export CXX=$(tc-getCXX)
|
||||
export MPICC=/usr/bin/mpicc
|
||||
export MPICXX=/usr/bin/mpicxx
|
||||
export MPIF77=/usr/bin/mpif77
|
||||
export MPIF90=/usr/bin/mpif90
|
||||
export F77=$(tc-getF77)
|
||||
export F90=$(tc-getFC)
|
||||
export OMPF77=$(tc-getF77)
|
||||
export OMPF90=$(tc-getFC)
|
||||
|
||||
append-fflags -fallow-argument-mismatch
|
||||
|
||||
local myconf=(
|
||||
--disable-mic
|
||||
--prefix="${EPREFIX}/usr"
|
||||
)
|
||||
|
||||
#custom configure?
|
||||
use cxx || myconf+=( "--disable-cxx" )
|
||||
use fortran || myconf+=( "--disable-fortran" )
|
||||
use mpi || myconf+=( "--disable-mpi" )
|
||||
use ompi || myconf+=( "--disable-ompi" )
|
||||
use openmp || myconf+=( "--disable-omp" )
|
||||
use parutils || myconf+=( "--disable-parutils" )
|
||||
use pthreads || myconf+=( "--disable-pthreads" )
|
||||
|
||||
use debug && myconf+=( "--enable-debug" )
|
||||
use python && myconf+=( "--enable-python=3" )
|
||||
|
||||
./configure "${myconf[@]}" || die
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
default
|
||||
use doc && doxygen -u doxy && doxygen doxy || die
|
||||
}
|
||||
|
||||
src_install() {
|
||||
sed -e "s|\${PREFIX}|${D}/usr|g" -i mf/common.defs || die
|
||||
sed -e "s|\$(PREFIX)|${D}/usr|g" -i src/utils/Makefile || die
|
||||
sed \
|
||||
-e "s|\$(PREFIX)|${D}/usr|g" \
|
||||
-e "s|\${PREFIX}|${D}/usr|g" \
|
||||
-i mf/RealMakefile || die
|
||||
|
||||
default
|
||||
|
||||
use doc && dodoc -r doc/html
|
||||
|
||||
mv "${ED}/usr/examples" "${ED}/usr/share/doc/${PF}/" || die
|
||||
docompress -x "/usr/share/doc/${PF}/examples"
|
||||
docompress -x "/usr/share/doc/${PF}/html"
|
||||
|
||||
#TODO: build shared libs
|
||||
#find "${ED}" -name '*.a' -delete || die
|
||||
find "${ED}" -name '*.la' -delete || die
|
||||
}
|
||||
Reference in New Issue
Block a user