8.3.4 pvaxpy

y= PyPBLAS.pvaxpy(alpha,x,y)

La función "PyPBLAS.pvaxpy" suma el vector y con el resultado de multiplicar el vector x por un escalar alpha. La operación se puede resumir como: "y=y+alpha*x". Los vectores "x" e "y" han de ser tipo PyACTS.

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 función:
from PyACTS import *
import PyACTS.PyPBLAS as PyPBLAS
from RandomArray import *
from Numeric import *
#Dimension of Arrays
n=8
#Initiliaze the Grid
PyACTS.gridinit()
if PyACTS.iread==1:
        print "Example of using PyPBLAS: PvAXPY"
        print "N=",n,";nprow x npcol:",PyACTS.nprow,"x",PyACTS.npcol
        print "Block's size:",PyACTS.mb,"*",PyACTS.nb
        alpha=2
        print "alpha=",alpha
        x=(1+1j)*reshape(array(range(n),Numeric.Float),[n,1])
        print "x'=",transpose(x)
        y=(1+1j)*ones([n,1])
        print "y'=",transpose(y)
else:
        x,y,alpha=None,None,None
#We convert Numeric Array to PyACTS.Scalapack Array
ACTS_lib=1 # 1=Scalapack
x=Num2PyACTS(x,ACTS_lib)
y=Num2PyACTS(y,ACTS_lib)
alpha=Scal2PyACTS(alpha,ACTS_lib)
#We call PBLAS routine
y= PyPBLAS.pvaxpy(alpha,x,y)

y_num=PyACTS2Num(y)
if PyACTS.iread==1:
        print "Resultado Global:"
        print "y'=",transpose(y_num)
PyACTS.gridexit()
El resultado de este código es el siguiente:
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPypvaxpy.py
Example of using PyPBLAS: PvAXPY
N= 8 ;nprow x npcol: 2 x 2
Block's size: 2 * 2
alpha= 2
x'= [ [ 0.+0.j  1.+1.j  2.+2.j  3.+3.j  4.+4.j  5.+5.j  6.+6.j
        7.+7.j]]
y'= [ [ 1.+1.j  1.+1.j  1.+1.j  1.+1.j  1.+1.j  1.+1.j  1.+1.j
        1.+1.j]]
Resultado Global:
y'= [ [  1. +1.j   3. +3.j   5. +5.j   7. +7.j   9. +9.j  11.+11.j
        13.+13.j  15.+15.j]]
En este caso apreciamos como el contenido del vector "y" cambia , de la entrada a la salida. En el caso que quisieramos conservar el valor del vector y, podriamos utilizar otra variable como variable de destino a la salida de la función "PyPBLAS.pvaxpy":
z = PyPBLAS.pvaxpy(alpha,x,y)
See Sobre este documento... para sugerencias en cambios.