7.2.4 gridinit

ictxt = gridinit(nprow,npcol[,order])

Mediante la rutina gridinit indicaremos cuantos procesos estaran contenidos dentro de la malla que deseamos establecer. Todas las rutinas de las BLACS deberán llamar a esta rutina o a su rutina homóloga (gridmap). 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.

Esta rutina crea una malla de procesos de tamaño nprow x npcol, y asigna a cada proceso un orden dentro de esa malla dependiendo del parámetro order.

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
ictxt=PyBLACS.gridinit(nprow,npcol)
if ictxt<>-1:
        print "Soy ",iam,".I'm in the grid. ictxt=",ictxt
else:
        print "Soy ",iam,".I'm not in the grid. ictxt=",ictxt
PyBLACS.gridexit(ictxt)
El resultado de este código es el siguiente:
[vgaliano@localhost EXAMPLES]$ mpirun -np 5 mpipython exPyblacsgridinit.py
Soy  4 .I'm not in the grid. ictxt= -1
Soy  3 .I'm in the grid. ictxt= 0
Soy  1 .I'm in the grid. ictxt= 0
Soy  2 .I'm in the grid. ictxt= 0
Soy  0 .I'm in the grid. ictxt= 0
Hemos de observar que el proceso nš 4 (iam=5) no pertenece a la malla 2x2 creada. De este modo, únicamente aquellos procesos con ictxt=0, pertenecen a la malla.

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