4 Replies Latest reply on Nov 15, 2013 2:52 AM by gormanly

    OpenMPI compile with Open64

    mb_nnl


      Hi,

       

      I'm trying to compile Openmpi 1.6.4 on CentOS 2.6.32-279.5.1.el6.x86_64 with Open64 4.5.2.1.

       

      Compile system is AMD Opteron(TM) Processor 6238 stepping 02 (4x 12 core).

       

      I've built Open64 on the same architecture from the src "x86_open64-4.5.2.1-1.src.tar.bz2", with:

      ../configure --prefix=/cm/shared/progs/AMD/x86_open64-4.5.2.1

       

      The configure options for OpenMPI are:

      ./configure --prefix=/cm/shared/progs/Libraries/openmpi-1.6.5 CC=opencc CXX=openCC F77=openf90 FC=openf90 FLAGS=-march=bdver1 CXXFLAGS=-march=bdver1 FFLAGS=-march=bdver1 FCFLAGS=-march=bdver1

       

      I've also tried with

      ./configure --prefix=/cm/shared/progs/Libraries/openmpi-1.6.5 CC=opencc CXX=openCC F77=openf90 FC=openf90 FLAGS=-march=bdver2 CXXFLAGS=-march=bdver2 FFLAGS=-march=bdver2 FCFLAGS=-march=bdver2

       

      For OpenMPI, 'make all' fails with the error:

      make[7]: Entering directory `/mnt/fhgfs/home/chemmod/mb123/Software/openmpi-1.6.4/ompi/contrib/vt/vt/tools/vtfilter'

        CXX    vtfilter-vt_filter.o

      In file included from ./vt_filter.cc:13:

      ./vt_filter.h:39:12: error: floating constant in preprocessor expression

      In file included from ./vt_filter.cc:13:

      ./vt_filter.h:39:12: error: floating constant in preprocessor expression

      make[7]: *** [vtfilter-vt_filter.o] Error 1

       

      Anyone have any thoughts on how to resolve this?

       

      Thanks,

       

      Mark

        • Re: OpenMPI compile with Open64
          gormanly

          The version string is 4 digits (4.5.2.1) and the contributed VampirTrace is expecting 3, then falling over when the value of an integer constant is "2.1" i.e. a float.

           

          It might be possible to hack the build system of VT (will take a look later this week if I get time), but until then or such time as upstream fixes it and the fix makes it into the OpenMPI distribution, work-around by either disabling the VT build within the OpenMPI build or revert to Open64 4.5.2 which can build OpenMPI including VT.

            • Re: OpenMPI compile with Open64
              gormanly

              The problem is in 3 files, which try to do preprocessor tests on a builtin which has a float value:

               

              ompi/contrib/vt/vt/tools/vtfilter/old/vt_tracefilter.cc

              ompi/contrib/vt/vt/tools/vtfilter/vt_filter.h

              ompi/contrib/vt/vt/tools/vtunify/vt_unify.h

               

              To resolve:

               

              1) In the 2 header files, remove the last OR from the if test

               

              if !defined(__OPENCC__) || !defined(__OPENCC_MINOR__) || !defined(__OPENCC_

              PATCHLEVEL__)

               

              2) Comment out the if loop that appears in all 3 files

               

              if !(__OPENCC_PATCHLEVEL__ + 0)

              ...

              endif

               

              3) Make the check to disable OpenMP if compiler version is less than 4.2.4 into one for if compiler version is less than 4.3, again in all 3 files.

               

              After confirming that the bug found here is still in the current VampirTrace 5.14.4 source, I got this advice and a patch from the VampirTrace support people - who were brilliant - and backported it to the older version included in OpenMPI 1.6.3 as well.