MPICH-1.2.4 with Intel C++ compiler on RedHat 8.0

MPICH-1.2.4 with Intel C++ compiler on RedHat 8.0

Portrait de c00jsh00

I wonder if it is a bug or not, but I am not able to install MPICH-1.2.4 on my Linux box.
Here is my situation:
OS: RedHat 8.0 with kernel 2.4.20smp
Intel Compiler 7.0 (ifc and icc)
Configure option:
./configure -cc=icc -fc=ifc -f90=ifc --with-device=ch_p4
--with-arch=LINUX --prefix=/opt/mpi/mpich124

The configuration was successful, however, the make process failed:
...
12 Lines Compiled
ar cr /work/source/mpich-1.2.4/lib/libmpichf90nc.a .tmp/mpi.o mpi1.o
mpi2.o
mpi_constants.o
if [ ! -d /work/source/mpich-1.2.4/include/f90base ] ; then
mkdir /work/source/mpich-1.2.4/include/f90base ; fi
cp mpi-base.mod /work/source/mpich-1.2.4/include/f90base/MPI.mod
cp MPI_CONSTANTS.mod /work/source/mpich-1.2.4/include/f90base
cp MPI1.mod /work/source/mpich-1.2.4/include/f90base
cp MPI2.mod /work/source/mpich-1.2.4/include/f90base
make --no-print-directory mpi-lib-test
make --no-print-directory profileliblink
Testing that MPI applications can be linked...
make --no-print-directory linktest
make overtake
/work/source/mpich-1.2.4/bin/mpicc -DUSE_SOCKLEN_T -DUSE_U_INT_FOR_XDR
-DHAVE_MPICHCONF_H -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE
_STRING_H=1 -DUSE_STDARG=1 -DHAVE_LONG_DOUBLE=1 -DHAVE_LONG_LONG_INT=1
-DHAVE_PROTOTYPES=1 -DHAVE_SIGNAL_H=1 -DHAVE_SIGACTION=1 -DHA
VE_SLEEP=1 -DHAVE_SYSCONF=1 -c overtake.c
/work/source/mpich-1.2.4/bin/mpicc -DUSE_SOCKLEN_T -DUSE_U_INT_FOR_XDR
-DHAVE_MPICHCONF_H -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE
_STRING_H=1 -DUSE_STDARG=1 -DHAVE_LONG_DOUBLE=1 -DHAVE_LONG_LONG_INT=1
-DHAVE_PROTOTYPES=1 -DHAVE_SIGNAL_H=1 -DHAVE_SIGACTION=1 -DHA
VE_SLEEP=1 -DHAVE_SYSCONF=1 -c test.c
/work/source/mpich-1.2.4/bin/mpicc -o overtake overtake.o test.o
/work/source/mpich-1.2.4/lib/libmpich.a(p4_utils.o): In function
`p4_wait_for_end':
p4_utils.o(.text+0xcb2): undefined reference to `__bswap_32'
p4_utils.o(.text+0xcc7): undefined reference to `__bswap_32'
/work/source/mpich-1.2.4/lib/libmpich.a(p4_utils.o): In function
`zap_remote_p4_processes':
p4_utils.o(.text+0x1078): undefined reference to `__bswap_32'
p4_utils.o(.text+0x1082): undefined reference to `__bswap_32'
p4_utils.o(.text+0x108c): undefined reference to `__bswap_32'
/work/source/mpich-1.2.4/lib/libmpich.a(p4_utils.o)(.text+0x1129): more
undefined references to `__bswap_32' follow
make[4]: *** [overtake] Error 1
make[3]: [linktest] Error 2 (ignored)
Could not link a C program with MPI libraries
make[3]: *** [linktest] Error 1
make[2]: *** [linktest] Error 2
make[1]: *** [mpi-lib-test] Error 2
make: *** [mpi] Error 2

I wonder if this is a bug in MPICH-1.2.4 or a bug in Intel's compiler and associated libraries?
The installation is successful with GNU compiler.

Regards

Jyh-Shyong Ho, PhD.
Research Scientist
National Center for High-Performance Computing
Hsinchu, Taiwan, ROC

6 posts / 0 nouveau(x)
Dernière contribution
Reportez-vous à notre Notice d'optimisation pour plus d'informations sur les choix et l'optimisation des performances dans les produits logiciels Intel.
Portrait de hjmjohnson

I don't think that the Intel C++ compiler is supported under RedHat 8.0. Actually, I think it is the version of glibc under RH8.0 that is not supported.

Regards,
Hans

Portrait de GaneshRao (Intel)

Hans is correct. The current version of the compiler is not validated on the glibc shipped with Redhat 8.0. A future update of the Intel compiler would be of help.

Jyh-Shyong Ho - Thanks for using this forum.
Hans - Thank you for answering!
Regards,
Ganesh

Portrait de one_glen

here's how i built the mpich libs

i've built for suse 7.3 and rh8.0

./configure blah blah blah
make;make tests;make install
once it works
then ./configure for intel
./configure ifc_blah, ifc_blah
make sure you change the default extensions
make
after it thrashes around and look in the bin for the new mpf77_intel, blah,
that's it put them wherever you installed the others

Portrait de cp_jain

You need to apply a patch in bits/byteswap.h
Please refer to
http://gcc.gnu.org/ml/gcc-prs/2002-10/msg01154.html

for the patch.

As mentioned by Ganesh, the current version of the compiler is not validated on the glibc shipped with Redhat 8.0, but you may give a try to following workaround for Intel compiler -

Replace

#define __bswap_32(x)
(__extension__
({ register unsigned int __x = (x); __bswap_constant_32 (__x); }))

with

#define __bswap_32(x) __bswap_constant_32 ((unsigned int)x)

in bits/byteswap.h

The above patch and this workaround should solve your
issue.

Regards,
CP

Portrait de GaneshRao (Intel)

CP,
Welcome!
Thanks for the update...

Cheers,
Ganesh

Connectez-vous pour laisser un commentaire.