a= PyPBLAS.pvgerc(alpha,x,y,a)
La función "PyPBLAS.pvgerc" implementa la siguiente operación entre vectores y matrices con elementos de tipo complejo:
Se ha de tener en cuenta que será el vector transpuesto conjugado de
y
, mientras que se corresponde con la transpuesta de y
implementado en la función anterior PyBLAS_pvgeru
x
e y
y de
la matriz A
han de ser las
adecuadas para poder realizar la multiplicacion entre ambos.
En el caso que las dimensiones de alguna de las entradas no sea correcta, la
rutina PyPBLASpvgerc
informará de ello y no podrá finalizar la
operación.
Esta rutina se provee únicamente para matrices con elementos de tipo complejo.
Las características de cada uno de los parámetros son las siguientes:
Parametros de Entrada
Parametros de Salida
A continuación mostramos un ejemplo en la utilización de esta rutina:
from PyACTS import * import PyPBLAS from RandomArray import * from Numeric import * #Dimension of Arrays n=6 #Initiliaze the Grid PyACTS.gridinit() if PyACTS.iread==1: print "Example of using PyPBLAS 2: PvGERC" print "N=",n,";nprow x npcol:",PyACTS.nprow,"x",PyACTS.npcol print "Block's size:",PyACTS.mb,"*",PyACTS.nb alpha=5 print "alpha=",alpha x=ones([n,1])+1.j*reshape(range(n),[n,1]) print "x'=",transpose(x) y=reshape(range(n),[n,1])+1.j*ones([n,1]) print "y'=",transpose(y) a=identity(n,Complex) print "a=",a else: alpha,a,x,y=None,None,None,None #We convert Numeric Array to PyACTS.Scalapack Array ACTS_lib=1 # 1=Scalapack alpha=Scal2PyACTS(alpha,ACTS_lib) x=Num2PyACTS(x,ACTS_lib) y=Num2PyACTS(y,ACTS_lib) a=Num2PyACTS(a,ACTS_lib) #We call PBLAS routine a= PyPBLAS.pvgerc(alpha,x,y,a) a_num=PyACTS2Num(a) if PyACTS.iread==1: print "PvGERC=",transpose(a_num) PyACTS.gridexit()
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPypvgerc.py Example of using PyPBLAS 2: PvGERC N= 6 ;nprow x npcol: 2 x 2 Block's size: 2 * 2 alpha= 5 x'= [ [ 1.+0.j 1.+1.j 1.+2.j 1.+3.j 1.+4.j 1.+5.j]] y'= [ [ 0.+1.j 1.+1.j 2.+1.j 3.+1.j 4.+1.j 5.+1.j]] a= [[ 1.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j] [ 0.+0.j 1.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j] [ 0.+0.j 0.+0.j 1.+0.j 0.+0.j 0.+0.j 0.+0.j] [ 0.+0.j 0.+0.j 0.+0.j 1.+0.j 0.+0.j 0.+0.j] [ 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.+0.j 0.+0.j] [ 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.+0.j]] PvGERC= [[ 1. -5.j 5. -5.j 10. -5.j 15. -5.j 20. -5.j 25. -5.j] [ 5. -5.j 11. +0.j 15. +5.j 20. +10.j 25. +15.j 30. +20.j] [ 10. -5.j 15. +5.j 21. +15.j 25. +25.j 30. +35.j 35. +45.j] [ 15. -5.j 20. +10.j 25. +25.j 31. +40.j 35. +55.j 40. +70.j] [ 20. -5.j 25. +15.j 30. +35.j 35. +55.j 41. +75.j 45. +95.j] [ 25. -5.j 30. +20.j 35. +45.j 40. +70.j 45. +95.j 51.+120.j]]
See Sobre este documento... para sugerencias en cambios.