sys-cluster/*: merge sionlibl with sionlib

Signed-off-by: Alessandro Barbieri <lssndrbarbieri@gmail.com>
This commit is contained in:
Alessandro Barbieri
2021-07-25 22:17:19 +02:00
parent 0c995ec7d1
commit c27e0053fa
8 changed files with 10 additions and 291 deletions

View File

@@ -1 +1,2 @@
DIST sionlib-1.7.6.tar.gz 486418 BLAKE2B 885eb2012ec6da031f5ae8b093ee4f3e5bbe31c9b24a11576f2ad01b32ddd8a85051565034f0e6c756af51409fb89f9c79f80b35c8337f2dc7912cb9e54d909b SHA512 afdd8520f489bc940edc51ffa636a25cad778de07bfbb21d2bd2ab767e57b16044990d85ef44d2e6482a376196f5c6a2a6f1a71556dd987f8094dd396a971d1c
DIST sionlib-1.7.7.tar.gz 489080 BLAKE2B 1ffd06d1b245034b28700af1249135347cdd731a7af23ad96a27b5b5a11d64d9a67249fcd1c44cea43face1066e7ae1d59681e84cef2041e18f02e0c3e8f70ee SHA512 f270467e09893adf1af6103557365acbc9a3e73fe08716a21de6f59b25be9b187ee1c1ec1d878a9599e735f98da470b5e2e184774c27ed0ff0c330c5bf0a5677
DIST sionlibl-1.7.7.tar.gz 490515 BLAKE2B 76971dd6d80222144b40da345d58311911aab09c6a5250b85d4a2731d2f93cdbd39d87dd6bbafdeaba88f06603105076267f6956417916f118ec45e07fa59269 SHA512 6ef46a0905552c558595bf6b72225a290d73dc87fa33c9862de5e4bd4d683792437646f7b4ab8a463b4a50d1b4a79aec96a66e577e815de3f23e9274be2681af

View File

@@ -1,134 +0,0 @@
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

View File

@@ -20,7 +20,7 @@ SIONlib provides two different interfaces: one for parallel access (with impleme
</longdescription>
<use>
<!--<flag name="cuda">enable CUDA aware interface</flag>-->
<flag name="cxx">Disable C++ support</flag>
<flag name="cxx">Enable C++ support</flag>
<flag name="debug">enable SIONlib debug</flag>
<flag name="fortran">Enable Fortran support</flag>
<flag name="mpi">enable mpi</flag>
@@ -30,5 +30,6 @@ SIONlib provides two different interfaces: one for parallel access (with impleme
<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>-->
<flag name="tools">Build the tooling version instead</flag>
</use>
</pkgmetadata>

View File

@@ -1,117 +0,0 @@
# Copyright 2019-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DOCS_BUILDER="doxygen"
DOCS_CONFIG_NAME="doxy"
FORTRAN_NEEDED="fortran"
PYTHON_COMPAT=( pypy3 python3_{7,8,9} )
inherit docs 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 examples +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="
mpi? ( virtual/mpi )
ompi? (
|| ( sys-devel/gcc:*[openmp] sys-libs/libomp )
virtual/mpi
)
openmp? ( || ( sys-devel/gcc:*[openmp] sys-libs/libomp ) )
"
DEPEND="
${RDEPEND}
${PYTHON_DEPS}
"
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_prepare() {
default
sed 's/CXXFLAGS = $(CXXFLAGS)/CXXFLAGS = /' -i test/serial/Makefile || die
sed 's/`gcc/`${CC}/' -i config/determine-compiler-version.sh || die
}
src_configure() {
tc-export AR CC CXX F77 FC
export MPICC=/usr/bin/mpicc
export MPICXX=/usr/bin/mpicxx
export MPIF77=/usr/bin/mpif77
export MPIF90=/usr/bin/mpif90
export F90=$(tc-getFC)
export OMPF77=$(tc-getF77)
export OMPF90=$(tc-getFC)
append-fflags -fallow-argument-mismatch
local myconf=(
--disable-mic
--prefix="${T}/prefix/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() {
export VARTEXFONTS="${T}/fonts"
emake C_AR=$(tc-getAR) F90=$(tc-getFC)
docs_compile
}
src_install() {
mkdir -p "${T}/prefix/usr/share/doc/${PF}" || die
default
if use examples ; then
mv "${T}/prefix/usr/examples" "${T}/prefix/usr/share/doc/${PF}/" || die
else
rm -r "${T}/prefix/usr/examples" || die
fi
# move 64 bit libraries to lib64
libs64=( "${T}"/prefix/usr/lib/*64* )
if [[ ${#libs64[@]} -gt 0 ]]; then
mkdir "${T}/prefix/usr/lib64" || die
for l in "${libs64[@]}" ; do
mv "${l}" "${T}/prefix/usr/lib64/" || die
done
fi
rsync -ravXHA "${T}/prefix/usr" "${ED}/" || die
docompress -x "/usr/share/doc/${PF}/examples"
#TODO: build shared libs
#find "${ED}" -name '*.a' -delete || die
find "${ED}" -name '*.la' -delete || die
}

View File

@@ -12,13 +12,16 @@ inherit docs 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}l -> ${P}.tar.gz"
S="${WORKDIR}/sionlib"
SRC_URI="
!tools? ( http://apps.fz-juelich.de/jsc/sionlib/download.php?version=${PV} -> ${P}.tar.gz )
tools? ( http://apps.fz-juelich.de/jsc/sionlib/download.php?version=${PV}l -> ${PN}l-${PV}.tar.gz )
"
S="${WORKDIR}/${PN}"
LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64"
IUSE="+cxx debug doc examples +fortran +mpi +ompi +openmp +parutils +pthreads python"
IUSE="+cxx debug doc examples +fortran +mpi +ompi +openmp +parutils +pthreads python tools"
#TODO: cuda sionfwd msa
#--enable-sionfwd=/path/to/sionfwd
#--msa=(hostname-regex|deep-est-sdv)] MSA aware collective operations for the given system

View File

@@ -1 +0,0 @@
DIST sionlibl-1.7.7.tar.gz 490515 BLAKE2B 76971dd6d80222144b40da345d58311911aab09c6a5250b85d4a2731d2f93cdbd39d87dd6bbafdeaba88f06603105076267f6956417916f118ec45e07fa59269 SHA512 6ef46a0905552c558595bf6b72225a290d73dc87fa33c9862de5e4bd4d683792437646f7b4ab8a463b4a50d1b4a79aec96a66e577e815de3f23e9274be2681af

View File

@@ -1,34 +0,0 @@
<?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 lang="en">
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>