PLASMA
Parallel Linear Algebra Software for Multicore Architectures
pamm: Updating a matrix using two tiles

Functions

 __attribute__ ((weak))
 

Detailed Description

Function Documentation

__attribute__ ( (weak)  )

Performs one of the matrix-matrix operations

              PlasmaLeft                PlasmaRight

OP PlasmaW : W = A1 + op(V) * A2 or W = A1 + A2 * op(V) OP PlasmaA2 : A2 = A2 - op(V) * W or A2 = A2 - W * op(V)

where op( V ) is one of

op( V ) = V or op( V ) = V^H

A1, A2 and W are general matrices, and V is:

  l = k: rectangle + triangle
  l < k: rectangle + trapezoid
  l = 0: rectangle

Size of V, both rowwise and columnwise, is:


side trans size

left N M x K T K x M right N K x N

T N x K

PlasmaLeft (columnwise and rowwise):

        |    K    |                 |         M         |
     _  __________   _              _______________        _
        |    |    |                 |             | \

V: | | | V^H: |_____________|___\ K | | | M-L | | M | | | |__________________| _ |____| | _ \ | | | M - L | L | \ | | L _ |____| _

PlasmaRight (columnwise and rowwise):

    |         K         |                   |    N    |
    _______________        _             _  __________   _
    |             | \                       |    |    |

V^H: |_____________|___\ N V: | | | | | | | | K-L |__________________| _ K | | | |____| | _ | K - L | L | \ | | \ | | L _ |____| _

Arguments

Parameters
[in]op
    OP specifies which operation to perform:

    - PlasmaW  : W  = A1 + op(V) * A2  or  W  = A1 + A2 * op(V)
    - PlasmaA2 : A2 = A2 - op(V) * W   or  A2 = A2 - W * op(V)
[in]side
    SIDE specifies whether  op( V ) multiplies A2
    or W from the left or right as follows:

    - PlasmaLeft  : multiply op( V ) from the left
                       OP PlasmaW  :  W  = A1 + op(V) * A2
                       OP PlasmaA2 :  A2 = A2 - op(V) * W

    - PlasmaRight : multiply op( V ) from the right
                       OP PlasmaW  :  W  = A1 + A2 * op(V)
                       OP PlasmaA2 :  A2 = A2 - W * op(V)
[in]storev
    Indicates how the vectors which define the elementary
    reflectors are stored in V:

    - PlasmaColumnwise
    - PlasmaRowwise
[in]mThe number of rows of the A1, A2 and W If SIDE is PlasmaLeft, the number of rows of op( V )
[in]nThe number of columns of the A1, A2 and W If SIDE is PlasmaRight, the number of columns of op( V )
[in]kIf SIDE is PlasmaLeft, the number of columns of op( V ) If SIDE is PlasmaRight, the number of rows of op( V )
[in]lThe size of the triangular part of V
[in]A1On entry, the m-by-n tile A1.
[in]lda1The leading dimension of the array A1. lda1 >= max(1,m).
[in,out]A2On entry, the m-by-n tile A2. On exit, if OP is PlasmaA2 A2 is overwritten
[in]lda2The leading dimension of the tile A2. lda2 >= max(1,m).
[in]VThe matrix V as described above. If SIDE is PlasmaLeft : op( V ) is m-by-k If SIDE is PlasmaRight: op( V ) is k-by-n
[in]ldvThe leading dimension of the array V.
[in,out]WOn entry, the m-by-n matrix W. On exit, W is overwritten either if OP is PlasmaA2 or PlasmaW. If OP is PlasmaA2, W is an input and is used as a workspace.
[in]ldwThe leading dimension of array W.
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value

Performs one of the matrix-matrix operations

              PlasmaLeft                PlasmaRight

OP PlasmaW : W = A1 + op(V) * A2 or W = A1 + A2 * op(V) OP PlasmaA2 : A2 = A2 - op(V) * W or A2 = A2 - W * op(V)

where op( V ) is one of

op( V ) = V or op( V ) = V^T

A1, A2 and W are general matrices, and V is:

  l = k: rectangle + triangle
  l < k: rectangle + trapezoid
  l = 0: rectangle

Size of V, both rowwise and columnwise, is:


side trans size

left N M x K T K x M right N K x N

T N x K

PlasmaLeft (columnwise and rowwise):

        |    K    |                 |         M         |
     _  __________   _              _______________        _
        |    |    |                 |             | \

V: | | | V^T: |_____________|___\ K | | | M-L | | M | | | |__________________| _ |____| | _ \ | | | M - L | L | \ | | L _ |____| _

PlasmaRight (columnwise and rowwise):

    |         K         |                   |    N    |
    _______________        _             _  __________   _
    |             | \                       |    |    |

V^T: |_____________|___\ N V: | | | | | | | | K-L |__________________| _ K | | | |____| | _ | K - L | L | \ | | \ | | L _ |____| _

Arguments

Parameters
[in]op
    OP specifies which operation to perform:

    - PlasmaW  : W  = A1 + op(V) * A2  or  W  = A1 + A2 * op(V)
    - PlasmaA2 : A2 = A2 - op(V) * W   or  A2 = A2 - W * op(V)
[in]side
    SIDE specifies whether  op( V ) multiplies A2
    or W from the left or right as follows:

    - PlasmaLeft  : multiply op( V ) from the left
                       OP PlasmaW  :  W  = A1 + op(V) * A2
                       OP PlasmaA2 :  A2 = A2 - op(V) * W

    - PlasmaRight : multiply op( V ) from the right
                       OP PlasmaW  :  W  = A1 + A2 * op(V)
                       OP PlasmaA2 :  A2 = A2 - W * op(V)
[in]storev
    Indicates how the vectors which define the elementary
    reflectors are stored in V:

    - PlasmaColumnwise
    - PlasmaRowwise
[in]mThe number of rows of the A1, A2 and W If SIDE is PlasmaLeft, the number of rows of op( V )
[in]nThe number of columns of the A1, A2 and W If SIDE is PlasmaRight, the number of columns of op( V )
[in]kIf SIDE is PlasmaLeft, the number of columns of op( V ) If SIDE is PlasmaRight, the number of rows of op( V )
[in]lThe size of the triangular part of V
[in]A1On entry, the m-by-n tile A1.
[in]lda1The leading dimension of the array A1. lda1 >= max(1,m).
[in,out]A2On entry, the m-by-n tile A2. On exit, if OP is PlasmaA2 A2 is overwritten
[in]lda2The leading dimension of the tile A2. lda2 >= max(1,m).
[in]VThe matrix V as described above. If SIDE is PlasmaLeft : op( V ) is m-by-k If SIDE is PlasmaRight: op( V ) is k-by-n
[in]ldvThe leading dimension of the array V.
[in,out]WOn entry, the m-by-n matrix W. On exit, W is overwritten either if OP is PlasmaA2 or PlasmaW. If OP is PlasmaA2, W is an input and is used as a workspace.
[in]ldwThe leading dimension of array W.
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value