mpiexec 0.82 and PGI 5.2 : task.c errors!!!

Pete Wyckoff pw at osc.edu
Tue Jan 30 11:51:16 EST 2007


spiga.filippo at gmail.com wrote on Tue, 30 Jan 2007 09:10 +0100:
> Hi at all,
>   I want to compile mpiexec 0.82 with PCI compilers. I use this
> options for configure
> 
> root at scilx:/opt/mpiexec-0.82# env CFLAGS="-fast" CXXFLAGS="-fast"
> CC="pgcc" CXX="pgCC -E"  F90="pgf90"  FC="pgf77"  CPP="pgCC -E"
> ./configure --with-pbs=/usr/spool/PBS --with-default-comm=mpich-p4
> --prefix /opt/mpiexec-PGI --enable-p4-shmem

Looks reasonable.

> But these errors appears...
> 
> root at scilx:/opt/mpiexec-0.82# make
[..]
> pgcc -fast -I/usr/local/include -c mpiexec.c
> PGC-W-0114-More than one type specified (/usr/include/unistd.h: 189)
> PGC-W-0143-Useless typedef declaration (no declarators present)
> (/usr/include/unistd.h: 189)

Yow.  These and the other pile of errors are complaining about
perfectly reasonable looking system headers.  I don't know why pgcc
thinks "typedef __ssize_t ssize_t" is invalid.  But that's outside
of our control.  Maybe you need to fix your pgcc install so that
it picks up the PGI-specific versions of these headers instead.

The first real errro:

> pgcc -fast -I/usr/local/include -c task.c
> PGC-W-0114-More than one type specified (/usr/include/unistd.h: 189)
> PGC-W-0143-Useless typedef declaration (no declarators present)
> (/usr/include/unistd.h: 189)
> PGC-S-0036-Syntax error: Recovery attempted by inserting keyword
> struct before '{' (task.c: 43)
> PGC-S-0036-Syntax error: Recovery attempted by inserting ':' before
> '*' (task.c: 43)
> PGC-S-0039-Use of undeclared variable __mptr (task.c: 43)
> PGC-S-0055-Illegal operand of indirection operator (*) (task.c: 43)
> PGC-S-0035-Syntax error: Recovery attempted by replacing ';' by '!='
> (task.c: 43)
> PGC-W-0099-Type cast required for this comparison (task.c: 43)
> PGC-S-0091-Integer constant expression required (task.c: 43)
> PGC-S-0037-Syntax error: Recovery attempted by deleting ';' (task.c: 43)
> PGC-W-0109-Type specification of field unnamed/pad ignored (task.c: 43)
> PGC-S-0094-Illegal type conversion required (task.c: 43)
> PGC-S-0094-Illegal type conversion required (task.c: 43)
> PGC-S-0036-Syntax error: Recovery attempted by inserting keyword
> struct before '{' (task.c: 43)
> PGC-S-0036-Syntax error: Recovery attempted by inserting ':' before
> '*' (task.c: 43)
> PGC-S-0055-Illegal operand of indirection operator (*) (task.c: 43)
> PGC-S-0035-Syntax error: Recovery attempted by replacing ';' by '!='
> (task.c: 43)
> PGC-W-0099-Type cast required for this comparison (task.c: 43)
> PGC-S-0091-Integer constant expression required (task.c: 43)
> PGC-W-0109-Type specification of field unnamed/pad ignored (task.c: 43)
> PGC-S-0032-Syntax error: Unexpected input at ')' (task.c: 43)
> PGC-S-0029-Syntax error: Recovery attempted by deleting from ')' on
> line 43 through ')' on line 43 (task.c)

This may be because the PGI compiler does not understand typeof().
It's quite handy, but not part of any C standard.  Can you try
editing line 36 of list.h to change that "#ifdef _CRAYC" to "#if 1"
and see if it builds?  If it does, can you try "#ifdef __PGI", then
do "make clean" and "make" again?

But compiling with anything other than gcc is probably not worth the
effort.  There isn't much of anything that is performance critical
in mpiexec, so using a specialized compiler like PGI won't show any
improvment.

		-- Pete


More information about the mpiexec mailing list