Jeff,

Hmm.  This sounds right, but I'm a little curious as to why this never came up before.

I reported this, as well as several others, in August 2010, "Fixes to OpenMPI-1.4.2 for PGI compilers".  (Attached are my patches for OpenMPI 1.4.2.)  At that time I was using the PGI 10.x compilers.

What was the specific problem that caused you to add this patch?

These warning messages are from PGI C++ 11.4 for the assembly language macros in OpenMPI 1.4.3 opal/include/opal/sys/amd64/atomic.h:

libtool: compile:  pgcpp -m64 -DHAVE_CONFIG_H -I. -I../../../opal/include -I../../../orte/include -I../../../ompi/include -I../../../opal/mca/paffinity/linux/plpa/src/libplpa -DOMPI_BUILDING_CXX_BINDINGS_LIBRARY=1 -DOMPI_SKIP_MPICXX=1 -I../../
.. -D_REENTRANT -DNDEBUG -g -O3 -DNO_PGI_OFFSET -c mpicxx.cc  -fpic -DPIC -o .libs/mpicxx.o
"../../../opal/include/opal/sys/amd64/atomic.h", line 91: warning: "cc"
          clobber ignored
                         : "memory", "cc");
                                     ^

"../../../opal/include/opal/sys/amd64/atomic.h", line 83: warning: parameter
          "oldval" was set but never used
                                          int32_t oldval, int32_t newval)
                                                  ^

"../../../opal/include/opal/sys/amd64/atomic.h", line 112: warning: "cc"
          clobber ignored
                         : "memory", "cc"
                                     ^

"../../../opal/include/opal/sys/amd64/atomic.h", line 104: warning: parameter
          "oldval" was set but never used
                                           int64_t oldval, int64_t newval)
                                                   ^

configure defines OMPI_CXX_GCC_INLINE_ASSEMBLY as 1 in opal/include/opal_config.h (unlike OMPI_C_GCC_INLINE_ASSEMBLY, which is defined as 0), which causes the assembly language macros to be used:

# find . -name \*.h -exec grep \#define.\*OMPI_.\*_INLINE_ASSEMBLY {} ';' -print
<snip>
#define OMPI_CXX_DEC_INLINE_ASSEMBLY 0
#define OMPI_CXX_GCC_INLINE_ASSEMBLY 1
#define OMPI_CXX_XLC_INLINE_ASSEMBLY 0
#define OMPI_C_DEC_INLINE_ASSEMBLY 0
#define OMPI_C_GCC_INLINE_ASSEMBLY 0
#define OMPI_C_XLC_INLINE_ASSEMBLY 0
./opal/include/opal_config.h

Larry Baker
US Geological Survey
650-329-5608

On 18 May 2011, at 6:17 AM, Jeff Squyres wrote:

Hmm.  This sounds right, but I'm a little curious as to why this never came up before.  What was the specific problem that caused you to add this patch?


On May 17, 2011, at 9:41 PM, Larry Baker wrote:

This bug applies to OpenMPI 1.4.x and 1.5.x.

Inline assembly does not work for PGI compilers.  configure disables inline assembly for PGI C, but neglects to do the same for PGI C++.  The code that disables inline assembly for PGI C needs to be copied to the section that handles inline assembly for C++.

Here's the diff -u from OpenMPI 1.4.3 (same code, same bug):

[root@hydra openmpi-1.4.3]# diff -u configure{.original,}
--- configure.original 2010-10-05 15:48:18.000000000 -0700
+++ configure 2011-05-17 18:35:04.000000000 -0700
@@ -34690,6 +34690,11 @@
    { $as_echo "$as_me:$LINENO: checking if $CXX supports GCC inline assembly" >&5
$as_echo_n "checking if $CXX supports GCC inline assembly... " >&6; }

+    if test "$ompi_cv_cxx_compiler_vendor" = "portland group" ; then
+        # PGI seems to have some issues with our inline assembly.
+        # Disable for now.
+        asm_result="no (Portland Group)"
+    else
    case $host in
        *-aix*)
            # the AIX compilers and linkers really don't do gcc
@@ -34813,6 +34818,7 @@
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
      conftest$ac_exeext conftest.$ac_ext
    fi
+    fi

    { $as_echo "$as_me:$LINENO: result: $asm_result" >&5
$as_echo "$asm_result" >&6; }

Larry Baker
US Geological Survey
650-329-5608
ba...@usgs.gov

On 5 May 2011, at 7:15 AM, Jeff Squyres wrote:

Fixed the ROMIO attribute problem properly this time -- it's in the usual place:

  http://www.open-mpi.org/software/ompi/v1.4/

--
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


_______________________________________________
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel

_______________________________________________
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel


--
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


_______________________________________________
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel

Attachment: patch-openmpi-1.4.2.sh
Description: Binary data

Reply via email to