Changes between Version 11 and Version 12 of AstroBearAmr


Ignore:
Timestamp:
05/23/11 14:49:33 (14 years ago)
Author:
Brandon Shroyer
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • AstroBearAmr

    v11 v12  
    339339This description of communication is from a data domain perspective, though, and does not take interprocess communications into account.  In a parallel application, the routines above will pass data to other processors as well as moving it between local grids.
    340340
    341 AstroBEAR's point-to-point communications are all non-blocking.  Once it knows the data requirements, the code uses {{{Post}}} routines set up a level's transmissions, and later on it uses {{{Comp}}} routines to block until the required transmissions are done (see the example below).  To ensure the best possible performance, we want to post the data sends as soon as the data is available and wait until we absolutely need the data before completing the receives.  This keeps the processors busy crunching numbers and swapping data between local grids while they wait for data to arrive.  Completion of sends and posting of receives is a less precise art, but in general early posts and delayed receives lead to better performance.
     341All point-to-point communications involve a send and a receive.  AstroBEAR's point-to-point communications are all non-blocking, which adds another dimension: the ''post'', which sets up the transmission, and the ''complete'' (or {{{Comp}}}), which blocks on a transmission operation until it is completed.
    342342
    343343{{{
     
    350350  CALL CompSendOverlaps
    351351}}}
     352
     353To ensure the best possible performance, we want to post the data sends as soon as the data is available and wait until we absolutely need the data before completing the receives.  This keeps the processors busy crunching numbers and swapping data between local grids while they wait for data to arrive.  Completion of sends and posting of receives is a less precise art, but in general early posts and delayed receives lead to better performance.
     354
     355
    352356[[BR]]
    353357=== Tree Communication ===
     
    361365 * {{{InheritOverlapsNewChildren()}}}
    362366
    363 As in the case with data operations, each of these requires four communication calls in order to overlap the computation with communication.  In all of these cases, it is node's children that are being communicated - since this is the only tree data that is created locally.
    364 
    365 = Threading =
     367As in the case with data operations, each of these requires four communication calls ({{{PostSend}}}, {{{PostRecv}}}, {{{CompSend}}}, {{{CompRecv}}}) in order to overlap the computation with communication.  In all of these cases, it is the node's children that are being communicated.
     368
     369[[BR]]
     370== Threading ==
     371
     372
    366373There are several threading options for parallelizing the hydro advance across levels.  There are currently three basic approaches to address this
    367374 * Threading the Advances - The advancing of each level can be done independently although higher level threads should have higher priorities