Help compiling parallel OpenSees for linux machines

This forum is for issues related to parallel processing
and OpenSees using the new interpreters OpenSeesSP and OpenSeesMP

Moderator: selimgunay

Post Reply
pingluo
Posts: 11
Joined: Tue Jul 13, 2010 2:19 pm
Location: Texas A&M

Help compiling parallel OpenSees for linux machines

Post by pingluo »

Hi,

I am trying to build OpenSeesSP and OpenSeesMP. I stuck at the following file:

$ /g/software/openmpi/1.4.3/intel/bin/mpicxx -D_LINUX -D_UNIX -D_RELIABILITY -O2 -xHost -D_PARALLEL_INTERPRETERS -D_MUMPS -D_TCL85 -D_BLAS -D_OPENMPI .... -c DistributedSuperLU.cpp

DistributedSuperLU.cpp(42): error: identifier "superlu_options_t" is undefined
superlu_options_t options;
^
DistributedSuperLU.cpp(242): error: identifier "set_default_options_dist" is undefined
set_default_options_dist(&options);
^
compilation aborted for DistributedSuperLU.cpp (code 2)
gmake[4]: *** [DistributedSuperLU.o] Error 2

I tried to include the header file containing "superlu_options_t" in "DistributedSuperLU.cpp", but I get even more errors.

I am installing the newest OpenSees. The website says it is version 2.3.1. However, the tar.gz file shows it is 2.3.0.

Please help,


Ping
kthyagaraja
Posts: 1
Joined: Tue Mar 29, 2011 7:46 am
Location: Rice University

Re: Help compiling parallel OpenSees for linux machines

Post by kthyagaraja »

Make sure that you change SUPERLU_DISTdir from SuperLU_DIST_2.0 to 2.5 like this:

SUPERLU_DISTdir = $(HOME)/OpenSees/OTHER/SuperLU_DIST_2.5/SRC
pingluo
Posts: 11
Joined: Tue Jul 13, 2010 2:19 pm
Location: Texas A&M

Re: Help compiling parallel OpenSees for linux machines

Post by pingluo »

Thanks. Changing to SuperLU_DIST_2.5 solves the problem.
pingluo
Posts: 11
Joined: Tue Jul 13, 2010 2:19 pm
Location: Texas A&M

Re: Help compiling parallel OpenSees for linux machines

Post by pingluo »

I have successfully built OpenSeesMP. When building OpenSeesSP, it complains about undefined references to SparseGenColLinSolver. I checked libOpenSees.a, SparseGenColLinSolver is defined. Any idea what's wrong?

Thanks, Ping


THE ERROR MESSAGE:

