Page 1 of 1

Help compiling parallel OpenSees for linux machines

Posted: Thu Oct 06, 2011 12:34 pm
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

Re: Help compiling parallel OpenSees for linux machines

Posted: Fri Oct 07, 2011 10:48 am
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

Re: Help compiling parallel OpenSees for linux machines

Posted: Mon Oct 10, 2011 2:03 pm
by pingluo
Thanks. Changing to SuperLU_DIST_2.5 solves the problem.

Re: Help compiling parallel OpenSees for linux machines

Posted: Wed Oct 12, 2011 7:44 am
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

Re: Help compiling parallel OpenSees for linux machines

Posted: Thu Dec 15, 2011 1:56 pm
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.

Re: Help compiling parallel OpenSees for linux machines

Posted: Fri Jul 27, 2012 3:16 pm
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.