next up previous contents
Next: 3.5 Creating Objects ``Conformal Up: 3 Advanced Linear Algebra Previous: 3.3 Shifting of Linear

3.4 Determining Where to Split

 

For performance reasons, it is often important to partition the linear algebra object on a template block boundary (e.g. when it is necessary to guarantee that a specific sub-matrix or sub-vector exists entirely on one node). To determine the size that can be split on a given side of an object, we provide the call place HR here

figure3892

figure3896

figure3899

place HR here This call returns the size to the nearest block boundary on the specified side. The sides that can be specified are

tabular3277

Depending on which side is indicated and the object type of obj, the index returned in owner has the meaning given Table 3.1.

   table3292
Table 3.1: Value of owner returned by the call PLA_Obj_split_size( obj, side, &size, &owner );.

Note: It is important to realize that the size returned in size is to the next boundary, which doesn't necessarily imply that the blocks to the left and right of this boundary exist on different nodes. Indeed, a boundary of between nodes will always occur on a block boundary, but not necessarily vice versa. This allows us to generalize the creation of templates in the future, without requiring a change in codes written using the PLAPACK infrastructure. The assumption is that template blocks always exist entirely in one node, a column of template blocks always exists within one column of nodes, and a row of template blocks always exists within one row of nodes.

next up previous contents
Next: 3.5 Creating Objects ``Conformal Up: 3 Advanced Linear Algebra Previous: 3.3 Shifting of Linear

rvdg@cs.utexas.edu