next up previous contents
Next: A Building Block Approach Up: Data Duplication and Consolidation Previous: Reduce

Pipelining Computation and Communication

  For performance reasons, it is frequently important to implement the communication required as part of a parallel algorithm so that communication and computation flows in the same direction. An example of this is given later as part of a PLAPACK Cholesky factorization implementation, in Section gif. Notice that the PLAPACK approach inherently hides communication in the copy and reduce routines. Explicitly controlling the communication algorithms as part of a parallel implementation of an algorithm using PLAPACK would require breaking this important feature of the infrastructure. However, we can pass hints to the underlying copy and reduce implementation regarding how computation naturally flows within rows and columns of nodes, so that communication can be appropriately adjusted. For this we provide the following routines: place HR here

figure5435

figure5439

figure5442

place HR here Legal inputs for mesh_dimension are PLA_TEMP_ROW to indicate flow within a row of the mesh and PLA_TEMP_COL to indicate flow within a column of the mesh. Legal inputs for direction are PLA_DIR_LEFT and PLA_DIR_RIGHT, when setting the flow of computation within a row, and PLA_DIR_UP PLA_DIR_DOWN when setting the flow of computation with a column. In addition, one can indicate there is no flow in a given direction by passing direction = PLA_DIR_NOFLOW. This last value is the default value when a template is created.

To obtain the current value of the direction of flow of computation, we provide the routine place HR here

figure5461

figure5465

figure5468

place HR here


next up previous contents
Next: A Building Block Approach Up: Data Duplication and Consolidation Previous: Reduce

rvdg@cs.utexas.edu