Page 1 of 1

OpenSeesMP install Centos 7.2/SL 7.2

Posted: Mon Feb 01, 2016 12:04 am
by catalinbostan
Finally i was able to compile OpenseesMP under Centos 7.2
The following command was used:
1.Minimal Centos install
2.yum install tcl tcl-devel tk tk-devel gcc gcc-c++ mpich mpich-devel subversion nano net-tools
3. mkdir /root/lib /root/bin
4.cd /root
5.make a coffee :)
6.edit /etc/hosts and add a line with xx.xx.xx.xx name.localdomain name ( xx.xx.xx.xx is your IP, name si hostname, localdomain is your domain name)
this is for mpich
7.svn co svn://peera.berkeley.edu/usr/local/svn/OpenSees/trunk OpenSees
8. cd OpenSees
9.touch Makefile.def
10.nano Makefile.def and put the following text there

##################################################################################
PROGRAMMING_MODE = PARALLEL_INTERPRETERS
OpenSees_PROGRAM = $(HOME)/bin/OpenSees
OpenSees_PROGRAM = $(HOME)/bin/OpenSeesMP
PROGRAMMING_FLAG = -D_PARALLEL_INTERPRETERS
OPERATING_SYSTEM = LINUX
GRAPHICS = NONE
GRAPHIC_FLAG = -D_NOGRAPHICS
DEBUG_MODE = NO_DEBUG
RELIABILITY = NO_RELIABILITY
###################################################################################
BASE = /usr/lib
HOME = /root
FE = $(HOME)/OpenSees/SRC
AMDdir = $(HOME)/OpenSees/OTHER/AMD
BLASdir = $(HOME)/OpenSees/OTHER/BLAS
CBLASdir = $(HOME)/OpenSees/OTHER/CBLAS
LAPACKdir = $(HOME)/OpenSees/OTHER/LAPACK
SUPERLU_DISTdir = $(HOME)/OpenSees/OTHER/SuperLU_DIST_2.5/SRC
SUPERLUdir = $(HOME)/OpenSees/OTHER/SuperLU_4.1/SRC
ARPACKdir = $(HOME)/OpenSees/OTHER/ARPACK
UMFPACKdir = $(HOME)/OpenSees/OTHER/UMFPACK
METISdir = $(HOME)/OpenSees/OTHER/METIS
CSPARSEdir = $(HOME)/OpenSees/OTHER/CSPARSE
SRCdir = $(HOME)/OpenSees/SRC
DIRS = $(BLASdir) $(CBLASdir) $(LAPACKdir) $(AMDdir) $(CSPARSEdir) \
$(SUPERLUdir) $(SUPERLU_DISTdir) $(ARPACKdir) $(UMFPACKdir) $(SRCdir) $(METISdir)
#####################################################################################
FE_LIBRARY = $(HOME)/lib/libOpenSees.a
NDARRAY_LIBRARY = $(HOME)/lib/libndarray.a # BJ_UCD jeremic@ucdavis.edu
MATMOD_LIBRARY = $(HOME)/lib/libmatmod.a # BJ_UCD jeremic@ucdavis.edu
BJMISC_LIBRARY = $(HOME)/lib/libBJmisc.a # BJ_UCD jeremic@ucdavis.edu
LAPACK_LIBRARY = $(HOME)/lib/libLapack.a
BLAS_LIBRARY = $(HOME)/lib/libBlas.a
SUPERLU_LIBRARY = $(HOME)/lib/libSuperLU.a
CBLAS_LIBRARY = $(HOME)/lib/libCBlas.a
ARPACK_LIBRARY = $(HOME)/lib/libArpack.a
AMD_LIBRARY = $(HOME)/lib/libAMD.a
UMFPACK_LIBRARY = $(HOME)/lib/libUmfpack.a
METIS_LIBRARY = $(HOME)/lib/libMetis.a
CSPARSE_LIBRARY = $(HOME)/lib/libCSparse.a
#TCL_LIBRARY = /opt/ActiveTcl-8.6/lib/libtcl8.6.so
TCL_LIBRARY = /usr/lib64/libtcl8.5.so
BLITZ_LIBRARY = $(HOME)/blitz/lib/libblitz.a
GRAPHIC_LIBRARY =
DISTRIBUTED_SUPERLU_LIBRARY = $(HOME)/lib/libDistributedSuperLU.a
WIPE_LIBS = $(FE_LIBRARY) \
$(LAPACK_LIBRARY) \
$(BLAS_LIBRARY) \
$(CBLAS_LIBRARY) \
$(SUPERLU_LIBRARY) \
$(ARPACK_LIBRARY) \
$(UMFPACK_LIBRARY) \
$(CSPARSE_LIBRARY) \
$(DISTRIBUTED_SUPERLU_LIBRARY) \
$(METIS_LIBRARY)
#########################################################################################
CC++ =/usr/lib64/mpich/bin/mpic++
CC = /usr/lib64/mpich/bin/mpicc
FC = /usr/lib64/mpich/bin/mpif90
F90 = /usr/lib64/mpich/bin/mpif90
#########################################################################################
C++FLAGS = -Wall -D_LINUX -D_UNIX -D_TCL85 \
$(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) \
$(PROGRAMMING_FLAG) -O3 -ffloat-store
CFLAGS = -Wall -O2
FFLAGS = -Wall -O
LINKER = $(CC++)
LINKFLAGS = -rdynamic
AR = ar
ARFLAGS = cqls
RANLIB = ranlib
RANLIBFLAGS =
MAKE = make
CD = cd
ECHO = echo
RM = rm
RMFLAGS = -f
SHELL = /bin/sh
########################################################################################
.SUFFIXES:
.SUFFIXES: .C .c .f .f90 .cpp .o .cpp
.DEFAULT:
@$(ECHO) "Unknown target $@, try: make help"

