/[MITgcm]/MITgcm/verification/testreport
ViewVC logotype

Diff of /MITgcm/verification/testreport

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.172 by jmc, Wed May 2 14:30:28 2012 UTC revision 1.173 by jmc, Tue Jun 26 22:30:54 2012 UTC
# Line 526  makemodel() Line 526  makemodel()
526    
527  mk_mpi_size()  mk_mpi_size()
528  {  {
529      # mk_mpi_size input_file output_file proc_Nb prefer_to_split_X      # mk_mpi_size input_file output_file proc_Nb threads_Nb_X threads_Nb_Y
530      #      #
531      # make new SIZE.h (=output_file) from SIZE.h_mpi (=input_file)      #  make new SIZE.h (=output_file) from SIZE.h_mpi (=input_file)
532      #     for an MPI build with no more than proc_Nb processors ;      #     for an MPI build with no more than proc_Nb processors ;
533      # return the effective number of processors.      #  ensure that enough tiles per proc (nSx,nSy) remain for the given
534        #     number of threads (nTx,nTy) ;
535        #  return the effective number of processors.
536    
537      inp=$1      inp=$1
538      out=$2      out=$2
539      np=$3      np=$3
540      dirX=$4      tx=$4
541        ty=$5
542      tmp=TTT.$$      tmp=TTT.$$
543    
544        # dirX : select with direction to favor in MPI process repartition
545        #   dirX=1 : prefer to put more proc in X direction
546        #   dirX=0 : prefer to put more proc in Y direction
547        dirX=0
548    
549      px=`grep "^     & *nPx *=" $inp | sed "s/^     & *nPx *= *//" | sed 's/, *$//'`      px=`grep "^     & *nPx *=" $inp | sed "s/^     & *nPx *= *//" | sed 's/, *$//'`
550      py=`grep "^     & *nPy *=" $inp | sed "s/^     & *nPy *= *//" | sed 's/, *$//'`      py=`grep "^     & *nPy *=" $inp | sed "s/^     & *nPy *= *//" | sed 's/, *$//'`
551      sx=`grep "^     & *nSx *=" $inp | sed "s/^     & *nSx *= *//" | sed 's/, *$//'`      sx=`grep "^     & *nSx *=" $inp | sed "s/^     & *nSx *= *//" | sed 's/, *$//'`
552      sy=`grep "^     & *nSy *=" $inp | sed "s/^     & *nSy *= *//" | sed 's/, *$//'`      sy=`grep "^     & *nSy *=" $inp | sed "s/^     & *nSy *= *//" | sed 's/, *$//'`
553    
554        #- for each direction, assume # of threads is a multiple of total number of tiles
555        nx=$px
556        if [ `expr $sx % $tx` -ne 0 -a `expr $sx \* $px % $tx` -eq 0 ] ; then
557            nx=`expr $sx \* $px / $tx`
558            if [ $verbose -gt 1 ]; then
559                echo " change px from $px to $nx to accommodate $tx threads"
560            fi
561        fi
562        ny=$py
563        if [ `expr $sy % $ty` -ne 0 -a `expr $sy \* $py % $ty` -eq 0 ] ; then
564            ny=`expr $sy \* $py / $ty`
565            if [ $verbose -gt 1 ]; then
566                echo " change py from $py to $ny to accommodate $ty threads"
567            fi
568        fi
569      #- find the largest divisor of input_file proc Nb, but not larger than $np      #- find the largest divisor of input_file proc Nb, but not larger than $np
570      pp=0      pp=0
571      i=1      i=1
572      while [ $i -le $px ] ; do      while [ $i -le $nx ] ; do
573        if [ `expr $px % $i` -eq 0 ] ; then        if [ `expr $nx % $i` -eq 0 ] ; then
574          j=1          j=1
575          while [ $j -le $py ] ; do          while [ $j -le $ny ] ; do
576            if [ `expr $py % $j` -eq 0 ] ; then            if [ `expr $ny % $j` -eq 0 ] ; then
577              ij=`expr $i \* $j`              ij=`expr $i \* $j`
578              if [ $ij -gt $pp ] ; then              if [ $ij -gt $pp ] ; then
579                  flag=1                  flag=1
# Line 1384  for dir in $TESTDIRS ; do Line 1407  for dir in $TESTDIRS ; do
1407      fi      fi
1408    
1409      if test "x$MPI" != "x0" ; then      if test "x$MPI" != "x0" ; then
1410          prefer_X=0          ntx=1 ; nty=1
1411          if test "x$MULTI_THREAD" = "xt" ; then          if test "x$MULTI_THREAD" = "xt" ; then
1412              retv=`check_eedata $dir"/input/eedata.mth"`            ff=$dir"/input/eedata.mth"
1413              if test $retv = 1 ; then prefer_X=1 ; fi            ntx=`grep "^ *nTx *=" $ff | tail -1 | sed 's/^ *nTx *= *//' | sed "s/, *$//"`
1414              nty=`grep "^ *nTy *=" $ff | tail -1 | sed 's/^ *nTy *= *//' | sed "s/, *$//"`
1415          fi          fi
1416          #- create new SIZE.h with no more than '$MPI' Procs          #- create new SIZE.h with no more than '$MPI' Procs
1417          mk_mpi_size $CODE_DIR"/SIZE.h_mpi" $BUILD_DIR"/tr_size.mpi" $MPI $prefer_X          mk_mpi_size $CODE_DIR"/SIZE.h_mpi" $BUILD_DIR"/tr_size.mpi" $MPI $ntx $nty
1418          LOC_NPROC=$?          LOC_NPROC=$?
1419          (   cd $BUILD_DIR          (   cd $BUILD_DIR
1420              if test -r SIZE.h.mpi ; then              if test -r SIZE.h.mpi ; then

Legend:
Removed from v.1.172  
changed lines
  Added in v.1.173

  ViewVC Help
Powered by ViewVC 1.1.22