dotc= PyPBLAS.pvdotc(x,y)
La función "PyPBLAS.pvdotc" realiza el producto escalar entre el vector
y
y el vector x
. La operación se puede resumir como:
"y=xT*y" donde xT
representa a la traspuesta de x
.
Los vectores "x" e "y" pueden estar o no ditribuidos. En el caso que
alguno o ambos no lo estén se distribuirán de forma transparente al usuario.
La peculiaridad de esta función con respecto a la función
PyPBLAS.pvdot () es el tipo de datos que contienen
los vectores x
e y
. En este caso son de tipo complejo mientras que
en la rutina anterior se trataba de números reales.
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
.
x
e y
han de ser vectores con elementos de tipo
complejo, que pueden tener precision simple o doble.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: PvDOTC" print "Parameters:N=",n,";Grid:",PyACTS.nprow,"*",PyACTS.npcol print "Block's size:",PyACTS.mb,"*",PyACTS.nb x=(1+1j)*ones([n,1]) y=reshape( (1+1j)*array(range(n),Complex),[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 dotc= PyPBLAS.pvdotc(x,y) if PyACTS.iread==1: print "PvDOTC=",dotc PyACTS.gridexit()
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPypvdotc.py Example of using PyPBLAS: PvDOTC Parameters:N= 8 ;Grid: 2 * 2 Block's size: 2 * 2 x'= [ [ 1.+1.j 1.+1.j 1.+1.j 1.+1.j 1.+1.j 1.+1.j 1.+1.j 1.+1.j]] y'= [ [ 0.+0.j 1.+1.j 2.+2.j 3.+3.j 4.+4.j 5.+5.j 6.+6.j 7.+7.j]] PvDOTC= (56+0j)
See Sobre este documento... para sugerencias en cambios.