x,y= PyPBLAS.pvswap(x,y)
La funcion pvswap
intercambia el contenido de los datos de dos vectores
que se le introducen como parametros:
Es decir, la operación básica que realizan es el intecambio de valores entre
los variables de tipo PyACTS
x
e y
.
Parametros de Entrada
Parametros de Salida
Se ha de tener en cuenta que x e y son dos variables de tipo PyACTS
que pueden estar
distribuidos entre los procesos de la malla de procesos configurada en la
incialización del sistema.
Por ejempo:
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: PvSWAP" print "N=",n,";nprow x npcol:",PyACTS.nprow,"x",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) x,y= PyPBLAS.pvswap(x,y) if PyACTS.ictxt<>-1: print "x[",PyACTS.myrow,",",PyACTS.mycol,"]=",x.data print "y[",PyACTS.myrow,",",PyACTS.mycol,"]=",y.data PyACTS.gridexit()
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPypvswap.py Example of using PyPBLAS: PvSWAP N= 8 ;nprow x npcol: 2 x 2 Block's size: 2 * 2 x= [ [0 1 2 3 4 5 6 7]] y= [ [1 1 1 1 1 1 1 1]] x[ 0 , 0 ]= [0 1 4 5] y[ 0 , 0 ]= [1 1 1 1] x[ 1 , 0 ]= [2 3 6 7] y[ 1 , 0 ]= [1 1 1 1] x[ 0 , 1 ]= zeros((0,), 'l') y[ 0 , 1 ]= zeros((0,), 'l') x[ 1 , 1 ]= zeros((0,), 'l') y[ 1 , 1 ]= zeros((0,), 'l')
x.data
e y.data
. Se ha de tener en cuenta en el presente
ejemplo, que se ha hecho una impresión por pantalla (mediante "print
"x[",...") en todos los procesos que pertenecen a la malla de procesos que se ha
configurado (en este caso de dimensiones 3*2). Cada uno de los procesos imprime
los valores que posea el vector a modo local, es decir el vector en este caso
está distribuido en varios de los procesos que componen la malla.
En determinadas ocasiones puede ser interesante recoger la totalidad del vector
en uno de los procesos, con tal finalidad se ha implementado la función
"PyACTS2Num" descrita en el capítulo x_global=PyACTS2Num(x)
See Sobre este documento... para sugerencias en cambios.