I am trying to build Open MPI 1.3.2 with ifort 11.0.074 and icc/icpc
11.0.083 (the Intel compilers) on a quad-core AMD Opteron workstation
running CentOS 4.4. I have no problems on this same machine if I use
ifort with gcc/g++ instead of icc/icpc. Configure seems to work ok even
though icc and icpc are detected as GNU compilers.

CC=icc CXX=icpc FC=ifort F77=ifort ./configure --disable-shared
--enable-static --prefix=/opt/intelsoft/openmpi/openmpi-1.3.2

Greetings Dave. I tried this configuration earlier this morning and had no problem. :-(

(also, I'm not sure what happened, but somehow your attachments came through as uncompressed and inline, meaning everyone on the list got a 3MB+ email)

However, when I run 'make' it has trouble in the opal/asm directory:

libtool: compile:  icc -DHAVE_CONFIG_H -I. -I../../opal/include
-I../../orte/include -I../../ompi/include
-I../../opal/mca/paffinity/linux/plpa/src/libplpa -I../.. -O3 -DNDEBUG
-finline-functions -fno-strict-aliasing -restrict -MT atomic-asm.lo - MD
-MP -MF .deps/atomic-asm.Tpo -c atomic-asm.S -o atomic-asm.o
Unknown flag -x
Unknown flag -a
Unknown flag -s
Unknown flag -s
Unknown flag -e
Unknown flag -m
Unknown flag -b
Unknown flag -l
Unknown flag -e
Unknown flag -r
Unknown flag --
Unknown flag -w
Unknown flag -i
Unknown flag -t
Unknown flag -h
Unknown flag --
Unknown flag -c
Unknown flag -p
Unknown flag -p
Unknown flag -F

Hmm. I find it odd that that -xassembler... flag does not appear in OMPI's output -- it leads me to believe that it's somehow being inserted under the covers by icc (or something else?). When I built with icc 11.0 v083 this morning, here's the relevant parts from my "make" output:

libtool: compile: icc -DHAVE_CONFIG_H -I. -I../../opal/include - I../../orte/include -I../../ompi/include -I../../opal/mca/paffinity/ linux/plpa/src/libplpa -I../.. -O3 -DNDEBUG -finline-functions -fno- strict-aliasing -restrict -pthread -fvisibility=hidden -MT asm.lo -MD - MP -MF .deps/asm.Tpo -c asm.c -o asm.o
rm -f atomic-asm.S
ln -s "../../opal/asm/generated/atomic-amd64-linux.s" atomic-asm.S
depbase=`echo atomic-asm.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/sh ../../libtool --mode=compile icc -DHAVE_CONFIG_H -I. -I../../ opal/include -I../../orte/include -I../../ompi/include -I../../opal/ mca/paffinity/linux/plpa/src/libplpa -I../.. -O3 -DNDEBUG - finline-functions -fno-strict-aliasing -restrict -MT atomic-asm.lo -MD -MP -MF $depbase.Tpo -c -o atomic-asm.lo atomic-asm.S &&\
mv -f $depbase.Tpo $depbase.Plo
libtool: compile: icc -DHAVE_CONFIG_H -I. -I../../opal/include - I../../orte/include -I../../ompi/include -I../../opal/mca/paffinity/ linux/plpa/src/libplpa -I../.. -O3 -DNDEBUG -finline-functions -fno- strict-aliasing -restrict -MT atomic-asm.lo -MD -MP -MF .deps/atomic- asm.Tpo -c atomic-asm.S -o atomic-asm.o /bin/sh ../../libtool --tag=CC --mode=link icc -O3 -DNDEBUG - finline-functions -fno-strict-aliasing -restrict -pthread - fvisibility=hidden -export-dynamic -o libasm.la asm.lo atomic- asm.lo -lnsl -lutil
libtool: link: ar cru .libs/libasm.a  asm.o atomic-asm.o
libtool: link: ranlib .libs/libasm.a
libtool: link: ( cd ".libs" && rm -f "libasm.la" && ln -s "../ libasm.la" "libasm.la" )

I can't find any hint of the reported "Unknown flags". What's more is
the opal/asm/generated/atomic-amd64-linux.s file is now empty (file size
is zero) thus breaking subsequent builds (i.e. with gcc). In order to
get the file back I have to re-extract from the source tarball. If I
execute 'make' again (no 'make clean') the compilation will complete
successfully but will make an empty libasm.a:

Erm -- that's weird. So when you extract the tarballs, atomic-amd64- linux.s is non-empty (as it should be), but after a failed build, it's file length 0?

Notice that during the build process, we sym link atomic-amd64-linux.s to atomic-asm.S (I see that happening in your build output as well). So if the compiler is barfing when compiling atomic-asm.S, perhaps it's also wiping out the file...? That would be darn weird, though...

However, even after I get Open MPI to compile, 'make check' will give
the following results:

libtool: link: icc -DOMPI_DISABLE_INLINE_ASM -O3 -DNDEBUG
-finline-functions -fno-strict-aliasing -restrict -pthread
-fvisibility=hidden -o atomic_barrier_noinline
atomic_barrier_noinline-atomic_barrier_noinline.o -Wl,--export-dynamic
../../opal/asm/.libs/libasm.a -lnsl -lutil -pthread
ipo: warning #11010: file format not recognized for
../../opal/asm/.libs/libasm.a, possible linker script
atomic_barrier_noinline-atomic_barrier_noinline.o(.text+0x29): In
function `main':
: undefined reference to `opal_atomic_mb'

Yes, this is not surprising if the .s file is empty -- it makes an empty .o file, and therefore those symbols just aren't defined.

--
Jeff Squyres
Cisco Systems

Reply via email to