Commit ae6d7150 authored by Matthieu Boileau's avatar Matthieu Boileau

Add pastix

parent 8465f439
File added
HOSTARCH = i686_pc_linux
VERSIONBIT = _64bit
EXEEXT =
OBJEXT = .o
LIBEXT = .a
CCPROG = icc -Wall
CFPROG = ifort
CF90PROG = ifort
MCFPROG = mpif90 -f90=ifort
CF90CCPOPT = -fpp
# Compilation options for optimization (make expor)
CCFOPT = -O3
# Compilation options for debug (make | make debug)
CCFDEB = -g3
LKFOPT =
MKPROG = make
MPCCPROG = mpicc -cc=icc -Wall
CPP = cpp
ARFLAGS = ruv
ARPROG = ar
# Uncomment the correct line
EXTRALIB = -lifcore -lm -lrt
VERSIONMPI = _mpi
VERSIONSMP = _smp
VERSIONSCH = _static
VERSIONINT = _int
VERSIONPRC = _simple
VERSIONFLT = _real
VERSIONORD = _scotch
###################################################################
# SETTING INSTALL DIRECTORIES #
###################################################################
# ROOT = /path/to/install/directory
# INCLUDEDIR = ${ROOT}/include
# LIBDIR = ${ROOT}/lib
# BINDIR = ${ROOT}/bin
###################################################################
# INTEGER TYPE #
###################################################################
# Uncomment the following lines for integer type support (Only 1)
#VERSIONINT = _long
#CCTYPES = -DFORCE_LONG -DLONG
#---------------------------
#VERSIONINT = _int32
CCTYPES = -DFORCE_INT32 -DINTSIZE32
#---------------------------
#VERSIONINT = _int64
#CCTYPES = -DFORCE_INT64 -DINTSSIZE64
###################################################################
# FLOAT TYPE #
###################################################################
CCTYPESFLT =
# Uncomment the following lines for double precision support
VERSIONPRC = _double
CCTYPESFLT := $(CCTYPESFLT) -DFORCE_DOUBLE -DPREC_DOUBLE
# Uncomment the following lines for float=complex support
#VERSIONFLT = _complex
#CCTYPESFLT := $(CCTYPESFLT) -DFORCE_COMPLEX -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
#CCPASTIX := $(CCPASTIX) -DTHREAD_COMM
# Uncomment the following line if your MPI doesn't support MPI_THREAD_MULTIPLE level
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 following line to enable StarPU profiling
# ( IPARM_VERBOSE > API_VERBOSE_NO ).
#CCPASTIX := ${CCPASTIX} -DSTARPU_PROFILING
# Uncomment the following line to disable CUDA (StarPU)
#CCPASTIX := ${CCPASTIX} -DFORCE_NO_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 ?= /csc/project/AUGJOR/LIBS/intelmpi_2015_01_26/scotch_5.1.12
SCOTCH_INC ?= $(SCOTCH_HOME)/include
SCOTCH_LIB ?= $(SCOTCH_HOME)/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
EXTRALIB := $(EXTRALIB) -L$(SCOTCH_LIB) -lscotch -lptscotch -lscotcherrexit
###################################################################
# Portable Hardware Locality #
###################################################################
# If HwLoc library is available, Uncomment the following lines to bind correctly threads on cpus
#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=${MKLROOT}/lib/intel64
#---- 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
###################################################################
# PYTHON WRAPPER #
###################################################################
#MPI4PY_DIR = /path/to/mpi4py
#MPI4PY_INC = $(MPI4PY_DIR)/src/include/
#MPI4PY_LIBDIR = $(MPI4PY_DIR)/build/lib.linux-x86_64-2.7/
#PYTHON_INC = /usr/include/python2.7/
#CCTYPES := $(CCTYPES) -fPIC
###################################################################
# DO NOT TOUCH #
###################################################################
FOPT := $(CCFOPT)
FDEB := $(CCFDEB)
CCHEAD := $(CCPROG) $(CCTYPES) $(CCFOPT)
CCFOPT := $(CCFOPT) $(CCTYPES) $(CCPASTIX)
CCFDEB := $(CCFDEB) $(CCTYPES) $(CCPASTIX)
###################################################################
# MURGE COMPATIBILITY #
###################################################################
# Uncomment if you need MURGE interface to be thread safe
# CCPASTIX := $(CCPASTIX) -DMURGE_THREADSAFE
MAKE = $(MKPROG)
CC = $(MPCCPROG)
CFLAGS = $(CCFOPT) $(CCTYPESFLT)
FC = $(MCFPROG)
FFLAGS = $(CCFOPT)
LDFLAGS = $(EXTRALIB) $(BLASLIB)
HOSTARCH = i686_pc_linux
VERSIONBIT = _64bit
EXEEXT =
OBJEXT = .o
LIBEXT = .a
CCPROG = gcc -Wall
CFPROG = gfortran
CF90PROG = gfortran -ffree-form
CXXPROG = g++
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 = {{ INSTALL_DIR }}
INCLUDEDIR = ${ROOT}/include
LIBDIR = ${ROOT}/lib
BINDIR = ${ROOT}/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 = -DFORCE_INT32 -DINTSIZE32
#---------------------------
#VERSIONINT = _int64
#CCTYPES = -DINTSSIZE64
###################################################################
# FLOAT TYPE #
###################################################################
CCTYPESFLT =
# Uncomment the following lines for double precision support
VERSIONPRC = _double
CCTYPESFLT := $(CCTYPESFLT) -DFORCE_DOUBLE -DPREC_DOUBLE
# Uncomment the following lines for float=complex support
#VERSIONFLT = _complex
#CCTYPESFLT := $(CCTYPESFLT) -DTYPE_COMPLEX
###################################################################
# FORTRAN MANGLING #
###################################################################
#CCTYPES := $(CCTYPES) -DPASTIX_FM_NOCHANGE
###################################################################
# MPI/THREADS #
###################################################################
# Uncomment the following lines for sequential (NOMPI) version
#VERSIONMPI = _nompi
#CCTYPES := $(CCTYPES) -DFORCE_NOMPI
#MPCCPROG = $(CCPROG)
#MCFPROG = $(CFPROG)
#MPCXXPROG = $(CXXPROG)
# 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 ?= /usr
SCOTCH_INC ?= $(SCOTCH_HOME)/include/scotch
SCOTCH_LIB ?= $(SCOTCH_HOME)/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=/usr/lib
#---- 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)
#!/bin/bash
set -x
LIB_NAME="pastix"
LIB_VERSION=5.2.3
GCC_VERSION=6.4.0
MPI_LIB=openmpi
MPI_VERSION=1.10.7
CMAKE_VERSION=3.9.2
LIB_FULLNAME=${LIB_NAME}-${LIB_VERSION}
LIB_VERSION_SHORT="${LIB_VERSION%.*}"
GCC_FULL=gcc-$GCC_VERSION
GCC_SHORT="gcc${GCC_VERSION//.}"
MPI_FULL=${MPI_LIB}-${MPI_VERSION}
MPI_SHORT="${MPI_LIB}${MPI_VERSION//.}"
SUB_DIR=${LIB_NAME}/${LIB_VERSION}/${GCC_FULL}/${MPI_FULL}
WORK_DIR=/data/software/sources/${SUB_DIR}
SRC_DIR=${WORK_DIR}/${LIB_FULLNAME}
ARCHIVE=${SRC_DIR}.tar.gz
URL="https://gforge.inria.fr/frs/download.php/file/36212/${pastix}_${LIB_VERSION}.tar.bz2"
INSTALL_DIR=/data/software/install/${SUB_DIR}
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MODULE_DIR=/data/software/modules/tools/${LIB_NAME}
MODULE_PATH=${MODULE_DIR}/${LIB_VERSION}_${GCC_SHORT}_${MPI_SHORT}
install_lib()
{
module purge
module load gcc/${GCC_VERSION}
module load ${MPI_LIB}/${MPI_VERSION}_${GCC_SHORT}
gcc --version |head -n 1
mpirun --version |head -n 1
sleep 2
if [[ ! -f $ARCHIVE ]]; then
mkdir -p $WORK_DIR
wget $URL -O $ARCHIVE
fi
if [[ ! -d $SRC_DIR ]]; then
EXTRACT_DIR=${ARCHIVE%.tar*}
mkdir -p $EXTRACT_DIR
tar --extract --file=${ARCHIVE} --strip-components=1 --directory=$EXTRACT_DIR
fi
cd $SCRIPT_DIR
export INSTALL_DIR
envtpl --keep-template -o $SRC_DIR/src/config.in config.tmpl || exit 1
cd $SRC_DIR/src
make clean || exit 1
make -j || exit 1
#make examples
make -j install || exit 1
}
install_module()
{
cd $SCRIPT_DIR
mkdir -p ${MODULE_DIR}
export LIB_NAME
export LIB_VERSION_SHORT
export LIB_VERSION
export INSTALL_DIR
export GCC_VERSION
export GCC_SHORT
export MPI_LIB
export MPI_VERSION
export MPI_SHORT
envtpl --keep-template -o $MODULE_PATH module.tmpl
}
if [[ $1 == "module" ]]
then
install_module
elif [[ $1 == "clean" ]]
then
if [[ -d $SRC_DIR ]]
then
rm -rf $SRC_DIR
else
echo "$SRC_DIR does not exist"
exit 1
fi
else
install_lib
# install_module
fi
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment