Differences between revisions 2 and 4 (spanning 2 versions)
Revision 2 as of 2012-04-17 10:34:32
Size: 3324
Editor: NicoleThomas
Comment:
Revision 4 as of 2012-04-17 11:13:10
Size: 3948
Editor: NicoleThomas
Comment:
Deletions are marked like this. Additions are marked like this.
Line 6: Line 6:
 * clamsmix_set_config    * '''clamsmix_set_config'''
Line 15: Line 15:
 * clamsmix_set_bounds  * '''clamsmix_set_bounds '''
Line 24: Line 24:
 * clamsmix_sort  * '''clamsmix_sort'''
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 || integer || || OUT || Fehlercode ||
  || level || real(prec) || (dnparts) || IN || Level (ZETA-Werte)||
  || indarr || integer || (dnparts) || OUT || sortierter Index von levelind||
  || irange || integer || (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 || integer || (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:
   }}}

  * 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 61: Line 59:
 * clamsmix_nparts_per_level
* '''clamsmix_nparts_per_level '''
Line 68: Line 67:
   * 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
  || irange        || integer || (2,l_nthetas,0:ntasks-1) || IN  || Start- und Endposition jedes Levels für jede PE||
  || dnparts_level || integer || (l_nthetas,0:ntasks-1)   || OUT || Anzahl Punkte pro Level für jede PE ||
  || nparts_level || integer || (l_nthetas)              || OUT || Anzahl Punkte pro Level auf allen PEs ||
Line 72: Line 71:
 * clamsmix_set_level  * '''clamsmix_set_level '''
Line 79: Line 78:
   * 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
  || nparts_level || integer || (l_nthetas)   || IN  || Anzahl Punkte pro Level auf allen PEs ||
  || levelrange   || integer || (2,0:ntasks-1)|| OUT || Start- und Endlevel für jede PE ||
Line 83: Line 82:
 * clamsmix_shuffle  * '''clamsmix_shuffle'''
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)|| (dnparts_max) || IN || Level (ZETA-Werte) ||
   || infield      || real(prec)|| (dnparts_max) || IN || Umzuordnender Parameter ||
   || outfield     || real(prec)|| (dnparts_max) || OUT || Umgeordneter Parameter ||
Line 102: Line 101:
 * mix  * '''mix'''

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

      integer

      OUT

      Fehlercode

      level

      real(prec)

      (dnparts)

      IN

      Level (ZETA-Werte)

      indarr

      integer

      (dnparts)

      OUT

      sortierter Index von levelind

      irange

      integer

      (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

      integer

      (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

      integer

      (2,l_nthetas,0:ntasks-1)

      IN

      Start- und Endposition jedes Levels für jede PE

      dnparts_level

      integer

      (l_nthetas,0:ntasks-1)

      OUT

      Anzahl Punkte pro Level für jede PE

      nparts_level

      integer

      (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

      integer

      (l_nthetas)

      IN

      Anzahl Punkte pro Level auf allen PEs

      levelrange

      integer

      (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)

      (dnparts_max)

      IN

      Level (ZETA-Werte)

      infield

      real(prec)

      (dnparts_max)

      IN

      Umzuordnender Parameter

      outfield

      real(prec)

      (dnparts_max)

      OUT

      Umgeordneter Parameter

  • mix

  • Punkte wieder gleichmäßig auf CPUs verteilen

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