introduced rpath to tell executable where libraries are located
This commit is contained in:
parent
a1cfc85d74
commit
02441bef0f
|
@ -25,24 +25,25 @@ if [ ! -z "$PS1" ]; then
|
|||
echo Using environment with ...
|
||||
echo "DAMASK installation in $DAMASK_ROOT"
|
||||
echo "DAMASK_NUM_THREADS=$DAMASK_NUM_THREADS"
|
||||
echo "F90=$F90"
|
||||
echo "FFTW_ROOT=$FFTW_ROOT"
|
||||
echo "Compiler: F90=$F90"
|
||||
if [ "x$LAPACK_ROOT" != "x" ]; then
|
||||
echo "LAPACK_ROOT=$LAPACK_ROOT"
|
||||
echo "LAPACK libaries located in $LAPACK_ROOT"
|
||||
fi
|
||||
if [ "x$ACML_ROOT" != "x" ]; then
|
||||
echo "ACML_ROOT=$ACML_ROOT"
|
||||
echo "ACML libaries located in $ACML_ROOT"
|
||||
fi
|
||||
if [ "x$IMKL_ROOT" != "x" ]; then
|
||||
echo "IMKL_ROOT=$IMKL_ROOT"
|
||||
echo "IMKL libaries located in $IMKL_ROOT"
|
||||
fi
|
||||
echo "MARC_ROOT=$MARC_ROOT"
|
||||
echo "HDF5_ROOT=$HDF5_ROOT (future use)"
|
||||
echo "MSC.Marc root $MARC_ROOT"
|
||||
echo "FFTW libaries located in $FFTW_ROOT"
|
||||
echo "HDF5 libaries located in $HDF5_ROOT (future use)"
|
||||
fi
|
||||
ulimit -s unlimited
|
||||
ulimit -c 0
|
||||
ulimit -v unlimited
|
||||
ulimit -m unlimited
|
||||
export PYTHONPATH=$PYTHONPATH:$DAMASK_ROOT/lib
|
||||
unset DAMASK_ROOT
|
||||
unset DAMASK_ROOT LAPACK_ROOT ACML_ROOT IMKL_ROOT MARC_ROOT FFTW_ROOT HDF5_ROOT
|
||||
|
||||
|
||||
|
|
7
Makefile
7
Makefile
|
@ -2,6 +2,13 @@ SHELL = /bin/sh
|
|||
########################################################################################
|
||||
# Makefile for the installation of DAMASK
|
||||
########################################################################################
|
||||
.PHONY: all
|
||||
all:
|
||||
spectral
|
||||
marc
|
||||
processing
|
||||
install
|
||||
|
||||
.PHONY: spectral
|
||||
spectral:
|
||||
@$(MAKE) clean -C code >/dev/null
|
||||
|
|
|
@ -41,12 +41,12 @@ else
|
|||
include /etc/damask.conf
|
||||
endif
|
||||
|
||||
|
||||
COMPILERNAME ?= $(F90)
|
||||
|
||||
INCLUDE_DIRS :=-I../lib
|
||||
LIBRARIES :=-lfftw3
|
||||
LIB_DIRS :=-L$$FFTW_ROOT/lib
|
||||
LIB_DIRS :=-L$(FFTW_ROOT)/lib
|
||||
RUN_PATH :=-Wl,-rpath,$(FFTW_ROOT)/lib
|
||||
|
||||
ifeq "$(FASTBUILD)" "YES"
|
||||
OPENMP := OFF
|
||||
|
@ -94,29 +94,30 @@ IMKL_ARCH =_sequential
|
|||
endif
|
||||
|
||||
ifneq "x$(IMKL_ROOT)" "x"
|
||||
LIB_DIRS :=-L$$IMKL_ROOT/lib/intel64
|
||||
LIB_DIRS :=-L$(IMKL_ROOT)/lib/intel64
|
||||
RUN_PATH +=$(RUNPATH) -Wl,-rpath,$(IMKL_ROOT)/lib/intel64
|
||||
INCLUDE_DIRS +=-I$(IMKL_ROOT)/include
|
||||
LIBRARIES +=-lmkl_intel_lp64 -lmkl_core -lmkl$(ACML_ARCH) -lm -lpthread -liomp5
|
||||
else
|
||||
ifneq "x$(ACML_ROOT)" "x"
|
||||
LIB_DIRS +=-L$$ACML_ROOT/$(F90)64$(ACML_ARCH)/lib
|
||||
LIB_DIRS +=-L$(ACML_ROOT)/$(F90)64$(ACML_ARCH)/lib
|
||||
RUN_PATH +=$(RUNPATH) -Wl,-rpath,$(ACML_ROOT)/$(F90)64$(ACML_ARCH)/lib
|
||||
LIBRARIES +=-lacml$(ACML_ARCH)
|
||||
else
|
||||
ifneq "x$(LAPACK_ROOT)" "x"
|
||||
LIB_DIRS +=-L$$LAPACK_ROOT/lib64 -L$$LAPACK_ROOT/lib
|
||||
LIB_DIRS +=-L$(LAPACK_ROOT)/lib64 -L$(LAPACK_ROOT)/lib
|
||||
RUN_PATH +=$(RUN_PATH) -Wl,-rpath,$(LAPACK_ROOT)/lib64 -Wl,-rpath,$(LAPACK_ROOT)/lib
|
||||
LIBRARIES +=-llapack
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
|
||||
|
||||
#hdf5
|
||||
ifeq "$(HDF5)" "ON"
|
||||
LIBRARIES +=-lhdf5hl_fortran -lhdf5_hl -lhdf5_fortran -lhdf5
|
||||
LIB_DIRS +=-L$$HDF5ROOT/lib
|
||||
INCLUDE_DIRS +=-I$(HDF5ROOT)/include -DHDF
|
||||
LIB_DIRS +=-L$(HDF5_ROOT)/lib
|
||||
RUN_PATH +=$(RUNPATH) -Wl,-rpath,$(HDF5_ROOT)/lib
|
||||
INCLUDE_DIRS +=-I$(HDF5_ROOT)/include -DHDF
|
||||
endif
|
||||
|
||||
ifdef PETSC_DIR
|
||||
|
@ -360,7 +361,7 @@ endif
|
|||
DAMASK_spectral.exe: DAMASK_spectral_driver.o
|
||||
$(PREFIX) $(COMPILERNAME) $(OPENMP_FLAG_$(F90)) $(OPTIMIZATION_$(MAXOPTI)_$(F90)) $(STANDARD_CHECK_$(F90)) \
|
||||
-o DAMASK_spectral.exe DAMASK_spectral_driver.o \
|
||||
$(COMPILED_FILES) $(LIB_DIRS) $(LIBRARIES) $(SUFFIX)
|
||||
$(COMPILED_FILES) $(LIB_DIRS) $(LIBRARIES) $(RUN_PATH) $(SUFFIX)
|
||||
|
||||
DAMASK_spectral_driver.o: DAMASK_spectral_driver.f90 DAMASK_spectral_solverBasic.o $(PETSC_FILES)
|
||||
$(PREFIX) $(COMPILERNAME) $(COMPILE_MAXOPTI) -c DAMASK_spectral_driver.f90 $(SUFFIX)
|
||||
|
|
|
@ -142,7 +142,7 @@ if options.compiler not in ['ifort','gfortran']:
|
|||
if not subprocess.call(['which', options.compiler],stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0:
|
||||
print('Compiler Warning: executable %s not found!'%options.compiler)
|
||||
|
||||
for lib in ['libfftw3.a','libfftw3.a']:
|
||||
for lib in ['libfftw3.so','libfftw3.a']:
|
||||
if not os.path.isfile(os.path.join(options.fftwRoot,'lib/%s'%lib)):
|
||||
print('FFTW Warning: %s not found in %s!'%(lib,os.path.join(options.fftwRoot,'lib')))
|
||||
|
||||
|
@ -154,16 +154,16 @@ if options.blasType == 'LAPACK':
|
|||
blasLocation = os.path.join(options.blasRoot,'lib64')
|
||||
else:
|
||||
blasLocation=os.path.join(options.blasRoot,'lib')
|
||||
for lib in ['liblapack.a','liblapack.a']:
|
||||
for lib in ['liblapack.so','liblapack.a']:
|
||||
if not os.path.isfile(os.path.join(blasLocation,lib)):
|
||||
print('LAPACK Warning: %s not found in %s!'%(lib,blasLocation))
|
||||
elif options.blasType == 'ACML':
|
||||
blasLocationSerial=os.path.join(options.blasRoot,'%s64/lib'%options.compiler)
|
||||
for lib in ['libacml.a','libacml.a']:
|
||||
for lib in ['libacml.so','libacml.a']:
|
||||
if not os.path.isfile(os.path.join(blasLocationSerial,lib)):
|
||||
print('ACML Warning: %s not found in %s!'%(lib,blasLocationSerial))
|
||||
blasLocationParallel=os.path.join(options.blasRoot,'%s64_mp/lib'%options.compiler)
|
||||
for lib in ['libacml_mp.a','libacml_mp.a']:
|
||||
for lib in ['libacml_mp.so','libacml_mp.a']:
|
||||
if not os.path.isfile(os.path.join(blasLocationParallel,lib)):
|
||||
print('ACML Warning: %s not found in %s!'%(lib,blasLocationParallel))
|
||||
elif options.blasType == 'IMKL':
|
||||
|
@ -173,6 +173,7 @@ elif options.blasType == 'IMKL':
|
|||
blasLocation=os.path.join(options.blasRoot,'lib/intel64')
|
||||
for lib in ['libmkl_core.so','libmkl_core.a',\
|
||||
'libmkl_sequential.so','libmkl_sequential.a',\
|
||||
'libmkl_intel_thread.so','libmkl_intel_thread.a',\
|
||||
'libmkl_intel_lp64.so','libmkl_intel_lp64.a']:
|
||||
if not os.path.isfile(os.path.join(blasLocation,lib)):
|
||||
print('IMKL Warning: %s not found in %s!'%(lib,blasLocation))
|
||||
|
|
|
@ -23,20 +23,29 @@ compilers = ['ifort','gfortran']
|
|||
if options['F90'] not in compilers:
|
||||
sys.exit('compiler "F90" (in installation/options or as Shell variable) has to be one out of: %s'%(', '.join(compilers)))
|
||||
|
||||
compileCommand = {
|
||||
'gfortran': 'gnu95 --f90flags="-fPIC -fno-range-check -xf95-cpp-input -std=f2008 -fall-intrinsics'+\
|
||||
' -DSpectral -fdefault-real-8 -fdefault-double-8 -DFLOAT=8 -DINT=4 -I%s/lib"'%damaskEnv.rootDir(),
|
||||
'ifort': 'intelem --f90flags="-fPIC -fpp -stand f08 -diag-disable 5268 -assume byterecl'+\
|
||||
' -DSpectral -real-size 64 -integer-size 32 -DFLOAT=8 -DINT=4 -I%s/lib"'%damaskEnv.rootDir(),
|
||||
compiler = {
|
||||
'gfortran': '--fcompiler=gnu95 --f90flags="-fPIC -fno-range-check -xf95-cpp-input -std=f2008 -fall-intrinsics'+\
|
||||
' -fdefault-real-8 -fdefault-double-8"',
|
||||
'ifort': '--fcompiler=intelem --f90flags="-fPIC -fpp -stand f08 -diag-disable 5268 -assume byterecl'+\
|
||||
' -real-size 64 -integer-size 32"',
|
||||
}[options['F90']]
|
||||
|
||||
# option not depending on compiler
|
||||
compileOptions =' -DSpectral -DFLOAT=8 -DINT=4 -I%s/lib'%damaskEnv.rootDir()
|
||||
|
||||
# this saves the path of libraries during runtime
|
||||
LDFLAGS ='-Wl,-rpath,%s/lib'%(options['FFTW_ROOT'])
|
||||
|
||||
# see http://cens.ioc.ee/pipermail/f2py-users/2003-December/000621.html
|
||||
if options['IMKL_ROOT'] != '' and options['F90'] != 'gfortran':
|
||||
lib_lapack = '-L$IMKL_ROOT/lib/intel64 -I%s/include -lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lpthread -lm -liomp5'%options['IMKL_ROOT']
|
||||
lib_lapack = '-L%s/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lpthread -lm -liomp5'%options['IMKL_ROOT']
|
||||
LDFLAGS +=' -Wl,-rpath,%s/lib/intel64'%(options['IMKL_ROOT'])
|
||||
elif options['ACML_ROOT'] != '':
|
||||
lib_lapack = '-L$ACML/%s64/lib -lacml'%options['F90']
|
||||
lib_lapack = '-L%s/%s64/lib -lacml'%(options['ACML_ROOT'],options['F90'])
|
||||
LDFLAGS +=' -Wl,-rpath,%s/%s64/lib'%(options['ACML_ROOT'],options['F90'])
|
||||
elif options['LAPACK_ROOT'] != '':
|
||||
lib_lapack = '-L$LAPACK_ROOT/lib -L$LAPACK_ROOT/lib64 -llapack'
|
||||
lib_lapack = '-L%s/lib -L%s/lib64 -llapack'%(options['LAPACK_ROOT'],options['LAPACK_ROOT'])
|
||||
LDFLAGS +=' -Wl,-rpath,%s/lib -Wl,-rpath,%s/lib64'%(options['LAPACK_ROOT'],options['LAPACK_ROOT'])
|
||||
|
||||
os.chdir(codeDir) # needed for compilation with gfortran and f2py
|
||||
try:
|
||||
|
@ -55,7 +64,8 @@ except OSError, e:
|
|||
#' --overwrite-signature --no-lower prec.f90 DAMASK_spectral_interface.f90 math.f90 mesh.f90,...'
|
||||
###########################################################################
|
||||
cmd = 'f2py damask.core.pyf' +\
|
||||
' -c --no-lower --fcompiler=%s'%(compileCommand) +\
|
||||
' -c --no-lower %s'%(compiler) +\
|
||||
compileOptions+\
|
||||
' prec.f90'+\
|
||||
' DAMASK_spectral_interface.f90'+\
|
||||
' IO.f90'+\
|
||||
|
@ -66,12 +76,16 @@ cmd = 'f2py damask.core.pyf' +\
|
|||
' FEsolving.f90'+\
|
||||
' mesh.f90'+\
|
||||
' core_quit.f90'+\
|
||||
' -L$FFTW_ROOT/lib -lfftw3'+\
|
||||
' -L%s/lib -lfftw3'%(options['FFTW_ROOT'])+\
|
||||
' %s'%lib_lapack
|
||||
|
||||
# f2py does not (yet) support setting of special flags for the linker, hence they must be set via
|
||||
# environment variable
|
||||
my_env = os.environ
|
||||
my_env["LDFLAGS"] = LDFLAGS
|
||||
print('Executing: '+cmd)
|
||||
try:
|
||||
subprocess.call(shlex.split(cmd))
|
||||
subprocess.call(shlex.split(cmd),env=my_env)
|
||||
except subprocess.CalledProcessError:
|
||||
print('build failed')
|
||||
except OSError:
|
||||
|
|
|
@ -60,13 +60,13 @@ BLASDIR=${BLASDIR%/} # remove trailing slash
|
|||
|
||||
case $BLASTYPE in
|
||||
IMKL | imkl)
|
||||
BLAS=" -mkl"
|
||||
BLAS=" -mkl=sequential -lpthread -lm -rpath=$BLASDIR/lib/intel64" #rpoath
|
||||
;;
|
||||
ACML | acml)
|
||||
BLAS=" -L$BLASDIR/ifort64_mp/lib -lacml_mp"
|
||||
BLAS=" -L$BLASDIR/ifort64/lib -lacml -rpath=$BLASDIR/ifort64/lib"
|
||||
;;
|
||||
LAPACK | lapack)
|
||||
BLAS=" -L$BLASDIR/lib64 -L$BLASDIR/lib -llapack"
|
||||
BLAS=" -L$BLASDIR/lib64 -L$BLASDIR/lib -llapack -rpath=$BLASDIR/lib64 -rpath$BLASDIR/lib"
|
||||
;;
|
||||
*)
|
||||
echo "error, BLAS type must be IMKL, ACML, or LAPACK"
|
||||
|
|
Loading…
Reference in New Issue