.cpp.o:
@$(ECHO) Making $@ from $<
$(CC++) $(C++FLAGS) $(INCLUDES) -c $< -o $@

.C.o:
@$(ECHO) Making $@ from $<
$(CC++) $(C++FLAGS) $(INCLUDES) -c $< -o $@
.c.o:
@$(ECHO) Making $@ from $<
$(CC) $(CFLAGS) -c $< -o $@
.f.o:
@$(ECHO) Making $@ from $<
$(FC) $(FFLAGS) -c $< -o $@

######################################################################################
MACHINE_LINKLIBS = -L$(BASE)/lib \
-L$(HOME)/lib

MACHINE_NUMERICAL_LIBS = -lm \
$(ARPACK_LIBRARY) \
$(SUPERLU_LIBRARY) \
$(UMFPACK_LIBRARY) $(CSPARSE_LIBRARY) \
$(LAPACK_LIBRARY) $(BLAS_LIBRARY) $(CBLAS_LIBRARY) \
$(AMD_LIBRARY) $(GRAPHIC_LIBRARY)\
-ldl -lgfortran

MACHINE_SPECIFIC_LIBS =
#######################################################################################
MACHINE_INCLUDES = -I/usr/include \
-I$(BASE)/include \
-I/usr/include/cxx \
-I$(HOME)/include -I$(SUPERLU_DISTdir)

# this file contains all the OpenSees/SRC includes
include $(FE)/Makefile.incl
TCL_INCLUDES = -I/usr/includes/tcl-private/generic
INCLUDES = $(TCL_INCLUDES) $(FE_INCLUDES) $(MACHINE_INCLUDES)
######################################################################################

11.make
12. wait
13. cd /root/bin
14.OpenseesMP
output will be:
" OpenSees -- Open System For Earthquake Engineering Simulation
Pacific Earthquake Engineering Research Center
Version 2.4.6 (rev 6123) 32-Bit

