Differences between revisions 2 and 3
Revision 2 as of 2012-04-17 10:34:32
Size: 3324
Editor: NicoleThomas
Comment:
Revision 3 as of 2012-04-17 10:46:19
Size: 3564
Editor: NicoleThomas
Comment:
Deletions are marked like this. Additions are marked like this.
Line 32: Line 32:
   * level (dnparts), IN, Level (ZETA-Werte)
   * levelind (dnparts), LOKAL, Index der ZETA-Werte in ZETA-Grid
   * indarr (dnparts), OUT, sortierter Index von levelind
   * irange (2,l_nthetas,0:ntasks-1), OUT, Start- und Endposition jedes Levels im sortierten Feld
    . irange(1,i,k): Erster Punkt auf Level i in levelind(indarr) auf PE k
    . irange(2,i,k): Letzter Punkt auf Level i in levelind(indarr) auf PE k
  || status || || OUT || Fehlercode ||
  || level || (dnparts) || IN || Level (ZETA-Werte)||
  || indarr || (dnparts) || OUT || sortierter Index von levelind||
  || irange || (2,l_nthetas,0:ntasks-1) || OUT || Start- und Endposition jedes Levels im sortierten Feld <<BR>> irange(1,i,k): Erster Punkt auf Level i in levelind(indarr) auf PE k <<BR>> irange(2,i,k): Letzter Punkt auf Level i in levelind(indarr) auf PE k||
  || levelind || (dnparts) || LOKAL || Index der ZETA-Werte in ZETA-Grid||
Line 39: Line 38:
  * Ermittle zu jedem ZETA-Wert den Index im ZETA-Grid -> levelind
  * Indexsortierung des Feldes levelind -> indarr
  * Ermittle den ersten und letzten Punkt jedes Levels in levelind(indarr) -> irange
Line 40: Line 42:
  {{{   {{{
Line 53: Line 55:
  }}}   }}}
Line 55: Line 57:
  * Ermittle zu jedem ZETA-Wert den Index im ZETA-Grid -> levelind
  * Indexsortierung des Feldes levelind -> indarr
  * Ermittle den ersten und letzten Punkt jedes Levels in levelind(indarr) -> irange
Line 91: Line 90:
   || status ||OUT || Fehlercode ||
   || my_nparts || OUT || neue Anzahl Punkte auf aktueller PE||
   || indarr (dnparts)|| IN || ||
   || irange (2,l_nthetas,0:ntasks-1)|| IN || ||
   || levelrange (2,0:ntasks-1) || IN || ||
   || dnparts_level (l_nthetas,0:ntasks-1) || IN || ||
   || nparts_level (l_nthetas) || IN || ||
   || level || IN || Level (ZETA-Werte) ||
   || infield || IN || Umzuordnender Parameter ||
   || outfield || OUT || Umgeordneter Parameter ||
   || status    || integer || OUT || Fehlercode ||
   || my_nparts    || integer || OUT || neue Anzahl Punkte auf aktueller PE||
   || indarr       || integer (dnparts) || IN || ||
   || irange       || integer (2,l_nthetas,0:ntasks-1)|| IN || ||
   || levelrange   || integer (2,0:ntasks-1) || IN || ||
   || dnparts_level|| integer (l_nthetas,0:ntasks-1) || IN || ||
   || nparts_level || integer (l_nthetas) || IN || ||
   || level        || real(prec)|| IN || Level (ZETA-Werte) ||
   || infield      || real(prec)|| IN || Umzuordnender Parameter ||
   || outfield     || real(prec)|| OUT || Umgeordneter Parameter ||

messy_clamsmix_si.f90

