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.