trsd2d(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.La matriz en este caso
es de tipo triangular, de esto modo usaremos los parametros uplo
, y diag
para describir
las caracteristicas de la matriz triangular.
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.
uplo
: Debido a que las matrices son simétricas, con este caracter
indicamos en que lado de la diagonal principal vamos a realizar cálculos y
obtener los resultados:
uplo='U'
: (Valor por defecto).Se obtienen los resultados en la
diagonal principal y por encima de ella.
uplo='L'
: Se obtienen los resultados en la diagonal principal y por
debajo de ella.
diag
: Indicará si la matriz es unitaria triangular o no.
diag='N'
: (Valor por defecto). La matrix no es unitaria triangular
diag='U'
: La matrix es unitaria triangular
llda
: Leading dimension de a.
Parametros de Salida (no tiene)
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.