Re: [AMBER] Problem with "make install" after "./configure -mpi -cuda gnu"

From: Jason Swails <jason.swails.gmail.com>
Date: Wed, 3 Oct 2012 21:33:04 -0400

On Wed, Oct 3, 2012 at 3:57 PM, Su, Shiquan <ssu2.utk.edu> wrote:

> Dear Developers:
> The first quick question is: how to set the flag "-DMPI" and
> "-DMPICH_IGNORE_CXX_SEEK" in the Makefile. I kept seeing the compiler using
> these flags during the compilation, but I just can not find where they are
> set. And I also don't know how to check their values.
>

-DMPI and -DMPICH_IGNORE_CXX_SEEK are not defined in the Makefile. They
are defined in the config.h file in the preprocessor or compiler flag
section. Their values, I believe, are nominally "1", but more importantly
they evaluate to logical "True" by the preprocessor.

-DMPI is automatically added to the preprocessor flags when the "-mpi"
argument is given to configure. This 'activates' code that is needed to
compile programs in parallel and 'deactivates' code that is only for the
serial version. I'm not sure where/when -DMPICH_IGNORE_CXX_SEEK is set or
why that switch is used anywhere...


> The second question is much longer. I followed the instruction of
> "AmberTools 12 Reference Manual" inside the package to install a mpi
> enabled cuda version of Amber12.
> I first do:
> ./configure gnu
> make install
> And I get everything fine, so I assume I got the serial version installed
> correctly. The I do:
> ./configure -mpi -cuda gnu
> make install
>
> The mpi package I am using is openmpi/1.6.0 , I tried several version and
> also the mvapich2/1.8, basically I got all the same error like the
> following:
> Any idea what happens here? Thank you. Waiting for your reply anxiously.
>
> make[5]: Leaving directory
> `/nics/e/sw/keeneland/amber/12/centos5.5_gnu4.4.0_10022012/amber12/src/pmemd/src/cuda'
> make -C ./cuda
> make[5]: Entering directory
> `/nics/e/sw/keeneland/amber/12/centos5.5_gnu4.4.0_10022012/amber12/src/pmemd/src/cuda'
> make[5]: `cuda.a' is up to date.
> make[5]: Leaving directory
> `/nics/e/sw/keeneland/amber/12/centos5.5_gnu4.4.0_10022012/amber12/src/pmemd/src/cuda'
> make -C ./cuda
> make[5]: Entering directory
> `/nics/e/sw/keeneland/amber/12/centos5.5_gnu4.4.0_10022012/amber12/src/pmemd/src/cuda'
> make[5]: `cuda.a' is up to date.
> make[5]: Leaving directory
> `/nics/e/sw/keeneland/amber/12/centos5.5_gnu4.4.0_10022012/amber12/src/pmemd/src/cuda'
> make -C ./cuda
> make[5]: Entering directory
> `/nics/e/sw/keeneland/amber/12/centos5.5_gnu4.4.0_10022012/amber12/src/pmemd/src/cuda'
> make[5]: `cuda.a' is up to date.
> make[5]: Leaving directory
> `/nics/e/sw/keeneland/amber/12/centos5.5_gnu4.4.0_10022012/amber12/src/pmemd/src/cuda'
> make -C ./cuda
> make[5]: Entering directory
> `/nics/e/sw/keeneland/amber/12/centos5.5_gnu4.4.0_10022012/amber12/src/pmemd/src/cuda'
> make[5]: `cuda.a' is up to date.
> make[5]: Leaving directory
> `/nics/e/sw/keeneland/amber/12/centos5.5_gnu4.4.0_10022012/amber12/src/pmemd/src/cuda'
> make -C ./cuda
> make[5]: Entering directory
> `/nics/e/sw/keeneland/amber/12/centos5.5_gnu4.4.0_10022012/amber12/src/pmemd/src/cuda'
> make[5]: `cuda.a' is up to date.
> make[5]: Leaving directory
> `/nics/e/sw/keeneland/amber/12/centos5.5_gnu4.4.0_10022012/amber12/src/pmemd/src/cuda'
> mpif90 -O3 -mtune=native -DCUDA -DMPI -DMPICH_IGNORE_CXX_SEEK -Duse_SPFP
> -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 nbips.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 binrestart.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 findmask.o remd.o
> multipmemd.o remd_exchg.o amd.o \
> ./cuda/cuda.a -L/sw/keeneland/cuda/4.2/linux_binary/lib64
> -L/sw/keeneland/cuda/4.2/linux_binary/lib -lcurand -lcufft -lcudart
> -L/sw/keeneland/amber/12/centos5.5_gnu4.4.0_10022012/amber12/lib
> -L/sw/keeneland/amber/12/centos5.5_gnu4.4.0_10022012/amber12/lib -lnetcdf
> ./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]+0x9e): undefined reference to
> `MPI::Comm::Comm()'
> ./cuda/cuda.a(gpu.o): In function `MPI::Intracomm::Create(MPI::Group
> const&) const':
> gpu.cpp:(.text._ZNK3MPI9Intracomm6CreateERKNS_5GroupE[MPI::Intracomm::Create(MPI::Group
> const&) const]+0x27): 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::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::Cartcomm::Sub(bool const*) const':
> gpu.cpp:(.text._ZNK3MPI8Cartcomm3SubEPKb[MPI::Cartcomm::Sub(bool const*)
> const]+0x79): undefined reference to `MPI::Comm::Comm()'
> ./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::Intercomm::Merge(bool) const':
> gpu.cpp:(.text._ZNK3MPI9Intercomm5MergeEb[MPI::Intercomm::Merge(bool)
> const]+0x26): 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):gpu.cpp:(.text._ZNK3MPI9Intracomm5SplitEii[MPI::Intracomm::Split(int,
> int) const]+0x24): 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()'
>

I have never had problems compiling pmemd.cuda.MPI on Keeneland. What do
the following commands return:

mpif90 -show
module list
?

Also, why not just use Keeneland's Amber 12 build? You can just do

module load amber/12

and you will have access to pmemd.cuda and pmemd.cuda.MPI in your PATH.

HTH,
Jason

-- 
Jason M. Swails
Quantum Theory Project,
University of Florida
Ph.D. Candidate
352-392-4032
_______________________________________________
AMBER mailing list
AMBER.ambermd.org
http://lists.ambermd.org/mailman/listinfo/amber
Received on Wed Oct 03 2012 - 19:00:03 PDT
Custom Search