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.