[lammps-users] Compiling on SGI Altix - "IPO error" and MPI problems?

Hello,

I am trying to compile on an SGI Altix 3700 using the default Makefile.altix included with the latest LAMMPS download available [LAMMPS upgrade — C++ version (12 Apr 2006)].

I am using Intel ICC compiler version 9.0.026.

-----------------///--------------------
First, I tried to compile with the default Makefile.altix, which has the following:

System-specific settings

CC = icc
CCFLAGS = -O2 -DFFT_SCSL -w
DEPFLAGS = -M
LINK = icc
LINKFLAGS = -O2
USRLIB =
SYSLIB = -lmpi -lscs_mp
SIZE = size

With this, the compilation process ran smoothly, but during the linking process, I get a handful of error messages of the form:

IPO Error: unresolved : _ZdlPv
Referenced in angle_charmm.o
Referenced in angle_cosine.o
…etc…

…followed by a flood of error messages of the form:

angle_charmm.o(.text+0xa2): In function _ZN11AngleCharmmD9Ev': : undefined reference to operator delete(void*)’
angle_charmm.o(.text+0x1f2): In function AngleCharmm::~AngleCharmm()': : undefined reference to operator delete(void*)’
…etc…

And the compile finally fails with error:

make[1]: *** […/lmp_altix] Error 1
make[1]: Leaving directory `/usr/local/appl/working/lammps-5Jun06/src/Obj_altix’
make: *** [altix] Error 2

With this Makefile, I have tried turning off optimizations with -O0, but the IPO errors still occur.

-----------------///--------------------
Second, I tried compiling with g++ using a hybrid Makefile taking from both the .altix and .g++ Makefiles. With this Makefile, I still use SGI’s FFTs from “SGI SCSL library” and the same SGI MPI libraries as above. SGI’s mpi.h is marked as “mpi.h,v 1.35 2005/04/07 23:15:29”. The Makefile’s System-specific settings are as follows:

System-specific settings

CC = g++
CCFLAGS = -O -DFFT_SCSL -w
DEPFLAGS = -M
LINK = g++
LINKFLAGS = -O
USRLIB =
SYSLIB = -lmpi -lscs_mp
SIZE = size

Again, the compilation process succeeds, but during linking phase, I get flooded with some MPI undefined reference errors:

angle_charmm.o(.gnu.linkonce.r._ZTVN3MPI2OpE+0x30): undefined reference to MPI::Op::Init(void (*)(void const*, void*, int, MPI::Datatype const&), bool)' angle_charmm.o(.gnu.linkonce.r._ZTVN3MPI2OpE+0x40): undefined reference to MPI::Op::Free()’
…etc…

With this Makefile, I have also explicitly set the MPI include and library paths with -I/usr/include and -L/usr/lib, but the undefined reference errors still occur.

-----------------///--------------------
Any suggestions welcome!

Thanks,
Sam

Neither of the errors you list appear to be LAMMPS
issues, expecially since they are occurring with one
of the first files compiled (or linked). So I would talk
to some local expert who has built C++ programs for
that Altix box and see if you can build a simple one-file
C++ MPI program.

Steve