Changes between Version 11 and Version 12 of AstroBearAmr
- Timestamp:
- 05/23/11 14:49:33 (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AstroBearAmr
v11 v12 339 339 This 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. 340 340 341 A stroBEAR'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.341 All 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. 342 342 343 343 {{{ … … 350 350 CALL CompSendOverlaps 351 351 }}} 352 353 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. 354 355 352 356 [[BR]] 353 357 === Tree Communication === … … 361 365 * {{{InheritOverlapsNewChildren()}}} 362 366 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 = 367 As 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 366 373 There are several threading options for parallelizing the hydro advance across levels. There are currently three basic approaches to address this 367 374 * Threading the Advances - The advancing of each level can be done independently although higher level threads should have higher priorities