a= PyPBLAS.pvsyr2(alpha,x,y,a,[uplo='U'])
La función "PyPBLAS.pvsyr2" implementa la siguiente operación entre vectores y matrices con elementos de tipo real:
En el caso que las dimensiones de alguna de las entradas no sea correcta, la
rutina PyPBLASpvsyr2
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
uplo='U'
: Triangular Superior (valor por defecto).
uplo='L'
: Triangular Inferior.
Parametros de Salida
A continuación mostramos un ejemplo en la utilización de esta rutina:
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 2: PvSYR2" 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=reshape(range(n),[n,1]) print "x'=",transpose(x) y=ones([n,1]) print "y'=",transpose(y) a=identity(n,Float) 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.pvsyr2(alpha,x,y,a) a_num=PyACTS2Num(a) if PyACTS.iread==1: print "PvSYR2'=",transpose(a_num) PyACTS.gridexit()
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPypvsyr2.py Example of using PyPBLAS 2: PvSYR2 N= 8 ;nprow x npcol: 2 x 2 Block's size: 2 * 2 alpha= 5 x'= [ [0 1 2 3 4 5 6 7]] y'= [ [1 1 1 1 1 1 1 1]] a= [[ 1. 0. 0. 0. 0. 0. 0. 0.] [ 0. 1. 0. 0. 0. 0. 0. 0.] [ 0. 0. 1. 0. 0. 0. 0. 0.] [ 0. 0. 0. 1. 0. 0. 0. 0.] [ 0. 0. 0. 0. 1. 0. 0. 0.] [ 0. 0. 0. 0. 0. 1. 0. 0.] [ 0. 0. 0. 0. 0. 0. 1. 0.] [ 0. 0. 0. 0. 0. 0. 0. 1.]] PvSYR2= [[ 1. 0. 0. 0. 0. 0. 0. 0.] [ 5. 11. 0. 0. 0. 0. 0. 0.] [ 10. 15. 21. 0. 0. 0. 0. 0.] [ 15. 20. 25. 31. 0. 0. 0. 0.] [ 20. 25. 30. 35. 41. 0. 0. 0.] [ 25. 30. 35. 40. 45. 51. 0. 0.] [ 30. 35. 40. 45. 50. 55. 61. 0.] [ 35. 40. 45. 50. 55. 60. 65. 71.]]
Se ha de tener en cuenta que el parámetro por defecto para uplo='U'
, es
decir, realizaremos los calculos unicamente que se encuentre en y por encima de la diagonal de la matriz resultante. Si quisieramos obtener la parte por debajo de la diagonal llamaríamos a la rutina del siguiente modo:
a,desca= PyPBLAS.pvsyr2(alpha,x,y,a,uplo='L')
See Sobre este documento... para sugerencias en cambios.