Great. Thanks. Hubert
2016-01-07 18:33 GMT+01:00 Mark Abraham <[email protected]>: > Hi, > > Thanks, I have now proposed that fix at https://gerrit.gromacs.org/5535. > If > accepted, it'll be in GROMACS 5.1.2 > > Mark > > On Thu, Jan 7, 2016 at 6:05 PM Hubert Santuz <[email protected]> > wrote: > > > Finally, I found a solution by digging on MPT C++ bindings. > > In fact, at the end of the MPT mpi.h file, we have: > > > > if !defined(MPI_NO_CPPBIND) > > #include "mpi++.h" > > #endif > > > > So MPT expose the C++ bindings by default. > > To prevent that, I add the macro to src/gromacs/utility/gmxmpi.h : > > > > /* MPI C++ binding is deprecated and can cause name conflicts (e.g. > > stdio/mpi seek) */ > > #define MPICH_SKIP_MPICXX 1 > > #define OMPI_SKIP_MPICXX 1 > > #define MPI_NO_CPPBIND 1 > > #include <mpi.h> > > > > Since there is already macros for Mpich and OpenMPI, will it be worth it > to > > add the one from MPT and file a bug report? > > > > Cheers, > > Hubert > > > > > > > > 2016-01-07 16:07 GMT+01:00 Mark Abraham <[email protected]>: > > > > > Hi, > > > > > > No, I don't have access to the MPT documentation, so you should start > > > there. I would be pretty sure it wouldn't be faster, either ;-) > > > > > > Mark > > > > > > On Thu, 7 Jan 2016 13:25 Hubert Santuz <[email protected]> > wrote: > > > > > > > Hi, > > > > > > > > 2016-01-07 11:48 GMT+01:00 Mark Abraham <[email protected]>: > > > > > > > > > Hi, > > > > > > > > > > On Thu, Jan 7, 2016 at 11:30 AM Hubert Santuz < > > [email protected] > > > > > > > > > wrote: > > > > > > > > > > > Hi Mark, > > > > > > > > > > > > You were right, MPT defines a constant UNDEFINED in their mpi++.h > > Why > > > > it > > > > > > should not do? > > > > > > > > > > > > > > > > Because if everybody wrote libraries like that, then nobody could > use > > > any > > > > > generic-sounding name for a symbol in their code, for fear of a > clash > > > > like > > > > > the one you experienced. Symbols that libraries intend to export > need > > > to > > > > > have names that are unlikely to clash with other libraries, or with > > > user > > > > > code. And libraries shouldn't define symbols they don't intend to > > > define > > > > > (which is probably what is happening here). If you let people park > > > their > > > > > cars wherever they want, you get chaos, right? :-) > > > > > > > > > > > > > > Yeah, it makes sense... > > > > > > > > > > > > > > > > > When renaming gromacs one with GMX_UNDEFINED, the compilation > suceed > > > but > > > > > > now I have linking issues (which I didn't have with OpenMPI): > > > > > > > > > > > > > > > > Turn off the C++ bindings for MPI in MPT. Nobody uses them, > > > particularly > > > > > not GROMACS, and clearly they are tricky to link correctly. > > > > > > > > > > > > > Do you have an idea on how to do that ? MPT is shipped as RPM > package. > > > > I tried to remove any variable linked to MPI_CXX in the gromacs cmake > > > > without success. > > > > > > > > > > > > > > > > > > > > > > > > [ 98%] Built target libgromacs > > > > > > [ 98%] Built target mdrun_objlib > > > > > > [100%] Linking CXX executable ../../bin/mdrun_mpi > > > > > > CMakeFiles/mdrun_objlib.dir/mdrun/md.cpp.o: dans la fonction « > > > > > > PMPI::Op::Init(void (*)(void const*, void*, int, PMPI::Datatype > > > > const&), > > > > > > bool) »: > > > > > > > > > > > > > > > > > > > > > > > > > > > md.cpp:(.text._ZN4PMPI2Op4InitEPFvPKvPviRKNS_8DatatypeEEb[_ZN4PMPI2Op4InitEPFvPKvPviRKNS_8DatatypeEEb]+0x16): > > > > > > undefined reference to « op_intercept(void*, void*, int*, > unsigned > > > > int*) > > > > > » > > > > > > CMakeFiles/mdrun_objlib.dir/mdrun/md.cpp.o: dans la fonction « > > > > > > PMPI::Comm::Free() »: > > > > > > md.cpp:(.text._ZN4PMPI4Comm4FreeEv[_ZN4PMPI4Comm4FreeEv]+0x13): > > > > undefined > > > > > > reference to « PMPI::Comm::mpi_comm_map » > > > > > > md.cpp:(.text._ZN4PMPI4Comm4FreeEv[_ZN4PMPI4Comm4FreeEv]+0x1a): > > > > undefined > > > > > > reference to « PMPI::Comm::mpi_comm_map » > > > > > > md.cpp:(.text._ZN4PMPI4Comm4FreeEv[_ZN4PMPI4Comm4FreeEv]+0x2f): > > > > undefined > > > > > > reference to « PMPI::Comm::mpi_comm_map » > > > > > > CMakeFiles/mdrun_objlib.dir/mdrun/md.cpp.o: dans la fonction « > > > > > > PMPI::Comm::Sendrecv_replace(void*, int, PMPI::Datatype const&, > > int, > > > > int, > > > > > > int, int) const »: > > > > > > > > > > > > > > > > > > > > > > > > > > > md.cpp:(.text._ZNK4PMPI4Comm16Sendrecv_replaceEPviRKNS_8DatatypeEiiii[_ZNK4PMPI4Comm16Sendrecv_replaceEPviRKNS_8DatatypeEiiii]+0xd): > > > > > > undefined reference to « PMPI::Comm::ignored_status » > > > > > > CMakeFiles/mdrun_objlib.dir/mdrun/md.cpp.o: dans la fonction « > > > > > > PMPI::Comm::Sendrecv(void const*, int, PMPI::Datatype const&, > int, > > > int, > > > > > > void*, int, PMPI::Datatype const&, int, int) const »: > > > > > > > > > > > > > > > > > > > > > > > > > > > md.cpp:(.text._ZNK4PMPI4Comm8SendrecvEPKviRKNS_8DatatypeEiiPviS5_ii[_ZNK4PMPI4Comm8SendrecvEPKviRKNS_8DatatypeEiiPviS5_ii]+0xd): > > > > > > undefined reference to « PMPI::Comm::ignored_status » > > > > > > CMakeFiles/mdrun_objlib.dir/mdrun/md.cpp.o: dans la fonction « > > > > > > PMPI::Comm::Probe(int, int) const »: > > > > > > > > md.cpp:(.text._ZNK4PMPI4Comm5ProbeEii[_ZNK4PMPI4Comm5ProbeEii]+0x8): > > > > > > undefined reference to « PMPI::Comm::ignored_status » > > > > > > CMakeFiles/mdrun_objlib.dir/mdrun/md.cpp.o: dans la fonction « > > > > > > PMPI::Comm::Iprobe(int, int) const »: > > > > > > > > > md.cpp:(.text._ZNK4PMPI4Comm6IprobeEii[_ZNK4PMPI4Comm6IprobeEii]+0x12): > > > > > > undefined reference to « PMPI::C > > > > > > (...) > > > > > > > > > > > > > > > > > > > > > > > > > > > md.cpp:(.text._ZNK4PMPI9Intracomm11Create_cartEiPKiPKbb[_ZNK4PMPI9Intracomm11Create_cartEiPKiPKbb]+0x190): > > > > > > undefined reference to « MPI::Is_initialized() » > > > > > > CMakeFiles/mdrun_objlib.dir/mdrun/md.cpp.o: dans la fonction « > > > > > > PMPI::Cartcomm::Sub(bool const*) »: > > > > > > > > > > > > > > > > > > > > > > > > > > > md.cpp:(.text._ZN4PMPI8Cartcomm3SubEPKb[_ZN4PMPI8Cartcomm3SubEPKb]+0x14b):undefined > > > > > > reference to « MPI::Is_initialized() » > > > > > > > > > > > > > > > > > > > > > > > > > > > CMakeFiles/mdrun_objlib.dir/mdrun/md.cpp.o:(.rodata._ZTVN3MPI2OpE[_ZTVN3MPI2OpE]+0x20): > > > > > > undefined reference to « MPI::Op::Init(void (*)(void const*, > void*, > > > > int, > > > > > > MPI::Datatype const&), bool) » > > > > > > > > > > > > > > > > > > > > > > > > > > > CMakeFiles/mdrun_objlib.dir/mdrun/md.cpp.o:(.rodata._ZTVN3MPI2OpE[_ZTVN3MPI2OpE]+0x28): > > > > > > undefined reference to « MPI::Op::Free() » > > > > > > > > > > > > > > > > > > > > > > > > > > > CMakeFiles/mdrun_objlib.dir/mdrun/md.cpp.o:(.rodata._ZTVN3MPI2OpE[_ZTVN3MPI2OpE]+0x30): > > > > > > undefined reference to « MPI::Op::Reduce_local(void const*, > void*, > > > int, > > > > > > MPI::Datatype const&) const » > > > > > > > > > > > > > > > > > > > > > > > > > > > CMakeFiles/mdrun_objlib.dir/mdrun/md.cpp.o:(.rodata._ZTVN3MPI2OpE[_ZTVN3MPI2OpE]+0x38): > > > > > > undefined reference to « MPI::Op::Is_commutative() const » > > > > > > collect2: erreur: ld a retourné 1 code d'état d'exécution > > > > > > make[2]: *** [bin/mdrun_mpi] Erreur 1 > > > > > > make[1]: *** [src/programs/CMakeFiles/mdrun.dir/all] Erreur 2 > > > > > > make: *** [all] Erreur 2 > > > > > > > > > > > > Maybe there is some missing link flags, I will keep digging in > the > > > mean > > > > > > time. > > > > > > > > > > > > You mean, fill a bug to SGI or to Gromacs? > > > > > > > > > > > > > > > > SGI's MPT header files should not define symbols that are not in > the > > > MPI > > > > > spec - thus should not define UNDEFINED > > > > > > > > > > > > > Looking at the header file, that's not the only one... There's plenty > > of > > > > them... > > > > > > > > Thanks, > > > > Hubert > > > > > > > > > > > > > > > > > > > > > > Mark > > > > > > > > > > Thanks, > > > > > > Hubert > > > > > > > > > > > > > > > > > > 2016-01-06 18:06 GMT+01:00 Mark Abraham < > [email protected] > > >: > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > I suspect MPT has a bug such that one of its headers defines > > > > UNDEFINED, > > > > > > > which it should not do. If so, you can change > > > > > > > src/gromacs/legacyheaders/names.h > > > > > > > lines 110-1 to read > > > > > > > > > > > > > > #define GMX_UNDEFINED "UNDEFINED" > > > > > > > #define ENUM_NAME(e, max, names) ((((e) < 0) || ((e) >= > (max))) > > ? > > > > > > > GMX_UNDEFINED : (names)[e]) > > > > > > > > > > > > > > and you should be fine. If so, please let us know, and please > > file > > > a > > > > > bug > > > > > > > report with SGI. > > > > > > > > > > > > > > Mark > > > > > > > > > > > > > > On Wed, Jan 6, 2016 at 5:33 PM hubert santuz < > > > > [email protected]> > > > > > > > wrote: > > > > > > > > > > > > > > > Hi everyone, > > > > > > > > > > > > > > > > I am trying to install the last version of Gromacs (5.1.1) on > > our > > > > SGI > > > > > > > > cluster. > > > > > > > > The mono-processor compilation went fine and now I would like > > to > > > > > > compile > > > > > > > > the mdrun MPI version with the SGI MPT (the MPI library of > SGI) > > > > 2.09 > > > > > > > > (and also 2.12) > > > > > > > > Here the cmake command I used: > > > > > > > > > > > > > > > > cmake .. -DGMX_GPU=OFF -DCMAKE_C_COMPILER=gcc > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -DCMAKE_INSTALL_PREFIX=/opt/apps/software/pkg/gcc-4.9.0/mpt-2.0.9/gromacs/5.1.1/single > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -DFFTWF_LIBRARY=/opt/apps/software/pkg/gcc-4.9.0/fftw/3.3.3/single/lib/libfftw3f.so > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -DFFTWF_INCLUDE_DIR=/opt/apps/software/pkg/gcc-4.9.0/fftw/3.3.3/single/include > > > > > > > > -DGMX_MPI=ON > > -DMPI_C_INCLUDE_PATH=/opt/sgi/mpt/mpt-2.12/include > > > > > > > > -DMPI_C_LIBRARIES=/opt/sgi/mpt/mpt-2.12/lib/libmpi.so > > > > > > > > -DGMX_BUILD_MDRUN_ONLY=ON -DBUILD_SHARED_LIBS=off > > > > > > > > > > > > > > > > > > > > > > > > The configuration went fine but when I ran make, I have the > > > > following > > > > > > > > error: > > > > > > > > > > > > > > > > > > > > > > > > service0:gromacs-5.1.1/build # make > > > > > > > > [ 0%] Generating baseversion-gen.c > > > > > > > > Scanning dependencies of target libgromacs > > > > > > > > [ 0%] Building C object > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > src/gromacs/CMakeFiles/libgromacs.dir/__/external/tng_io/src/compression/bwlzh.c.o > > > > > > > > [...] > > > > > > > > [ 4%] Building CXX object > > > > > > > > > > > > > > > > > > > > src/gromacs/CMakeFiles/libgromacs.dir/commandline/cmdlinehelpmodule.cpp.o > > > > > > > > [ 4%] Building CXX object > > > > > > > > > > > > src/gromacs/CMakeFiles/libgromacs.dir/domdec/domdec_constraints.cpp.o > > > > > > > > [ 4%] Building CXX object > > > > > > > > > src/gromacs/CMakeFiles/libgromacs.dir/domdec/domdec_vsite.cpp.o > > > > > > > > [ 4%] Building CXX object > > > > > > > > src/gromacs/CMakeFiles/libgromacs.dir/domdec/domdec.cpp.o > > > > > > > > [ 4%] Building CXX object > > > > > > > > > > > > > > > src/gromacs/CMakeFiles/libgromacs.dir/domdec/domdec_specatomcomm.cpp.o > > > > > > > > [ 4%] Building CXX object > > > > > > > > > > > src/gromacs/CMakeFiles/libgromacs.dir/domdec/domdec_topology.cpp.o > > > > > > > > [ 4%] Building CXX object > > > > > > > > > src/gromacs/CMakeFiles/libgromacs.dir/domdec/domdec_setup.cpp.o > > > > > > > > In file included from > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > /opt/apps/software/src/gromacs/gromacs-5.1.1/src/gromacs/domdec/domdec_setup.cpp:53:0: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > /opt/apps/software/src/gromacs/gromacs-5.1.1/src/gromacs/legacyheaders/names.h:110:25: > > > > > > > > erreur: expected unqualified-id before string constant > > > > > > > > #define UNDEFINED "UNDEFINED" > > > > > > > > ^ > > > > > > > > make[2]: *** > > > > > > > > > > [src/gromacs/CMakeFiles/libgromacs.dir/domdec/domdec_setup.cpp.o] > > > > > > Erreur > > > > > > > 1 > > > > > > > > make[1]: *** [src/gromacs/CMakeFiles/libgromacs.dir/all] > > Erreur 2 > > > > > > > > make: *** [all] Erreur 2 > > > > > > > > > > > > > > > > This is strange because, as I said, the mono-processor > > > compilation > > > > > went > > > > > > > > fine. > > > > > > > > I tried to upgrade the MPT library (2.12) without success. > > > > > > > > I tried Openmpi 1.8.1 and it succeed. > > > > > > > > Is there a compatibility issue with MPT ? I would like to > keep > > > this > > > > > > > > library since I achieved better performance with it. > > > > > > > > > > > > > > > > Thanks, > > > > > > > > Hubert > > > > > > > > -- > > > > > > > > Gromacs Users mailing list > > > > > > > > > > > > > > > > * Please search the archive at > > > > > > > > http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List > > > before > > > > > > > > posting! > > > > > > > > > > > > > > > > * Can't post? Read > > http://www.gromacs.org/Support/Mailing_Lists > > > > > > > > > > > > > > > > * For (un)subscribe requests visit > > > > > > > > > > > https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users > > > > > or > > > > > > > > send a mail to [email protected]. > > > > > > > > > > > > > > > -- > > > > > > > Gromacs Users mailing list > > > > > > > > > > > > > > * Please search the archive at > > > > > > > http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List > > before > > > > > > > posting! > > > > > > > > > > > > > > * Can't post? Read > http://www.gromacs.org/Support/Mailing_Lists > > > > > > > > > > > > > > * For (un)subscribe requests visit > > > > > > > > > https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users > > > > or > > > > > > > send a mail to [email protected]. > > > > > > > > > > > > > -- > > > > > > Gromacs Users mailing list > > > > > > > > > > > > * Please search the archive at > > > > > > http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List > before > > > > > > posting! > > > > > > > > > > > > * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists > > > > > > > > > > > > * For (un)subscribe requests visit > > > > > > > https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users > > > or > > > > > > send a mail to [email protected]. > > > > > -- > > > > > Gromacs Users mailing list > > > > > > > > > > * Please search the archive at > > > > > http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List before > > > > > posting! > > > > > > > > > > * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists > > > > > > > > > > * For (un)subscribe requests visit > > > > > https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users > > or > > > > > send a mail to [email protected]. > > > > > > > > > -- > > > > Gromacs Users mailing list > > > > > > > > * Please search the archive at > > > > http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List before > > > > posting! > > > > > > > > * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists > > > > > > > > * For (un)subscribe requests visit > > > > https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users > or > > > > send a mail to [email protected]. > > > -- > > > Gromacs Users mailing list > > > > > > * Please search the archive at > > > http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List before > > > posting! > > > > > > * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists > > > > > > * For (un)subscribe requests visit > > > https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users or > > > send a mail to [email protected]. > > > > > -- > > Gromacs Users mailing list > > > > * Please search the archive at > > http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List before > > posting! > > > > * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists > > > > * For (un)subscribe requests visit > > https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users or > > send a mail to [email protected]. > -- > Gromacs Users mailing list > > * Please search the archive at > http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List before > posting! > > * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists > > * For (un)subscribe requests visit > https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users or > send a mail to [email protected]. > -- Gromacs Users mailing list * Please search the archive at http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List before posting! * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists * For (un)subscribe requests visit https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users or send a mail to [email protected].
