--- MITgcm/tools/genmake2 2006/03/29 19:28:02 1.145 +++ MITgcm/tools/genmake2 2006/05/05 20:04:43 1.148 @@ -1,6 +1,6 @@ #! /usr/bin/env bash # -# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/genmake2,v 1.145 2006/03/29 19:28:02 jmc Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/genmake2,v 1.148 2006/05/05 20:04:43 ce107 Exp $ # # Makefile generator for MITgcm UV codes # created by cnh 03/98 @@ -13,20 +13,28 @@ test_for_package_in_cpp_options() { cpp_options=$1 pkg=$2 - test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg" || exit 99 - test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg" || exit 99 - test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg" || exit 99 - test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg" || exit 99 + test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg[ ]" + test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg[ ]" + test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg[ ]" + test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg[ ]" + test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg$" + test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg$" + test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg$" + test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg$" } # Search for particular CPP #cmds associated with MPI # usage: test_for_mpi_in_cpp_eeoptions CPP_file test_for_mpi_in_cpp_eeoptions() { cpp_options=$1 - test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI" || exit 99 - test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI" || exit 99 - test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI" || exit 99 - test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI" || exit 99 + test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI[ ]" + test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI[ ]" + test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI[ ]" + test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI[ ]" + test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI$" + test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI$" + test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI$" + test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI$" } # Search for particular string in a file. Return 1 if detected, 0 if not @@ -39,7 +47,7 @@ if test "x${RETVAL}" = x0 ; then printf "Error: In $file there is an illegal line: " grep -i "$strng" $file - return 1 + exit 99 fi return 0 } @@ -579,11 +587,15 @@ -ts | --ts Produce timing information per timestep -papis | --papis - Produce summary MFlop/s with PAPI per timestep + Produce summary MFlop/s (and IPC) with PAPI per timestep + -pcls | --pcls + Produce summary MFlop/s etc. with PCL per timestep -foolad | --foolad Fool the AD code generator -papi | --papi Performance analysis with PAPI + -pcl | --pcl + Performance analysis with PCL -hpmt | --hpmt Performance analysis with the HPM Toolkit @@ -1008,8 +1020,10 @@ MPIPATH= TS= PAPIS= +PCLS= FOOLAD= PAPI= +PCL= HPMT= GSL= HAVE_TEST_L= @@ -1070,7 +1084,7 @@ # The following state can be set directly by command-line switches gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE" -gm_s2="FC CPP IEEE TS PAPIS PAPI HPMT GSL MPI JAM DUMPSTATE STANDARDDIRS" +gm_s2="FC CPP IEEE TS PAPIS PCLS PAPI PCL HPMT GSL MPI JAM DUMPSTATE STANDARDDIRS" # The following state is not directly set by command-line switches gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM " @@ -1254,10 +1268,14 @@ TS=true ;; -papis | --papis) PAPIS=true ;; + -pcls | --pcls) + PCLS=true ;; -foolad | --foolad) FOOLAD=true ;; -papi | --papi) PAPI=true ;; + -pcl | --pcl) + PCL=true ;; -hpmt | --hpmt) HPMT=true ;; @@ -1526,6 +1544,17 @@ INCLUDES="$INCLUDES $PAPIINC" LIBS="$LIBS $PAPILIB" fi +if test ! "x$PCLS" = x ; then + echo " Turning on PCL counter summary per timestep" + echo " Please make sure PCLINC, PCLLIB are defined" + if test ! "x$FOOLAD" = x ; then + DEFINES="$DEFINES -DUSE_PCL_FLOPS_SFP" + else + DEFINES="$DEFINES -DUSE_PCL_FLOPS" + fi + INCLUDES="$INCLUDES $PCLINC" + LIBS="$LIBS $PCLLIB" +fi if test ! "x$PAPI" = x ; then if test ! "x$PAPIS" = x ; then echo " PAPI performance analysis and flop summary per timestep cannot co-exist!" @@ -1538,10 +1567,25 @@ LIBS="$LIBS $PAPILIB" fi fi +if test ! "x$PCL" = x ; then + if test ! "x$PCLS" = x ; then + echo " PCL performance analysis and flop summary per timestep cannot co-exist!" + echo " Sticking with PCL flop summary per timestep!" + else + echo " Turning on performance analysis with PCL" + echo " Please make sure PCLINC, PCLLIB are defined" + DEFINES="$DEFINES -DUSE_PCL" + INCLUDES="$INCLUDES $PCLINC" + LIBS="$LIBS $PCLLIB" + fi +fi if test ! "x$HPMT" = x ; then if test ! "x$PAPI" = x ; then echo " PAPI and the HPM Toolkit cannot co-exist!" echo " Sticking with PAPI!" + else if test ! "x$PCL" = x ; then + echo " PCL and the HPM Toolkit cannot co-exist!" + echo " Sticking with PCL!" else echo " Turning on performance analysis with the HPM Toolkit" echo " Please make sure HPMTINC, HPMTLIB are defined" @@ -1549,6 +1593,7 @@ INCLUDES="$INCLUDES $HPMTINC" LIBS="$LIBS $HPMTLIB" fi + fi fi if test ! "x$GSL" = x ; then echo " Turning on use of GSL to control floating point calculations"