On 05/24/2011 06:16 PM, Daily, Jeff A wrote: >> -----Original Message----- > >> From: [email protected] [mailto:autoconf- > >> [email protected]] On Behalf Of Olaf Lenz > >> Sent: Tuesday, May 24, 2011 2:02 AM > >> To: [email protected]; [email protected]; Steven G. > >> Johnson; Julian C. Cummings > >> Subject: Autoconf MPI macros > >> > >> Hi all! > >> > >> We are using the GNU autotools and MPI in a number of our projects, and > >> we found that the AX_MPI macro from the autoconf macro archive has a few > >> shortcomings. > >> > >> The problem is that AX_MPI starts to do anything only after the standard C > >> compiler has been found via AC_PROG_CC. If you want to compile the whole > >> package using MPI and simply replace CC with the MPI compiler, this can lead > >> to serious trouble. Assume the following case (seen on an IBM AIX machine): > >> * gcc is installed > >> * the MPI compiler is xlc (the IBM compiler) > >> > >> If I use AX_MPI in configure.ac, the following will happen in configure: > >> * AC_PROG_CC will recognize "gcc" as standard C compiler > >> * it will furthermore determine the options that gcc uses to generate > >> dependencies > >> * then, AX_MPI will recognize the MPI compiler "xlc" > >> * CC will be set to "xlc" > >> > >> When I compile, this means that the compiler tries to generate > >> dependencies using the compiler xlc with the options of gcc. In this >> particular > >> case, the option (-MD if I'm not mistaken) caused xlc to output profiling > >> information into the .c-file and thus effectively destroyed the C-code. > >> > >> I believe that the correct way to avoid this problem is a set of new macros > >> AX_PROG_{FC,CCCXX}_MPI that are used in configure.ac instead of > >> AC_PROG_{CC,FC,CXX}. I have attached the macro AX_PROG_CC_MPI, and a > >> git clone of the autoconf macro archive containing the macro can be found at > >> > >> https://github.com/olenz/autoconf-archive > >> > >> Internally, the MPI macro uses the standard macro AC_PROG_CC to find the > >> compiler, and directly sets CC to a working MPI version. > >> > >> I propose to include these macros into the autoconf macro archive, and to > >> extend the docs of AX_MPI to point to these macros. > >> > >> Greetings > >> Olaf > >> > >> -- > >> Dr. rer. nat. Olaf Lenz > >> Institut für Computerphysik, Pfaffenwaldring 27, D-70569 Stuttgart > >> Phone: +49-711-685-63607 > > > > There are additional shortcomings that we noticed while trying to use MPI > compilers with autotools. Specifically to autoconf, on some systems the MPI > compilers produce incorrect results for the AC_F77_LIBRARY_LDFLAGS test. We > use AC_PROG_CC, AC_PROG_F77, and AC_PROG_CXX and pass in a well-known list of > possible MPI compilers to search for so that CC, F77, and CXX are set and > used throughout the configure script. However, we then immediately "unwrap" > the MPI compilers to determine the standard compilers. We pass the unwrapped > compilers to AC_F77_LIBRARY_LDFLAGS.
I encountered AC_F77_LIBRARY_LDFLAGS shortcomings only with Oracle/Sun studio compiler and MPI wrappers based on this compiler. But with your additions to _AC_FC_LIBRARY_LDFLAGS, namely _GA_FC_LIBRARY_LDFLAGS, this macro gets you the desired result. I'm not sure if I fully understand what you are doing in GA_F77_LIBRARY_LDFLAGS but I think that your changes to _AC_FC_LIBRARY_LDFLAGS should be included in the next autoconf release as they fix the problem with the studio compiler. I attached a patch with your changes against git head. If this is going to be pushed, please don't credit me but Jeff for this contribution. > > > Further, if you're using libtool, you must pass the unwrapped compilers to > libtool because libtool unfortunately compares against compiler names. Worse > yet, after libtool is finished with its tests, we have to substitute back in > the MPI compilers which is a hack, at best. I ran into trouble using libtool with PGI and Intel based Fortran MPI compiler wrappers too. But with recent patches [1] [2] I have no problems using the compiler wrappers (gcc, Intel, IBM, PGI, Cray) directly with libtool, except for the Oracle/Sun studio compiler in shared library mode. Christian [1] http://git.savannah.gnu.org/cgit/libtool.git/commit/?id=92eb89aace9fd41e43eee33f5c392adf1bcf8963 [2] http://git.savannah.gnu.org/cgit/libtool.git/commit/?id=39ba8c55de025805c69d46e76f1a352658e01382 > > Of course, if the user passes the MPI include paths, library paths, and MPI > libraries manually then there is no issue since a standard compiler is then > used throughout. We only have issues trying to use the MPI compilers. Our > default is to use the compiler wrappers, but we allow the user to pass > arguments to our --with-mpi option which then disables the use of the MPI > compilers. > > > > I've attached hopefully all relevant m4 files we use in our project, Global > Arrays. > > Website: http://www.emsl.pnl.gov/docs/global/ > > SVN: https://svn.pnl.gov/hpctools > _________________________________________________ > Jeff Daily > Scientist > DATA INTENSIVE SCIENTIFIC COMPUTING > Pacific Northwest National Laboratory > 902 Battelle Boulevard > P.O. Box 999, MSIN K7-90 > Richland, WA 99352 USA > Tel: 509-372-6548 > Fax: 509-372-4720 > [email protected] > www.pnnl.gov > > > -- Christian Rössel Jülich Supercomputing Centre Telefon +49 2461 61-1773 ------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------ Forschungszentrum Juelich GmbH 52425 Juelich Sitz der Gesellschaft: Juelich Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498 Vorsitzender des Aufsichtsrats: MinDirig Dr. Karl Eugen Huthmacher Geschaeftsfuehrung: Prof. Dr. Achim Bachem (Vorsitzender), Dr. Ulrich Krafft (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt, Prof. Dr. Sebastian M. Schmidt ------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------ Besuchen Sie uns auf unserem neuen Webauftritt unter www.fz-juelich.de
diff --git a/lib/autoconf/fortran.m4 b/lib/autoconf/fortran.m4 index 56488a9..0290e2e 100644 --- a/lib/autoconf/fortran.m4 +++ b/lib/autoconf/fortran.m4 @@ -679,6 +679,13 @@ while test $[@%:@] != 1; do ac_cv_[]_AC_LANG_ABBREV[]_libs="$ac_cv_[]_AC_LANG_ABBREV[]_libs $ac_j"]) done ;; + -Y*) + for ac_j in `AS_ECHO(["$ac_arg"]) | sed -e 's/-Y/-L/;s/"//g;s/:/ -L/g'`; do + _AC_LIST_MEMBER_IF($ac_j, $ac_cv_[]_AC_LANG_ABBREV[]_libs, , + [ac_arg="$ac_arg $ac_j" + ac_cv_[]_AC_LANG_ABBREV[]_libs="$ac_cv_[]_AC_LANG_ABBREV[]_libs $ac_j"]) + done + ;; -[[lLR]]*) _AC_LIST_MEMBER_IF($ac_arg, $ac_cv_[]_AC_LANG_ABBREV[]_libs, , ac_cv_[]_AC_LANG_ABBREV[]_libs="$ac_cv_[]_AC_LANG_ABBREV[]_libs $ac_arg")
_______________________________________________ Autoconf mailing list [email protected] https://lists.gnu.org/mailman/listinfo/autoconf
