Re: [AMBER] MPI cuda compilation error

From: Fabrício Bracht <bracht.iq.ufrj.br>
Date: Sat, 2 Jul 2011 13:34:11 -0300

Hi. Thank you for all the advice. The error given by make
cuda_parallel was exactly the one I have written in my first email.
There are no more lines after that, and before that everything runs
ok.
I have taken your advice and set MPI_HOME=/usr/lib/openmpi . It seems
to have worked partially since now the error comes at a later stage of
the "make" process. The error comes out as described below. Sorry for
the size of the paste below, but I wasn't sure where the error began.
Any suggestions? Thank you in advance

mpif90 -O3 -mtune=generic -DCUDA -DMPI -DMPICH_IGNORE_CXX_SEEK -o
pmemd.cuda.MPI gbl_constants.o gbl_datatypes.o state_info.o
file_io_dat.o mdin_ctrl_dat.o mdin_ewald_dat.o mdin_debugf_dat.o
prmtop_dat.o inpcrd_dat.o dynamics_dat.o img.o parallel_dat.o
parallel.o gb_parallel.o pme_direct.o pme_recip_dat.o pme_slab_recip.o
pme_blk_recip.o pme_slab_fft.o pme_blk_fft.o pme_fft_dat.o fft1d.o
bspline.o pme_force.o pbc.o nb_pairlist.o nb_exclusions.o cit.o
dynamics.o bonds.o angles.o dihedrals.o extra_pnts_nb14.o runmd.o
loadbal.o shake.o prfs.o mol_list.o runmin.o constraints.o
axis_optimize.o gb_ene.o veclib.o gb_force.o timers.o pmemd_lib.o
runfiles.o file_io.o bintraj.o pmemd_clib.o pmemd.o random.o degcnt.o
erfcfun.o nmr_calls.o nmr_lib.o get_cmdline.o master_setup.o
pme_alltasks_setup.o pme_setup.o ene_frc_splines.o gb_alltasks_setup.o
nextprmtop_section.o angles_ub.o dihedrals_imp.o cmap.o charmm.o
charmm_gold.o -L/usr/local/cuda/lib64 -L/usr/local/cuda/lib -lcufft
-lcudart ./cuda/cuda.a
./cuda/cuda.a(gpu.o): In function `MPI::Cartcomm::Clone() const':
gpu.cpp:(.text._ZNK3MPI8Cartcomm5CloneEv[MPI::Cartcomm::Clone()
const]+0x24): undefined reference to `MPI::Comm::Comm()'
./cuda/cuda.a(gpu.o): In function `MPI::Graphcomm::Clone() const':
gpu.cpp:(.text._ZNK3MPI9Graphcomm5CloneEv[MPI::Graphcomm::Clone()
const]+0x24): undefined reference to `MPI::Comm::Comm()'
./cuda/cuda.a(gpu.o): In function `MPI::Intercomm::Merge(bool)':
gpu.cpp:(.text._ZN3MPI9Intercomm5MergeEb[MPI::Intercomm::Merge(bool)]+0x26):
undefined reference to `MPI::Comm::Comm()'
./cuda/cuda.a(gpu.o): In function `MPI::Op::Init(void (*)(void const*,
void*, int, MPI::Datatype const&), bool)':
gpu.cpp:(.text._ZN3MPI2Op4InitEPFvPKvPviRKNS_8DatatypeEEb[MPI::Op::Init(void
(*)(void const*, void*, int, MPI::Datatype const&), bool)]+0x1f):
undefined reference to `ompi_mpi_cxx_op_intercept'
./cuda/cuda.a(gpu.o): In function `MPI::Intracomm::Create_graph(int,
int const*, int const*, bool) const':
gpu.cpp:(.text._ZNK3MPI9Intracomm12Create_graphEiPKiS2_b[MPI::Intracomm::Create_graph(int,
int const*, int const*, bool) const]+0x27): undefined reference to
`MPI::Comm::Comm()'
./cuda/cuda.a(gpu.o): In function `MPI::Intracomm::Create_cart(int,
int const*, bool const*, bool) const':
gpu.cpp:(.text._ZNK3MPI9Intracomm11Create_cartEiPKiPKbb[MPI::Intracomm::Create_cart(int,
int const*, bool const*, bool) const]+0x124): undefined reference to
`MPI::Comm::Comm()'
./cuda/cuda.a(gpu.o): In function `MPI::Cartcomm::Sub(bool const*)':
gpu.cpp:(.text._ZN3MPI8Cartcomm3SubEPKb[MPI::Cartcomm::Sub(bool
const*)]+0x7b): undefined reference to `MPI::Comm::Comm()'
./cuda/cuda.a(gpu.o): In function `MPI::Intracomm::Clone() const':
gpu.cpp:(.text._ZNK3MPI9Intracomm5CloneEv[MPI::Intracomm::Clone()
const]+0x27): undefined reference to `MPI::Comm::Comm()'
./cuda/cuda.a(gpu.o): In function `MPI::Intracomm::Split(int, int) const':
gpu.cpp:(.text._ZNK3MPI9Intracomm5SplitEii[MPI::Intracomm::Split(int,
int) const]+0x24): undefined reference to `MPI::Comm::Comm()'
./cuda/cuda.a(gpu.o):gpu.cpp:(.text._ZNK3MPI9Intracomm6CreateERKNS_5GroupE[MPI::Intracomm::Create(MPI::Group
const&) const]+0x27): more undefined references to `MPI::Comm::Comm()'
follow
./cuda/cuda.a(gpu.o):(.rodata._ZTVN3MPI3WinE[vtable for
MPI::Win]+0x48): undefined reference to `MPI::Win::Free()'
./cuda/cuda.a(gpu.o):(.rodata._ZTVN3MPI8DatatypeE[vtable for
MPI::Datatype]+0x78): undefined reference to `MPI::Datatype::Free()'
collect2: ld returned 1 exit status
make[2]: *** [pmemd.cuda.MPI] Error 1
make[2]: Leaving directory `/home/fabricio/amber11/src/pmemd/src'
make[1]: *** [cuda_parallel] Error 2
make[1]: Leaving directory `/home/fabricio/amber11/src/pmemd'
make: *** [cuda_parallel] Error 2


2011/7/2 case <case.biomaps.rutgers.edu>:
> On Sat, Jul 02, 2011, Ross Walker wrote:
>
>> >> In file included from gpu.h:15,
>> >>
>> >>    from kForcesUpdate.cu:14:
>> >> gputypes.h:24:17: error: mpi.h: No such file or directory
>
>> Have you tried this with AmberTools 1.4? If not can you try that please
>> and let me know if it works?
>>
>> I suspect someone broke the configure script in AmberTools 1.5 and did
>> not test it properly for complete builds of AMBER.
>>
>> I still use AmberTools1.4 and have never seen this problem.
>
> This is not that helpful a suggestion:
>
> 1. We don't distribute old versions of AmberTools any more (except for version
> 1.2, needed for Amber10).
>
> 2. The problem report did not report the actual command that led to
> the error, nor the value of the PMEMD_CU_INCLUDE variable.  Failure
> to find mpi.h generally means that there is some problem with the MPI
> installation.  I still recommend that people having problems with MPI use
> the "configure_mpich2" script in $AMBERHOME/AmberTools/src.  That ensures
> that the same compiler is used as for Amber, that the include, binary
> and library files are in the correct place, and that good configuration
> options have been used.
>
> 3. The current git repo works fine, and AmberTools 1.5 does as well (at
> least did so when we were testing it back before the release).  Amber
> developers are *strongly* encouraged to use up-to-date tools, as that is
> the best way to find and correct problems.
>
> Note that there was this update from Jason:
>
> commit 26db9611defd2f7fd36044ecc051d62619813a11
> Author: Jason Swails <jason.swails.gmail.com>
> Date:   Tue Mar 29 20:31:38 2011 -0700
>
>    cuda_parallel builds break unless nvcc knows where to find the mpi.h.
>    Turns out MPI_HOME is still necessary.  However, in the spirit of maintainin
>    its eradication, I'll 'fake' it by looking at the location of mpif90.
>    Those that still wish to set it can do so.
>
> This could cause a problem if MPI_HOME is not set and mpif90 is in an odd
> location.  But the best thing is to get more information from the original
> poster...just having a few more lines of the error message would have
> clarified a lot.
>
> ....dac
>
>
> _______________________________________________
> AMBER mailing list
> AMBER.ambermd.org
> http://lists.ambermd.org/mailman/listinfo/amber
>

_______________________________________________
AMBER mailing list
AMBER.ambermd.org
http://lists.ambermd.org/mailman/listinfo/amber
Received on Sat Jul 02 2011 - 10:00:03 PDT
Custom Search