8.5.10 pvtranc

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

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

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

En el caso que las dimensiones de alguna de las entradas no sea correcta, la rutina PyPBLASpvtranc 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: PvTRANC"
        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])*(1+1.j)
        print "a=",a
        c=ones([m,n])*(1-1.j)
        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.pvtranc(alpha,a,beta,c)
c_num=PyACTS2Num(c)
if PyACTS.iread==1:
        print "PvTRANC=",transpose(c_num)
PyACTS.gridexit()
El resultado de este código es el siguiente:
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPypvtranc.py
Example of using PyPBLAS 3: PvTRANC
N= 6 ;nprow x npcol: 2 x 2
Block's size: 2 * 2
a= [[  0. +0.j   1. +1.j   2. +2.j   3. +3.j   4. +4.j   5. +5.j
         6. +6.j   7. +7.j]
 [  8. +8.j   9. +9.j  10.+10.j  11.+11.j  12.+12.j  13.+13.j
        14.+14.j  15.+15.j]
 [ 16.+16.j  17.+17.j  18.+18.j  19.+19.j  20.+20.j  21.+21.j
        22.+22.j  23.+23.j]
 [ 24.+24.j  25.+25.j  26.+26.j  27.+27.j  28.+28.j  29.+29.j
        30.+30.j  31.+31.j]
 [ 32.+32.j  33.+33.j  34.+34.j  35.+35.j  36.+36.j  37.+37.j
        38.+38.j  39.+39.j]
 [ 40.+40.j  41.+41.j  42.+42.j  43.+43.j  44.+44.j  45.+45.j
        46.+46.j  47.+47.j]]
c= [[ 1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j]
 [ 1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j]
 [ 1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j]
 [ 1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j]
 [ 1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j]
 [ 1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j]
 [ 1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j]
 [ 1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j]]
alpha= 2.0 ; beta= 3.0
PvTRANU= [[  3. -3.j   5. -5.j   7. -7.j   9. -9.j  11.-11.j  13.-13.j
        15.-15.j  17.-17.j]
 [ 19.-19.j  21.-21.j  23.-23.j  25.-25.j  27.-27.j  29.-29.j
        31.-31.j  33.-33.j]
 [ 35.-35.j  37.-37.j  39.-39.j  41.-41.j  43.-43.j  45.-45.j
        47.-47.j  49.-49.j]
 [ 51.-51.j  53.-53.j  55.-55.j  57.-57.j  59.-59.j  61.-61.j
        63.-63.j  65.-65.j]
 [ 67.-67.j  69.-69.j  71.-71.j  73.-73.j  75.-75.j  77.-77.j
        79.-79.j  81.-81.j]
 [ 83.-83.j  85.-85.j  87.-87.j  89.-89.j  91.-91.j  93.-93.j
        95.-95.j  97.-97.j]]

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.