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:
Parametros de Entrada
Parametros de Salida
x
e y
. Este
valor es una variable global en todos aquellos procesos que han intervenido en
el calculo del producto, es decir, que tengan valores de x
e y
para realizar ese calculo. El proceso PyScaLAPACK.iread==1
siempre tiene
este valor por contener datos de los vectores x
e y
.
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
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()
[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.