a=gsum2d(a,rdest,cdest[,ictxt,scope,top,lda])
Mediante la llamada a esta rutina, cada elemento del vector /matriz a
es sumado con los
correspondientes elementos de los demás matrices de los demás procesos. La combinación puede
ser globalmente bloqueante , de este modo no se devuelve una respuesta hasta que todos los procesos
han llamado a esta rutina.
Las características de cada uno de los parámetros de entrada y salida son:
Parametros de Entrada
a
: Matriz en tipo de dato Numeric
a ser enviada.
cdest
: Fila en la que se encuentra el proceso destinatario del mensaje.
rdest
: Columna en la que se encuentra el proceso destinatario del mensaje.
ictxt
: Indicador del contexto, parametro opcional. En el caso de no indicarlo,
se utilizará el identificador de contexto por defecto.
llda
: Leading dimension de a.
scope
: Indica el grupo de destino de la difusíon.
scope='A'
: (Valor por defecto). Correspondiente a All. Todos los procesos de la malla recibirán la matriz
scope='R'
: Se envían los datos a los procesos de la misma fila.
scope='C'
: Se envían los datos a los procesos de la misma columna.
top
: Topología de la difusión:
Parametros de Salida
a
: Contiene el resultado en aquel proceso que se haya elegido como destino.
A continuación mostramos un ejemplo en la utilización de esta rutina:
import PyACTS.PyBLACS as PyBLACS from Numeric import * from RandomArray import * from random import Random iam,nprocs=PyBLACS.pinfo() nprow,npcol=2,2 irsrc,icsrc=0,0 g=Random(iam) n=4 ictxt=PyBLACS.gridinit(nprow,npcol) nprow,npcol,myrow,mycol=PyBLACS.gridinfo() x=iam*reshape(range(n),[n,1]) print "x[",myrow,",",mycol,"]=",transpose(x) a=PyBLACS.gsum2d(x,irsrc,icsrc) if myrow==irsrc and mycol==icsrc: print "sum=",transpose(a) PyBLACS.gridexit(ictxt) PyBLACS.exit()
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPyblacsgsum2d.py x[ 0 , 1 ]= [ [0 1 2 3]] x[ 0 , 0 ]= [ [0 0 0 0]] x[ 1 , 0 ]= [ [0 2 4 6]] x[ 1 , 1 ]= [ [0 3 6 9]] sum= [ [ 0. 6. 12. 18.]]
See Sobre este documento... para sugerencias en cambios.