7.2.5 gridmap

ictxt = gridmap(ictxt,usermap,ldumap,nprow,npcol)

Todos los programas que utilicen PyBLACS deberán llamar a esta rutina de inicialización o bien a una rutina similar como es gridinit. Estas rutinas establecen cada proceso dentro de una mall. Cada malla BLACS está definida en un contexto (que representa su propio universo de paso de mensajes) , de este modo no se interfieren distintos contextos o distintas configuraciones de mallas. Esta rutina puede ser utilizada en repetidas ocasiones para definir contextos/mallas adicionales.

Esta rutina de creación de una malla establece variables internas a las BLACS que no deberán ser utilizadas antes de la llamada a la funcion gridinit.

Hemos de indicar que estas rutinas mapean a los procesos en una malla: los procesos no se crean de forma dinámica. En la mayoria de sistemas paralelos, los procesos no se crean dinamicamente y éstos se crean cuando el usuario arranca el ejecutable.

Esta rutina permite al usuario establecer los procesos en una malla de una manera arbitraria. usermap(i,j) establece a un determinado proceso a situarse en i,j en la malla. En los sistemas distribuido, este número de proceso estará simplemente definido por una maquina con un identificador entre 0 y nprocs-1. gridmap no es recomendable para el usuario inexperto, puesto que gridmap es mucho mas simple. gridinit simplifica las las funciones de gridmap donde los primeros nprow * npcol procesos son mapeados dentro de la malla actual en un order natural por filas. gridmap permite al usuario avanzado aprovechar algunas caraterísticas del sistema actual.

gridmap abre el camino para el multimallado (multigridding): el usuario puede separar sus nodos en mallas arbitrarias, unirlas en una misma y luego separarlas en dos nuevas mallas. Mediante gridmap tambien podremos establecer mallas arbitrarias o submallas.

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
iam,nprocs=PyBLACS.pinfo()
nprow,npcol=2,2
ldumap=2
usermap=range(0,ldumap*npcol)
ictxt=0
ictxt=PyBLACS.gridmap(ictxt,usermap,ldumap,nprow,npcol)
PyBLACS.gridexit(ictxt)
El resultado de este código es el siguiente:
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPyblacsgridmap.py
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]

See Sobre este documento... para sugerencias en cambios.