a,ra,ca=gamn2d(a,rdest,cdest[,ictxt,scope,top,lda,rcflag])
La columna de procesos coordina el proceso que debería recibir los resultados. Si rdest=-1
,
entonces rdest
es ignorado. Esta rutina obtiene los valores mínimos comparandolos para cada elemento
con los demas elementos de las matrices de cada proceso en la misma posicion. El resultado es
devuelto en valor absoluto. En el caso de utilizar numeros complejos se calculará la norma. La ejecución
de esta rutina puede bloquear globalmente, por tanto todos los procesos que intervienen deberán ejecutar esta rutina.
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.
cdest
: Fila en la que se encuentra el proceso destinatario del mensaje.
rdest
: Columna en la que se encuentra el proceso destinatario del mensaje.
ictxt
: Indicador del contexto, parametro opcional. En el caso de no indicarlo,
se utilizará el identificador de contexto por defecto.
llda
: Leading dimension de a.
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:
Parametros de Salida
a
: Contiene el resultado en aquel proceso que se haya elegido como destino.
ra
: Si rflag=-1
este array no será referenciado y por tanto no existirá. Sin embargo,
si utilizaramos una matriz de enteros (de tamaño rcflags
x n
) indicando el indice de fila del
proceso que proporcionó el máximo.
ca
: Si rflag=-1
este array no será referenciado y por tanto no existirá. Sin embargo,
si utilizaramos una matriz de enteros (de tamaño rcflags
x n
) indicando el indice de columna del
proceso que proporcionó el máximo.
ca
: Matriz de datos recibida.
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=zeros([n,1],Float) for i in range(0,n): x[i]=100*g.random() print "x[",myrow,",",mycol,"]=",transpose(x) a,ra,ca=PyBLACS.gamn2d(x,irsrc,icsrc) if myrow==irsrc and mycol==icsrc: print "min=",transpose(a) PyBLACS.gridexit(ictxt) PyBLACS.exit()
vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPyblacsgamn2d.py x[ 0 , 1 ]= [ [ 2.25802504 86.12917718 30.39651697 85.26061846]] x[ 1 , 1 ]= [ [ 3.38789388 79.33674928 68.89134666 67.87649609]] x[ 1 , 0 ]= [ [ 2.82295946 82.73296323 49.64393182 76.56855727]] x[ 0 , 0 ]= [ [ 1.69309062 89.52539112 11.14910212 93.95267964]] min= [ [ 1.69309068 79.33674622 11.14910221 67.87649536]]