Commit 9dd32fe8 authored by FELŠÖCI Marek's avatar FELŠÖCI Marek
Browse files

hiepacs: add old version of pastix (v. 5.2.3)

parent f9b2883b
......@@ -110,6 +110,11 @@ build_pastix:
script:
- guix build pastix
build_pastix-5:
stage: build
script:
- guix build pastix@5
build_pastix/aarch64:
stage: build
script:
......
......@@ -9,6 +9,7 @@
#:use-module (guix hg-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages bison)
#:use-module (gnu packages flex)
......@@ -19,6 +20,8 @@
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages ssh)
#:use-module (gnu packages perl)
#:use-module (inria mpi)
#:use-module (inria storm)
#:use-module (inria tadaam)
#:use-module (inria eztrace)
......@@ -377,7 +380,7 @@ etc.")
(native-inputs `(("gfortran" ,gfortran)))
(license #f)))
(define-public pastix
(define-public pastix-6
(package
(name "pastix")
(version "6.0.2")
......@@ -464,3 +467,297 @@ static pivoting (for non symmetric matrices having a symmetric pattern).
This solver also provides some low-rank compression methods to reduce the
memory footprint and/or the time-to-solution.")
(license license:cecill)))
(define-public pastix-5
(package
(inherit pastix-6)
(name "pastix")
(version "5.2.3")
(source (origin
(method url-fetch)
(uri (string-append "https://gforge.inria.fr/frs/download.php/file/36212/pastix_5.2.3.tar.bz2"))
(sha256
(base32
"0iqyxr5lzjpavmxzrjj4kwayq62nip3ssjcm80d20zk0n3k7h6b4"))))
(build-system gnu-build-system)
(arguments
'(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'goto-src-dir
(lambda _
(chdir "src") #t))
(replace 'configure
(lambda _
(call-with-output-file "config.in"
(lambda (port)
(format port "
HOSTARCH = i686_pc_linux
VERSIONBIT = _32bit
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 = /path/to/install/directory
# 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 = -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
###################################################################
# 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 ?= ${HOME}/scotch_5.1/
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
#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)
"
))) #t))
(replace 'check
(lambda _
(invoke "make" "examples")
(invoke "./example/bin/simple" "-lap" "100"))))))
(native-inputs `(("perl" ,perl)
,@(package-native-inputs pastix-6)))
(propagated-inputs `(("openmpi" ,openmpi-with-mpi1-compat)
("openssh" ,openssh)
("scotch32" ,scotch32)
("pt-scotch" ,pt-scotch)
,@(package-propagated-inputs pastix-6)
,@(alist-delete "scotch"
(package-propagated-inputs pastix-6))))))
(define-public pastix pastix-6)
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