7.5.1 gesd2d

gesd2d(a,rdest,cdest,[ictxt,llda])

Esta rutina envia la matriz que se le pasa por parametro al proceso destino descrito mediante las coordenadas (cdest,rdesc) dentro de la malla de procesos. Esta rutina es localmente bloqueante, es decir , retornará de su llamada incluso si la correspondiente recepción no ha sido realizada.

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 *
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,"] sends a=",transpose(a)
        PyBLACS.gesd2d(a,0,1)
        PyBLACS.gesd2d(a,1,0)
        PyBLACS.gesd2d(a,1,1)
else:
        a=zeros([size,1])
        a=PyBLACS.gerv2d(a,0,0)
        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 exPyblacsgesdrv2d.py
[ 0 , 0 ] sends 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.