/usr/bin/OpenSees/OpenSees-2.3.0-MP/SRC/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o: In function `DistributedSuperLU::DistributedSuperLU(int, int)':
DistributedSuperLU.cpp:(.text+0x31): undefined reference to `SparseGenColLinSolver::SparseGenColLinSolver(int)'
DistributedSuperLU.cpp:(.text+0x9e): undefined reference to `SparseGenColLinSolver::~SparseGenColLinSolver()'
/usr/bin/OpenSees/OpenSees-2.3.0-MP/SRC/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o: In function `DistributedSuperLU::DistributedSuperLU(int, int)':
DistributedSuperLU.cpp:(.text+0xe4): undefined reference to `SparseGenColLinSolver::SparseGenColLinSolver(int)'
DistributedSuperLU.cpp:(.text+0x158): undefined reference to `SparseGenColLinSolver::~SparseGenColLinSolver()'
/usr/bin/OpenSees/OpenSees-2.3.0-MP/SRC/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o: In function `DistributedSuperLU::DistributedSuperLU()':
DistributedSuperLU.cpp:(.text+0x19d): undefined reference to `SparseGenColLinSolver::SparseGenColLinSolver(int)'
DistributedSuperLU.cpp:(.text+0x20a): undefined reference to `SparseGenColLinSolver::~SparseGenColLinSolver()'
/usr/bin/OpenSees/OpenSees-2.3.0-MP/SRC/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o: In function `DistributedSuperLU::DistributedSuperLU()':
DistributedSuperLU.cpp:(.text+0x24d): undefined reference to `SparseGenColLinSolver::SparseGenColLinSolver(int)'
DistributedSuperLU.cpp:(.text+0x2ba): undefined reference to `SparseGenColLinSolver::~SparseGenColLinSolver()'
/usr/bin/OpenSees/OpenSees-2.3.0-MP/SRC/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o: In function `DistributedSuperLU::~DistributedSuperLU()':
DistributedSuperLU.cpp:(.text+0x32e): undefined reference to `SparseGenColLinSolver::~SparseGenColLinSolver()'
DistributedSuperLU.cpp:(.text+0x35f): undefined reference to `SparseGenColLinSolver::~SparseGenColLinSolver()'
/usr/bin/OpenSees/OpenSees-2.3.0-MP/SRC/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o: In function `DistributedSuperLU::~DistributedSuperLU()':
DistributedSuperLU.cpp:(.text+0x3c7): undefined reference to `SparseGenColLinSolver::~SparseGenColLinSolver()'
DistributedSuperLU.cpp:(.text+0x400): undefined reference to `SparseGenColLinSolver::~SparseGenColLinSolver()'
/usr/bin/user-support/OpenSees/OpenSees-2.3.0-MP/SRC/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o:DistributedSuperLU.cpp:(.text+0x467): more undefined references to `SparseGenColLinSolver::~SparseGenColLinSolver()' follow
/usr/bin/OpenSees/OpenSees-2.3.0-MP/SRC/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o:(.gnu.linkonce.d._ZTV18DistributedSuperLU[.gnu.linkonce.d._ZTV18DistributedSuperLU]+0x78): undefined reference to `SparseGenColLinSolver::setLinearSOE(SparseGenColLinSOE&)'
/usr/bin/OpenSees/OpenSees-2.3.0-MP/SRC/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o:(.gnu.linkonce.d._ZTI18DistributedSuperLU[.gnu.linkonce.d._ZTI18DistributedSuperLU]+0x10): undefined reference to `typeinfo for SparseGenColLinSolver'

CHECKING LIBRARY libOpenSees.a

nm libOpenSees.a
...
SparseGenColLinSolver.o:
0000000000000000 r _2il0floatpacket.1
U _ZN13MovableObject11getVariableEPKcR11Information
U _ZN13MovableObject11setVariableEPKcR11Information
U _ZN13MovableObject12setParameterEPPKciR9Parameter
U _ZN13MovableObject15updateParameterEiR11Information
U _ZN13MovableObject17activateParameterEi
0000000000000000 W _ZN15LinearSOESolver14getDeterminantEv
U _ZN15LinearSOESolverC2Ei
U _ZN15LinearSOESolverD2Ev
00000000000001c0 T _ZN21SparseGenColLinSolver12setLinearSOEER18SparseGenColLinSOE
0000000000000000 T _ZN21SparseGenColLinSolverC1Ei
0000000000000000 r _ZN21SparseGenColLinSolverC1Ei$$LSDA
0000000000000060 T _ZN21SparseGenColLinSolverC2Ei
0000000000000014 r _ZN21SparseGenColLinSolverC2Ei$$LSDA
0000000000000110 T _ZN21SparseGenColLinSolverD0Ev
000000000000003c r _ZN21SparseGenColLinSolverD0Ev$$LSDA
00000000000000c0 T _ZN21SparseGenColLinSolverD1Ev
0000000000000028 r _ZN21SparseGenColLinSolverD1Ev$$LSDA
0000000000000170 T _ZN21SparseGenColLinSolverD2Ev
0000000000000050 r _ZN21SparseGenColLinSolverD2Ev$$LSDA
U _ZNK13MovableObject12getClassTypeEv
U _ZTI15LinearSOESolver
0000000000000000 V _ZTI21SparseGenColLinSolver
0000000000000000 V _ZTS21SparseGenColLinSolver
0000000000000000 V _ZTV21SparseGenColLinSolver
U _ZTVN10__cxxabiv120__si_class_type_infoE
U _ZdlPv
U __cxa_pure_virtual
U __gxx_personality_v0
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: Help compiling parallel OpenSees for linux machines

Post by fmk »

on linux machines OpenSees can be a pain to build sometimes because of the linkers .. even though the symbol is defined once, sometimes it needs multiple definitions which can also cause the linker to fail .. try adding the same object file in the Makefile.def where you are defining the paralllel SuperLU objects.
sourovone
Posts: 1
Joined: Sat Jun 28, 2008 1:38 am
Location: La Sapienza

Re: Help compiling parallel OpenSees for linux machines

Post by sourovone »

@pingulo: Can you please share your makefile for OpenSeesMP. If you can give me the name of the required libraries to build it, I would be really grateful.
khaled mashfiq
Post Reply