summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMyles English2015-10-03 16:09:00 +0100
committerMyles English2015-10-03 16:09:00 +0100
commitc9730b1fccc953bbf9837a0ae13ca6ecbd94e42c (patch)
tree55954b0017c56df65d71ec05b2969f22fcff623e
downloadaur-c9730b1fccc953bbf9837a0ae13ca6ecbd94e42c.tar.gz
Initial import
-rw-r--r--.SRCINFO22
-rw-r--r--Makefile.patch32
-rw-r--r--PKGBUILD35
-rw-r--r--config.in243
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)