(c) Copyright 1999-2016 The Regents of the University of California
All Rights Reserved
(Copyright and Disclaimer @ http://www.berkeley.edu/OpenSees/copyright.html)


OpenSees >"
15.ldd -v OpenSeesMP
output will be:
linux-vdso.so.1 => (0x00007fff0d3d2000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fb026ec6000)
libgfortran.so.3 => /lib64/libgfortran.so.3 (0x00007fb026ba3000)
libtcl8.5.so => /lib64/libtcl8.5.so (0x00007fb02687b000)
libmpichcxx.so.10 => /usr/lib64/mpich/lib/libmpichcxx.so.10 (0x00007fb026659000)
libmpich.so.10 => /usr/lib64/mpich/lib/libmpich.so.10 (0x00007fb0261ed000)
libopa.so.1 => /usr/lib64/mpich/lib/libopa.so.1 (0x00007fb025feb000)
libmpl.so.1 => /usr/lib64/mpich/lib/libmpl.so.1 (0x00007fb025de5000)
librt.so.1 => /lib64/librt.so.1 (0x00007fb025bdc000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb0259c0000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fb0256b8000)
libm.so.6 => /lib64/libm.so.6 (0x00007fb0253b5000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fb02519f000)
libc.so.6 => /lib64/libc.so.6 (0x00007fb024dde000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb0270d2000)
libquadmath.so.0 => /lib64/libquadmath.so.0 (0x00007fb024ba1000)

Version information:
./OpenSeesMP:
libgcc_s.so.1 (GCC_4.0.0) => /lib64/libgcc_s.so.1
libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
libpthread.so.0 (GLIBC_2.2.5) => /lib64/libpthread.so.0
libm.so.6 (GLIBC_2.2.5) => /lib64/libm.so.6
libstdc++.so.6 (GLIBCXX_3.4.9) => /lib64/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4.11) => /lib64/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4.15) => /lib64/libstdc++.so.6
libstdc++.so.6 (CXXABI_1.3) => /lib64/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4) => /lib64/libstdc++.so.6
libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
libdl.so.2 (GLIBC_2.2.5) => /lib64/libdl.so.2
libgfortran.so.3 (GFORTRAN_1.4) => /lib64/libgfortran.so.3
libgfortran.so.3 (GFORTRAN_1.0) => /lib64/libgfortran.so.3
/lib64/libdl.so.2:
ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/libgfortran.so.3:
libm.so.6 (GLIBC_2.2.5) => /lib64/libm.so.6
libgcc_s.so.1 (GCC_4.2.0) => /lib64/libgcc_s.so.1
libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
libgcc_s.so.1 (GCC_3.3) => /lib64/libgcc_s.so.1
libgcc_s.so.1 (GCC_4.3.0) => /lib64/libgcc_s.so.1
libquadmath.so.0 (QUADMATH_1.0) => /lib64/libquadmath.so.0
libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.17) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib64/libc.so.6
/lib64/libtcl8.5.so:
libdl.so.2 (GLIBC_2.2.5) => /lib64/libdl.so.2
libm.so.6 (GLIBC_2.2.5) => /lib64/libm.so.6
libpthread.so.0 (GLIBC_2.3.2) => /lib64/libpthread.so.0
libpthread.so.0 (GLIBC_2.2.5) => /lib64/libpthread.so.0
libc.so.6 (GLIBC_2.7) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.15) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib64/libc.so.6
/usr/lib64/mpich/lib/libmpichcxx.so.10:
libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
libstdc++.so.6 (CXXABI_1.3) => /lib64/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4) => /lib64/libstdc++.so.6
/usr/lib64/mpich/lib/libmpich.so.10:
librt.so.1 (GLIBC_2.2.5) => /lib64/librt.so.1
ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
libgcc_s.so.1 (GCC_4.0.0) => /lib64/libgcc_s.so.1
libpthread.so.0 (GLIBC_2.2.5) => /lib64/libpthread.so.0
libpthread.so.0 (GLIBC_2.3.2) => /lib64/libpthread.so.0
libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.7) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/usr/lib64/mpich/lib/libopa.so.1:
libpthread.so.0 (GLIBC_2.2.5) => /lib64/libpthread.so.0
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
/usr/lib64/mpich/lib/libmpl.so.1:
libc.so.6 (GLIBC_2.3) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/librt.so.1:
libpthread.so.0 (GLIBC_PRIVATE) => /lib64/libpthread.so.0
libpthread.so.0 (GLIBC_2.2.5) => /lib64/libpthread.so.0
libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/libpthread.so.0:
ld-linux-x86-64.so.2 (GLIBC_2.2.5) => /lib64/ld-linux-x86-64.so.2
ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/libstdc++.so.6:
ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
libm.so.6 (GLIBC_2.2.5) => /lib64/libm.so.6
libgcc_s.so.1 (GCC_4.2.0) => /lib64/libgcc_s.so.1
libgcc_s.so.1 (GCC_3.3) => /lib64/libgcc_s.so.1
libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/libm.so.6:
libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/libgcc_s.so.1:
libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/libc.so.6:
ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
/lib64/libquadmath.so.0:
libc.so.6 (GLIBC_2.3) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.10) => /lib64/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
libm.so.6 (GLIBC_2.2.5) => /lib64/libm.so.6
16. Enjoy

Note1:this is a non-optimized compilation.
Note2: pay atention at formatting on Makefile.def...phpBB seems to be unable to keep proper formatting....if you need proper formated Makefile.def send an e-mail or post here..

I have a question regarding solvers library: what are best? (petsc,mumps,another...,pro and cons.)

Re: OpenSeesMP install Centos 7.2/SL 7.2

Posted: Mon Feb 01, 2016 11:56 am
by fmk
Mumps .. is the one everyone uses, limited to 16 to 32 proceesors on performance and there is some memory issue people exerience with it when using
multipe analysis

Petsc .. iterative solver so scales well, i only ever saw lousy performance with it when compared to a direct solver, so even thou it scaled well would needs lots of processors to get to performance of a sequentially running direct solver .. of course it may have just been the way i was calling it.

Re: OpenSeesMP install Centos 7.2/SL 7.2

Posted: Sun Feb 14, 2016 8:33 pm
by Richardjh
Good Post