7.9.1 gsum2d

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:

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()
El resultado de la ejecución de este script es:
[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.