gesd2d(a[,ictxt,scope,top,llda])
Esta rutina inicia la difusión a traves del grupo de destinatarios. Todos los demás procesos
que pertenecen al grupo de destino deberán llamar a la rutina de recepción de la difusión
(gebr2d
). Finalmente, todos los procesos pertenecientes al grupo destinatario
recibirán la matriz a
. La difusión es localmente bloqueante, es decir , que no se
garantiza que el proceso vuelva de una llamada a broadcast hasta que todos los procesos hayan
llamado a las rutinas apropiadas (gebs2d
o gebr2d
).
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.
ictxt
: Indicador del contexto, parametro opcional. En el caso de no indicarlo,
se utilizará el identificador de contexto por defecto.
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:
top=' '
: (Valor por defecto). Topología dependiente del sistema por defecto
top='I'
: Anillo incremental
top='D'
: Anillo decremental
top='H'
: Hipercubo (mínimo spanning tree)
top='S'
: Anillo split
top='F'
: Conectividad total
top='M'
: Nodos divididos en 'I' anillos incrementales, donde 'I' es un conjunto obtenido de la llamada a PyBLACS.set
top='T'
: Arbol de difusión con nbranches=I
, donde 'I' es un conjunto obtenido de la llamada a PyBLACS.set
top='1'
: Arbol de difusión con nbranches=1
top='2'
: Arbol de difusión con nbranches=2
top='9'
: Arbol de difusión con nbranches=9
llda
: Leading dimension de a.
Parametros de Salida (no tiene)
En el ejemplo que mostramos a continuación, realizaremos la misma funcionalidad que en el ejemplo del
apartado gesd2d
import PyACTS.PyBLACS as PyBLACS from Numeric import * iam,nprocs=PyBLACS.pinfo() nprow,npcol=2,2 size=4 ictxt=PyBLACS.gridinit(nprow,npcol) nprow,npcol,myrow,mycol=PyBLACS.gridinfo() if myrow==0 and mycol==0: a=reshape(range(size),[size,1]) print "[",myrow,",",mycol,"] brodcast a=",transpose(a) PyBLACS.gebs2d(a,top='F') else: a=zeros([size,1]) a=PyBLACS.gebr2d(a,0,0,top='F') print "[",myrow,",",mycol,"] receives a=",transpose(a) PyBLACS.gridexit(ictxt) PyBLACS.exit()
El resultado de la ejecución de este script es:
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPyblacsgebsr2d.py [ 0 , 0 ] brodcast a= [ [0 1 2 3]] [ 0 , 1 ] receives a= [ [ 0. 1. 2. 3.]] [ 1 , 0 ] receives a= [ [ 0. 1. 2. 3.]] [ 1 , 1 ] receives a= [ [ 0. 1. 2. 3.]]
See Sobre este documento... para sugerencias en cambios.