----- "Dave Goodell" <[email protected]> wrote:
On Jul 29, 2010, at 10:03 AM CDT, Anthony Chan wrote:
On closer look, disgraph1.c is a MPI-2.2 only test. P's mpi.h does not have the those MPI-2.2 topology functions. I think we need to move the test MTEST_HAVE_MIN_MPI_VERSION(2,2) to
test/mpi
configure and disable all MPI-2.2 tests in the Makefiles and that seem to solve the related AC_TYPE_INT*_T tests in test/mpi's configure, right ?
What? No. The test code doesn't need any build system modifications AFAICT. The MTEST_HAVE_MIN_MPI_VERSION(X,Y) macro just checks the MPI_VERSION and MPI_SUBVERSION macro values.
The bug is that the "size" and "rank" variables are defined inside the #if block, rather than outside of it. Just move them up from line 29 to line 24.
Yes. Shouldn't distgraph1.c not be compiled if MTEST_HAVE_MIN_MPI_VERSION(2,2) = false ? I suggest moving the MPI version test to configure is because if MTEST_HAVE_MIN_MPI_VERSION(2,2) is not true, the AC_TYPE_INT*_T and AC_TYPE_UINT*_T in test/mpi/configure should not be attempted as well. That seems to be a more consistent approach... unless you don't think we need C99 type tests in configure. A.Chan
-Dave
A.Chan ----- [email protected] wrote:
Hi Bill,
Were you able to do "make" successfully of test/mpi on AIX ? I couldn't. On our P, I got this failure
/bgsys/drivers/ppcfloor/comm/xl/bin/mpixlc_r -DHAVE_CONFIG_H -I. -I/home/chan/mpich_work/mpich2/test/mpi/topo -I../include -I/home/chan/mpich_work/mpich2/test/mpi/topo/../include -c /home/chan/mpich_work/mpich2/test/mpi/topo/distgraph1.c "/home/chan/mpich_work/mpich2/test/mpi/topo/distgraph1.c", line 211.36: 1506-045 (S) Undeclared identifier size. "/home/chan/mpich_work/mpich2/test/mpi/topo/distgraph1.c", line 212.36: 1506-045 (S) Undeclared identifier rank. make: *** [distgraph1.o] Error 1
Look inside distgraph1.c, the macro MTEST_HAVE_MIN_MPI_VERSION seems to be the problem. The macro is defined in include/mpitest.h, not sure how it works yet ? cc'd back to the group, maybe someone knew the answer.
PS. I just added --with-config-args to test/mpi's configure, so I can do "test/mpi/configure --with-config-args=bgp_xl on P". Maybe you can add a .cfg in test/mpi/configargs for AIX. I seem to lose my access to blueprint, so can't add one for AIX.
A.Chan
----- "William Gropp" <[email protected]> wrote:
No, I didn't try cross_compiling=yes because configure bleats about --
host . Bill
On Jul 28, 2010, at 1:05 PM, Anthony Chan wrote:
Yes, autoconf documentation on cross-compile is minimal. I will add an INSTALL in test/mpi to document the issue.
Did you try setting "cross_compiling=yes" instead of "--host=ibm-xlc --build=ibm-poe" ? They should be exactly the same except the configure warning (AFAIK)... Or you prefer typing "--host --build" ?
A.Chan
----- "William Gropp" <[email protected]> wrote:
Sorry, the autoconf cross compilation documentation is
atrocious. I
had to do
configure CC=mpcc_r ... --host=ibm-xlc --build=ibm-poe
to keep configure from complaining that it couldn't run C
programs
and
that --host wasn't used (which, BTW, doesn't work).
Bill
On Jul 28, 2010, at 12:14 PM, [email protected] wrote:
What is --cross ? The following configure works for the BG/P configure of test/mpi (the latest svn version), i.e. every test in configure passes
mpich2/test/mpi/configure
'CC=/bgsys/drivers/ppcfloor/comm/xl/bin/
mpixlc_r' 'F77=/bgsys/drivers/ppcfloor/comm/xl/bin/mpixlf77_r' 'FC=/bgsys/drivers/ppcfloor/comm/xl/bin/mpixlf90_r' 'CXX=/bgsys/drivers/ppcfloor/comm/xl/bin/mpixlcxx_r' 'cross_compiling=yes'
I used cross_compiling=yes to turn on the cross-compile support in autoconf instead of the recommended --host and --build (you will get a configure warning). Without cross_compiling=yes, test like AC_CHECK_SIZEOF will try to run a program, so AC_CHECK_SIZEOF will always return 0. The other option seems to be to define the CROSS_* that we used to do. IMHO, setting cross_compiling is a small price to pay and is much easier than setting 2 sets of compilers. I am planning to add --with-config-args that I did for ADLB, so user can specify things like --with-config-args=bgp or aix where file bgp.cfg or aix.cfg contains all compiler values and cross_compiling=yes.
The other option is always set cross_compiling=yes for standalone build given all tests in test/mpi/configure.in seems to work in cross-compile mode....
Let me know if this is acceptable or you have some other ideas ?
PS. You may also want to set MPIEXEC to enable "make testing".
A.Chan
----- "William Gropp" <[email protected]> wrote:
Anthony,
For the IBM MPI that I'm running, if I select the IBM compilers for MPI programs, you can't run the resulting programs. But if you use xlc instead of mpcc, you can run programs (the TESTCC in the old configure). Will there be any way to avoid selecting --cross for platforms where you can't run programs complied with the mpi compilation scripts?
Bill
William Gropp Deputy Director for Research Institute for Advanced Computing Applications and Technologies Paul and Cynthia Saylor Professor of Computer Science University of Illinois Urbana-Champaign
William Gropp Deputy Director for Research Institute for Advanced Computing Applications and Technologies Paul and Cynthia Saylor Professor of Computer Science University of Illinois Urbana-Champaign
William Gropp Deputy Director for Research Institute for Advanced Computing Applications and Technologies Paul and Cynthia Saylor Professor of Computer Science University of Illinois Urbana-Champaign
On Jul 29, 2010, at 10:57 AM CDT, [email protected] wrote:
----- "Dave Goodell" <[email protected]> wrote:
On Jul 29, 2010, at 10:03 AM CDT, Anthony Chan wrote:
On closer look, disgraph1.c is a MPI-2.2 only test. P's mpi.h does not have the those MPI-2.2 topology functions. I think we need to move the test MTEST_HAVE_MIN_MPI_VERSION(2,2) to
test/mpi
configure and disable all MPI-2.2 tests in the Makefiles and that seem to solve the related AC_TYPE_INT*_T tests in test/mpi's configure, right ?
What? No. The test code doesn't need any build system modifications AFAICT. The MTEST_HAVE_MIN_MPI_VERSION(X,Y) macro just checks the MPI_VERSION and MPI_SUBVERSION macro values.
The bug is that the "size" and "rank" variables are defined inside the #if block, rather than outside of it. Just move them up from line 29 to line 24.
Yes.
Shouldn't distgraph1.c not be compiled if MTEST_HAVE_MIN_MPI_VERSION(2,2) = false ?
No. I disagree with this. There's no reason for this to involve the build system. The preprocessor macro is a simple and effective check, and it's what we should be using, IMO. These macros were added to the MPI standard for exactly this sort of use case.
I suggest moving the MPI version test to configure is because if MTEST_HAVE_MIN_MPI_VERSION(2,2) is not true, the AC_TYPE_INT*_T and AC_TYPE_UINT*_T in test/mpi/configure should not be attempted as well. That seems to be a more consistent approach... unless you don't think we need C99 type tests in configure.
The AC_TYPE_INT*_T tests don't hurt anything if we do them unconditionally. Just fix the real bug in the test and leave everything else alone. -Dave
participants (2)
-
chan@mcs.anl.gov -
Dave Goodell