a,ra,ca=gamx2d(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 maximos 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
esta matriz 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
esta matriz 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.gamx2d(x,irsrc,icsrc) if myrow==irsrc and mycol==icsrc: print "max=",transpose(a) PyBLACS.gridexit(ictxt) PyBLACS.exit()
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPyblacsgamx2d.py x[ 1 , 1 ]= [ [ 3.38789388 79.33674928 68.89134666 67.87649609]] x[ 0 , 1 ]= [ [ 2.25802504 86.12917718 30.39651697 85.26061846]] x[ 1 , 0 ]= [ [ 2.82295946 82.73296323 49.64393182 76.56855727]] x[ 0 , 0 ]= [ [ 1.69309062 89.52539112 11.14910212 93.95267964]] max= [ [ 3.38789392 89.52539062 68.89134979 93.9526825 ]]
See Sobre este documento... para sugerencias en cambios.