diff options
author | Myles English | 2015-10-03 16:09:00 +0100 |
---|---|---|
committer | Myles English | 2015-10-03 16:09:00 +0100 |
commit | c9730b1fccc953bbf9837a0ae13ca6ecbd94e42c (patch) | |
tree | 55954b0017c56df65d71ec05b2969f22fcff623e | |
download | aur-c9730b1fccc953bbf9837a0ae13ca6ecbd94e42c.tar.gz |
Initial import
-rw-r--r-- | .SRCINFO | 22 | ||||
-rw-r--r-- | Makefile.patch | 32 | ||||
-rw-r--r-- | PKGBUILD | 35 | ||||
-rw-r--r-- | config.in | 243 |
4 files changed, 332 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..ee7afaf82cc5 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,22 @@ +pkgbase = pastix + pkgdesc = A scientific library that provides a high performance parallel solver for very large sparse linear systems based on direct methods. + pkgver = 5.2.2.22 + pkgrel = 1 + url = https://gforge.inria.fr + arch = i686 + arch = x86_64 + license = CeCILL-C + makedepends = gcc-fortran + depends = python2 + depends = openmpi + depends = blas + depends = scotch + source = https://gforge.inria.fr/frs/download.php/file/35070/pastix_5.2.2.22.tar.bz2 + source = Makefile.patch + source = config.in + md5sums = 85127ecdfaeed39e850c996b78573d94 + md5sums = a7143be7e7b05f707cff456eb73c57b6 + md5sums = 76e78a25dddf0c184cc5c9e59eda7006 + +pkgname = pastix + diff --git a/Makefile.patch b/Makefile.patch new file mode 100644 index 000000000000..e6476f33a735 --- /dev/null +++ b/Makefile.patch @@ -0,0 +1,32 @@ +diff --git a/src/pastix_5.2.2.22/src/Makefile b/src/pastix_5.2.2.22/src/Makefile +index 8573076..92fe72b 100644 +--- a/src/pastix_5.2.2.22/src/Makefile ++++ b/src/pastix_5.2.2.22/src/Makefile +@@ -364,15 +364,15 @@ ifeq (i686_mac, ${HOSTARCH}) + DYLIB_OPT=${LDFLAGS} -L__LIBDIR__ -lpastix + endif + %/libmatrix_driver${LIB_SO}: $(OBJ_DRIVERS) +- $(MPCCPROG) $(subst __SO_NAME__,$@, ${SHARED_FLAGS}) -o $(dir $@)libmatrix_driver${VERSIONNAME}${LIB_SO} $(^) $(subst __LIBDIR__,$(dir $@),${DYLIB_OPT}) ++ $(MPCCPROG) $(subst __SO_NAME__,$(subst $(LIBDIR),,$@), ${SHARED_FLAGS}) -o $(dir $@)libmatrix_driver${VERSIONNAME}${LIB_SO} $(^) $(subst __LIBDIR__,$(dir $@),${DYLIB_OPT}) + (cd $(dir $@) && ln -sf libmatrix_driver${VERSIONNAME}${LIB_SO} libmatrix_driver${LIB_SO}) + + %/libpastix${LIB_SO}: $(OBJ_LIB) +- $(MPCCPROG) $(subst __SO_NAME__,$@, ${SHARED_FLAGS}) -o $(dir $@)libpastix${VERSIONNAME}${LIB_SO} $(^) $(filter-out -lpastix, $(subst __LIBDIR__,$(dir $@),${DYLIB_OPT})) ++ $(MPCCPROG) $(subst __SO_NAME__,$(subst $(LIBDIR),,$@), ${SHARED_FLAGS}) -o $(dir $@)libpastix${VERSIONNAME}${LIB_SO} $(^) $(filter-out -lpastix, $(subst __LIBDIR__,$(dir $@),${DYLIB_OPT})) + (cd $(dir $@) && ln -sf libpastix${VERSIONNAME}${LIB_SO} libpastix${LIB_SO}) + + %/libpastix_murge${LIB_SO}: $(OBJ_MURGE) %/libpastix${LIB} +- $(MPCCPROG) $(subst __SO_NAME__,$@, ${SHARED_FLAGS}) -o $(dir $@)libpastix_murge${VERSIONNAME}${LIB_SO} $(^) $(subst __LIBDIR__,$(dir $@),${DYLIB_OPT}) ++ $(MPCCPROG) $(subst __SO_NAME__,$(subst $(LIBDIR),,$@), ${SHARED_FLAGS}) -o $(dir $@)libpastix_murge${VERSIONNAME}${LIB_SO} $(^) $(subst __LIBDIR__,$(dir $@),${DYLIB_OPT}) + (cd $(dir $@) && ln -sf libpastix_murge${VERSIONNAME}${LIB_SO} libpastix_murge${LIB_SO}) + + endif +@@ -394,7 +394,7 @@ $(BUILD_BINDIR)/pastix-conf: config.in \ + $(filter-out $(wildcard $(BUILD_BINDIR)), $(BUILD_BINDIR)) + cp utils/src/pastix-conf.sh $@${VERSIONNAME}.sh + cat $@${VERSIONNAME}.sh | \ +- sed -e s%\_LIBS\_%"-L$(BUILD_LIBDIR) -lpastix ${EXTRALIB}"% | \ ++ sed -e s%\_LIBS\_%"-L$(patsubst $(ROOT),,$(BUILD_LIBDIR)) -lpastix ${EXTRALIB}"% | \ + sed -e s%\_INC\_%"-I$(BUILD_INCDIR)"% | \ + sed -e s%\_CC\_%"${MPCCPROG}"% | \ + sed -e s%\_CCOPT\_%"${CCOPT}"% | \ diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..c0797eb5f44d --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,35 @@ +# Maintainer: Myles English <myles at rockhead dot biz> +pkgname=pastix +pkgver=5.2.2.22 +pkgrel=1 +pkgdesc="A scientific library that provides a high performance parallel solver for very large sparse linear systems based on direct methods." +arch=('i686' 'x86_64') +url="https://gforge.inria.fr" +license=('CeCILL-C') +depends=('python2' 'openmpi' 'blas' 'scotch') +makedepends=('gcc-fortran') +#optdepends=('metis' 'parmetis') +source=("${url}/frs/download.php/file/35070/pastix_5.2.2.22.tar.bz2" + 'Makefile.patch' + 'config.in') +md5sums=('85127ecdfaeed39e850c996b78573d94' + 'a7143be7e7b05f707cff456eb73c57b6' + '76e78a25dddf0c184cc5c9e59eda7006') + +prepare() { + patch -p3 < Makefile.patch +} + +build() { + _build_dir=${srcdir}/${pkgname}_${pkgver}/src + cd ${_build_dir} + cp ${startdir}/config.in config.in + sed -i "s#PKG_DIR#${pkgdir}#" config.in + make +} + +package() { + _build_dir=${srcdir}/${pkgname}_${pkgver}/src + cd ${_build_dir} + make install +} diff --git a/config.in b/config.in new file mode 100644 index 000000000000..294e10a77b88 --- /dev/null +++ b/config.in @@ -0,0 +1,243 @@ +HOSTARCH = i686_pc_linux +VERSIONBIT = _64bit +EXEEXT = +OBJEXT = .o +LIBEXT = .a +CCPROG = gcc -Wall +CFPROG = gfortran +CF90PROG = gfortran -ffree-form +MCFPROG = mpif90 +CF90CCPOPT = -ffree-form -x f95-cpp-input +# Compilation options for optimization (make expor) +CCFOPT = -O3 +# Compilation options for debug (make | make debug) +CCFDEB = -g3 +CXXOPT = -O3 +NVCCOPT = -O3 + +LKFOPT = +MKPROG = make +MPCCPROG = mpicc -Wall +MPCXXPROG = mpic++ -Wall +CPP = cpp +ARFLAGS = ruv +ARPROG = ar +EXTRALIB = -lgfortran -lm -lrt +CTAGSPROG = ctags + +VERSIONMPI = _mpi +VERSIONSMP = _smp +VERSIONSCH = _static +VERSIONINT = _int +VERSIONPRC = _simple +VERSIONFLT = _real +VERSIONORD = _scotch + +################################################################### +# SETTING INSTALL DIRECTORIES # +################################################################### +ROOT = PKG_DIR +INCLUDEDIR = ${ROOT}/usr/include +LIBDIR = ${ROOT}/usr/lib +BINDIR = ${ROOT}/usr/bin +PYTHON_PREFIX = ${ROOT} + +################################################################### +# SHARED LIBRARY GENERATION # +################################################################### +SHARED=1 +SOEXT=.so +SHARED_FLAGS = -shared -Wl,-soname,__SO_NAME__ +CCFDEB := ${CCFDEB} -fPIC +CCFOPT := ${CCFOPT} -fPIC +CFPROG := ${CFPROG} -fPIC + +################################################################### +# INTEGER TYPE # +################################################################### +# Uncomment the following lines for integer type support (Only 1) + +#VERSIONINT = _long +#CCTYPES = -DFORCE_LONG -DINTSIZELONG +#--------------------------- +#VERSIONINT = _int32 +#CCTYPES = -DINTSIZE32 +#--------------------------- +VERSIONINT = _int64 +CCTYPES = -DINTSSIZE64 + +################################################################### +# FLOAT TYPE # +################################################################### +CCTYPESFLT = +# Uncomment the following lines for double precision support +VERSIONPRC = _double +CCTYPESFLT := $(CCTYPESFLT) -DPREC_DOUBLE + +# Uncomment the following lines for float=complex support +#VERSIONFLT = _complex +#CCTYPESFLT := $(CCTYPESFLT) -DTYPE_COMPLEX + + +################################################################### +# MPI/THREADS # +################################################################### + +# Uncomment the following lines for sequential (NOMPI) version +#VERSIONMPI = _nompi +#CCTYPES := $(CCTYPES) -DFORCE_NOMPI +#MPCCPROG = $(CCPROG) +#MCFPROG = $(CFPROG) + +# Uncomment the following lines for non-threaded (NOSMP) version +#VERSIONSMP = _nosmp +#CCTYPES := $(CCTYPES) -DFORCE_NOSMP + +# Uncomment the following line to enable a progression thread, +# then use IPARM_THREAD_COMM_MODE +#CCPASTIX := $(CCPASTIX) -DPASTIX_THREAD_COMM + +# Uncomment the following line if your MPI doesn't support MPI_THREAD_MULTIPLE level, +# then use IPARM_THREAD_COMM_MODE +#CCPASTIX := $(CCPASTIX) -DPASTIX_FUNNELED + +# Uncomment the following line if your MPI doesn't support MPI_Datatype correctly +#CCPASTIX := $(CCPASTIX) -DNO_MPI_TYPE + +# Uncomment the following line if you want to use semaphore barrier +# instead of MPI barrier (with IPARM_AUTOSPLIT_COMM) +#CCPASTIX := $(CCPASTIX) -DWITH_SEM_BARRIER + +# Uncomment the following lines to enable StarPU. +#CCPASTIX := $(CCPASTIX) `pkg-config libstarpu --cflags` -DWITH_STARPU +#EXTRALIB := $(EXTRALIB) `pkg-config libstarpu --libs` +# Uncomment the correct 2 lines +#CCPASTIX := $(CCPASTIX) -DCUDA_SM_VERSION=11 +#NVCCOPT := $(NVCCOPT) -maxrregcount 32 -arch sm_11 +#CCPASTIX := $(CCPASTIX) -DCUDA_SM_VERSION=13 +#NVCCOPT := $(NVCCOPT) -maxrregcount 32 -arch sm_13 +CCPASTIX := $(CCPASTIX) -DCUDA_SM_VERSION=20 +NVCCOPT := $(NVCCOPT) -arch sm_20 + +# Uncomment the following line to enable StarPU profiling +# ( IPARM_VERBOSE > API_VERBOSE_NO ). +#CCPASTIX := $(CCPASTIX) -DSTARPU_PROFILING + +# Uncomment the following line to enable CUDA (StarPU) +#CCPASTIX := $(CCPASTIX) -DWITH_CUDA + +################################################################### +# Options # +################################################################### + +# Show memory usage statistics +#CCPASTIX := $(CCPASTIX) -DMEMORY_USAGE + +# Show memory usage statistics in solver +#CCPASTIX := $(CCPASTIX) -DSTATS_SOPALIN + +# Uncomment following line for dynamic thread scheduling support +#CCPASTIX := $(CCPASTIX) -DPASTIX_DYNSCHED + +# Uncomment the following lines for Out-of-core +#CCPASTIX := $(CCPASTIX) -DOOC -DOOC_NOCOEFINIT -DOOC_DETECT_DEADLOCKS + +################################################################### +# GRAPH PARTITIONING # +################################################################### + +# Uncomment the following lines for using metis ordering +#VERSIONORD = _metis +#METIS_HOME = ${HOME}/metis-4.0 +#CCPASTIX := $(CCPASTIX) -DMETIS -I$(METIS_HOME)/Lib +#EXTRALIB := $(EXTRALIB) -L$(METIS_HOME) -lmetis + +# Scotch always needed to compile +SCOTCH_HOME ?= ${HOME}/scotch_5.1/ +SCOTCH_INC ?= /usr/include/scotch +SCOTCH_LIB ?= /usr/lib +# Uncomment on of this blocks +#scotch +#CCPASTIX := $(CCPASTIX) -I$(SCOTCH_INC) -DWITH_SCOTCH +#EXTRALIB := $(EXTRALIB) -L$(SCOTCH_LIB) -lscotch -lscotcherrexit +#ptscotch +CCPASTIX := $(CCPASTIX) -I$(SCOTCH_INC) -DDISTRIBUTED -DWITH_SCOTCH +#if scotch >= 6.0 +EXTRALIB := $(EXTRALIB) -L$(SCOTCH_LIB) -lptscotch -lscotch -lptscotcherrexit +#else +#EXTRALIB := $(EXTRALIB) -L$(SCOTCH_LIB) -lptscotch -lptscotcherrexit + +################################################################### +# Portable Hardware Locality # +################################################################### +# By default PaStiX uses hwloc to bind threads, +# comment this lines if you don't want it (not recommended) +HWLOC_HOME ?= /opt/hwloc/ +HWLOC_INC ?= $(HWLOC_HOME)/include +HWLOC_LIB ?= $(HWLOC_HOME)/lib +CCPASTIX := $(CCPASTIX) -I$(HWLOC_INC) -DWITH_HWLOC +EXTRALIB := $(EXTRALIB) -L$(HWLOC_LIB) -lhwloc + +################################################################### +# MARCEL # +################################################################### + +# Uncomment following lines for marcel thread support +#VERSIONSMP := $(VERSIONSMP)_marcel +#CCPASTIX := $(CCPASTIX) `pm2-config --cflags` -I${PM2_ROOT}/marcel/include/pthread +#EXTRALIB := $(EXTRALIB) `pm2-config --libs` +# ---- Thread Posix ------ +EXTRALIB := $(EXTRALIB) -lpthread + +# Uncomment following line for bubblesched framework support (need marcel support) +#VERSIONSCH = _dyn +#CCPASTIX := $(CCPASTIX) -DPASTIX_BUBBLESCHED + +################################################################### +# BLAS # +################################################################### + +# Choose Blas library (Only 1) +# Do not forget to set BLAS_HOME if it is not in your environnement +# BLAS_HOME=/path/to/blas +#---- Blas ---- +BLASLIB = -lblas +#---- Gotoblas ---- +#BLASLIB = -L${BLAS_HOME} -lgoto +#---- MKL ---- +#Uncomment the correct line +#BLASLIB = -L$(BLAS_HOME) -lmkl_intel_lp64 -lmkl_sequential -lmkl_core +#BLASLIB = -L$(BLAS_HOME) -lmkl_intel -lmkl_sequential -lmkl_core +#---- Acml ---- +#BLASLIB = -L$(BLAS_HOME) -lacml + +################################################################### +# MURGE # +################################################################### +# Uncomment if you need MURGE interface to be thread safe +# CCPASTIX := $(CCPASTIX) -DMURGE_THREADSAFE +# Uncomment this to have more timings inside MURGE +# CCPASTIX := $(CCPASTIX) -DMURGE_TIME + +################################################################### +# DO NOT TOUCH # +################################################################### + +FOPT := $(CCFOPT) +FDEB := $(CCFDEB) +CCHEAD := $(CCPROG) $(CCTYPES) $(CCFOPT) +CCFOPT := $(CCFOPT) $(CCTYPES) $(CCPASTIX) +CCFDEB := $(CCFDEB) $(CCTYPES) $(CCPASTIX) +NVCCOPT := $(NVCCOPT) $(CCTYPES) $(CCPASTIX) + +################################################################### +# MURGE COMPATIBILITY # +################################################################### + +MAKE = $(MKPROG) +CC = $(MPCCPROG) +CFLAGS = $(CCFOPT) $(CCTYPESFLT) +FC = $(MCFPROG) +FFLAGS = $(CCFOPT) +LDFLAGS = $(EXTRALIB) $(BLASLIB) +CTAGS = $(CTAGSPROG) |