next up previous contents
Next: Copy involving matrices Up: Copy Previous: Copy involving vectors

Copy involving multivectors

 

When considering the operation of copying a multivector to a multivector, note that a multivector (projected or not) should be viewed as a collection of vectors. Thus, a copy involving multivectors is equivalent to a sequence of copies, each involving an individual vector in the input (projected) multivector and the corresponding vector in the output (projected) multivector.

Let us consider the copy of a multivector to a projected multivector. Viewing the operation as a sequence of copies of individual vectors yields the following observations: If the projected multivector is projected onto a column of nodes, the global lengths and widths of input and output must match. If however it is projected onto a row of nodes, each column of the multivector becomes a row of the projected multivector, and thus, as part of the copy, the data must be transposed! Now the global length and width of the vector must match the global width and length (after projection) of the projected vector, respectively.

One way to understand why the transpose of the data occurs is to view an (unduplicated) projected multivector as a block of columns of a matrix, where all columns exist within one row or column of the node mesh. Since vectors and multivectors are always stored and distributed column-major, no transpose need to occur to go from a block of vectors to a block of columns of a matrix, or a multivector projected onto a column of nodes. However, a multivector must be transposed to become a block of rows of a matrix, or a multivector projected onto a row of nodes.

Given that we have described the operation of the copy of a multivector to or from a projected multivector, we can give a clean description for copying data from a projected multivector to a projected multivector. One can view this operation to be equivalent to a copy of the input projected multivector to a (appropriately dimensioned) multivector, followed by a copy of this intermediate result to the output projected multivector. A consequence of this is that if the projection of the input and output objects is not onto the same dimension of the node mesh (row or column), then the data is again transposed as part of the copy. To clearly understand this, imagine what happens when a block of columns of a matrix is copied to a block of rows of a matrix.


next up previous contents
Next: Copy involving matrices Up: Copy Previous: Copy involving vectors

rvdg@cs.utexas.edu