8.3.5 pvdot

dot= PyPBLAS.pvdot(x,y)

La función "PyPBLAS.pvdot" realiza el producto escalar entre el vector y y el vector x, ambos variables tipo PyACTS. La operación se puede resumir como: "y=xT*y" donde xT representa a la traspuesta de x.

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

Tanto el vector x e y han de ser vectores con elementos de tipo real, que pueden tener precision simple o doble. En el caso de querer realizar el producto escalar de vectores con numeros complejos, se deberá hacer uso de las funciones PyPBLAS.pvdotu (ver sección ) y PyPBLAS.pvdotu (ver sección ). A continuación mostramos un ejemplo en la utilización de esta función:

from PyACTS import *
import 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: PvDOT"
        print "Parameters:N=",n,";Grid:",PyACTS.nprow,"*",PyACTS.npcol
        print "Block's size:",PyACTS.mb,"*",PyACTS.nb
        x=reshape(array(range(n)),[n,1])
        y=ones([n,1])
        print "x=",transpose(x)
        print "y=",transpose(y)
else:
        x,y=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)
#We call PyPblas Routine
dot= PyPBLAS.pvdot(x,y)
if PyACTS.iread==1:
        print "PvDOT=",dot
PyACTS.gridexit()
El resultado de este código es el siguiente:
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPypvdot.py
Example of using PyPBLAS: PvDOT
Parameters:N= 8 ;Grid: 2 * 2
Block's size: 2 * 2
x= [ [0 1 2 3 4 5 6 7]]
y= [ [1 1 1 1 1 1 1 1]]
PvDOT= 28.0

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