sub. clamsmix_global_end

  • clamsmix_set_config
    SUBROUTINE clamsmix_set_config
    • in messy_clamsmix.f90
    • Setze von mix benötigte Variablen:
      • adapt_par, time_step, nthetas, l_nthetas, theta_min, theta_max
  • clamsmix_set_bounds
      SUBROUTINE clamsmix_set_bounds 
    • in messy_clamsmix.f90
    • Setze die Grenzen für jedes Level:
      • theta_min_act, theta_max_act, theta_delta_act, l_min_act, l_max_act, l_delta_act
  • clamsmix_sort
     SUBROUTINE clamsmix_sort (status, level, indarr, irange)
    • Indexsortierung des Levels (ZETA)
    • Variablen

      status

      OUT

      Fehlercode

      level

      (dnparts)

      IN

      Level (ZETA-Werte)

      indarr

      (dnparts)

      OUT

      sortierter Index von levelind

      irange

      (2,l_nthetas,0:ntasks-1)

      OUT

      Start- und Endposition jedes Levels im sortierten Feld
      irange(1,i,k): Erster Punkt auf Level i in levelind(indarr) auf PE k
      irange(2,i,k): Letzter Punkt auf Level i in levelind(indarr) auf PE k

      levelind

      (dnparts)

      LOKAL

      Index der ZETA-Werte in ZETA-Grid

    • Ermittle zu jedem ZETA-Wert den Index im ZETA-Grid -> levelind

    • Indexsortierung des Feldes levelind -> indarr

    • Ermittle den ersten und letzten Punkt jedes Levels in levelind(indarr) -> irange

      ipart      1    2    3    4    5    6    7    8    9
       
      level     320  330  325  340  322  331  332  342  mdi
      
      levelind   1    2    1    3    1    2    2    3   9999
      
      indarr     1    3    5    2    6    7    4    8    9
      
      levelind   1    1    1    2    2    2    3    3   9999
      (indarr)
      
      irange      (1,3)          (4,6)         (7,8)
  • clamsmix_nparts_per_level
      SUBROUTINE clamsmix_nparts_per_level (irange, dnparts_level, nparts_level)
    • in messy_clamsmix.f90
    • Ermittle die Anzahl Punkte pro Level
    • Parameter:
      • irange (2,l_nthetas,0:ntasks-1), IN
      • dnparts_level(l_nthetas,0:ntasks-1), OUT, Anzahl Punkte pro Level für jede PE
      • nparts_level(l_nthetas), OUT, Anzahl Punkte pro Level auf allen PEs
  • clamsmix_set_level
      SUBROUTINE clamsmix_set_level (levelrange, nparts_level)
    • in messy_clamsmix.f90
    • Ermittle für jede PE, welche Level bearbeitet werden
    • Parameter:
      • nparts_level(l_nthetas), IN, Anzahl Punkte pro Level auf allen PEs
      • levelrange(2,0:ntasks-1), OUT, Start- und Endlevel für jede PE
  • clamsmix_shuffle
       SUBROUTINE clamsmix_shuffle (status, my_nparts, indarr, irange, levelrange, &
                            dnparts_level, nparts_level, level, infield, outfield)
    • Umsortierung der Punkte:
      • Jede PE bekommt alle Punkte, deren Level zwischen levelrange(1,irank) and levelrange(2,irank) liegt
    • Parameter

      status

      integer

      OUT

      Fehlercode

      my_nparts

      integer

      OUT

      neue Anzahl Punkte auf aktueller PE

      indarr

      integer (dnparts)

      IN

      irange

      integer (2,l_nthetas,0:ntasks-1)

      IN

      levelrange

      integer (2,0:ntasks-1)

      IN

      dnparts_level

      integer (l_nthetas,0:ntasks-1)

      IN

      nparts_level

      integer (l_nthetas)

      IN

      level

      real(prec)

      IN

      Level (ZETA-Werte)

      infield

      real(prec)

      IN

      Umzuordnender Parameter

      outfield

      real(prec)

      OUT

      Umgeordneter Parameter

  • mix
  • Punkte wieder gleichmäßig auf CPUs verteilen

messy/mix (last edited 2013-02-18 09:00:01 by NicoleThomas)