8.5.8 pvtran

c=PyPBLAS.pvtran(alpha,a,beta,c)

La función "PyPBLAS.pvtran" implementa la siguiente operación entre matrices con elementos de tipo real:

\begin{displaymath}\beta \cdot C+ \alpha \cdot A^T + \to C \end{displaymath}

En el caso que las dimensiones de alguna de las entradas no sea correcta, la rutina PyPBLASpvtran informará de ello y no podrá finalizar la operación.

Las características de cada uno de los parámetros son las siguientes:

A continuación mostramos un ejemplo en la utilización de esta rutina:

from PyACTS import *
import PyACTS.PyPBLAS as PyPBLAS
from RandomArray import *
from Numeric import *
m,n=8,6
#Initiliaze the Grid
PyACTS.gridinit()
if PyACTS.iread==1:
        print "Example of using PyPBLAS 3: PvTRAN"
        print "N=",n,";nprow x npcol:",PyACTS.nprow,"x",PyACTS.npcol
        print "Block's size:",PyACTS.mb,"*",PyACTS.nb
        a=reshape(range(m*n),[n,m])
        print "a=",a
        c=ones([m,n])
        print "c=",c
        alpha,beta=2.,3.
        print "alpha=",alpha,";","beta=",beta
else:
        alpha,a,beta,c=None,None,None,None
#We convert Numeric Array to PyACTS.Scalapack Array
ACTS_lib=1 # 1=Scalapack
alpha=Scal2PyACTS(alpha,ACTS_lib)
beta=Scal2PyACTS(beta,ACTS_lib)
a=Num2PyACTS(a,ACTS_lib)
c=Num2PyACTS(c,ACTS_lib)
#We call PBLAS routine
c= PyPBLAS.pvtran(alpha,a,beta,c)
c_num=PyACTS2Num(c)
if PyACTS.iread==1:
        print "PvTRAN=",transpose(c_num)
PyACTS.gridexit()
El resultado de este código es el siguiente:
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPypvtran.py
Example of using PyPBLAS 3: PvTRAN
N= 6 ;nprow x npcol: 2 x 2
Block's size: 2 * 2
a= [[ 0  1  2  3  4  5  6  7]
 [ 8  9 10 11 12 13 14 15]
 [16 17 18 19 20 21 22 23]
 [24 25 26 27 28 29 30 31]
 [32 33 34 35 36 37 38 39]
 [40 41 42 43 44 45 46 47]]
c= [[1 1 1 1 1 1]
 [1 1 1 1 1 1]
 [1 1 1 1 1 1]
 [1 1 1 1 1 1]
 [1 1 1 1 1 1]
 [1 1 1 1 1 1]
 [1 1 1 1 1 1]
 [1 1 1 1 1 1]]
alpha= 2.0 ; beta= 3.0
PvTRAN= [[  3.   5.   7.   9.  11.  13.  15.  17.]
 [ 19.  21.  23.  25.  27.  29.  31.  33.]
 [ 35.  37.  39.  41.  43.  45.  47.  49.]
 [ 51.  53.  55.  57.  59.  61.  63.  65.]
 [ 67.  69.  71.  73.  75.  77.  79.  81.]
 [ 83.  85.  87.  89.  91.  93.  95.  97.]]

En el ejemplo mostrado podemos ver como generamos las matrices a y c con las dimensiones adecuadas para poder realizar la operación, por tanto a es $n \times m$ y b es $m\times n$ resultado una matriz de tamaño $m\times n$.

See Sobre este documento... para sugerencias en cambios.