c=PyPBLAS.pvtranu(alpha,a,beta,c)
La función "PyPBLAS.pvtranu" implementa la siguiente operación entre
matrices con elementos de tipo complejo:
PyPBLASpvtranu informará de ello y no podrá finalizar la
operación.
Se ha de tener en cuenta que los vectores,matrices y escalares de entrada han de ser de tipo PyACTS. Las características de cada uno de los parámetros son las siguientes:
Parametros de Entrada
Parametros de Salida
A continuación mostramos un ejemplo en la utilización de esta rutina:
from PyACTS import *
import PyACTS.PyPBLAS as PyPBLAS
from RandomArray import *
from Numeric import *
m,n=8,6
#Initiliaze the Grid
PyACTS.gridinit()
if PyACTS.iread==1:
print "Example of using PyPBLAS 3: PvTRANU"
print "N=",n,";nprow x npcol:",PyACTS.nprow,"x",PyACTS.npcol
print "Block's size:",PyACTS.mb,"*",PyACTS.nb
a=reshape(range(m*n),[n,m])*(1+1.j)
print "a=",a
c=ones([m,n])*(1-1.j)
print "c=",c
alpha,beta=2.,3.
print "alpha=",alpha,";","beta=",beta
else:
alpha,a,beta,c=None,None,None,None
#We convert Numeric Array to PyACTS.Scalapack Array
ACTS_lib=1 # 1=Scalapack
alpha=Scal2PyACTS(alpha,ACTS_lib)
beta=Scal2PyACTS(beta,ACTS_lib)
a=Num2PyACTS(a,ACTS_lib)
c=Num2PyACTS(c,ACTS_lib)
#We call PBLAS routine
c= PyPBLAS.pvtranu(alpha,a,beta,c)
c_num=PyACTS2Num(c)
if PyACTS.iread==1:
print "PvTRANU=",transpose(c_num)
PyACTS.gridexit()
vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPypvtranu.py
Example of using PyPBLAS 3: PvTRANU
N= 6 ;nprow x npcol: 2 x 2
Block's size: 2 * 2
a= [[ 0. +0.j 1. +1.j 2. +2.j 3. +3.j 4. +4.j 5. +5.j
6. +6.j 7. +7.j]
[ 8. +8.j 9. +9.j 10.+10.j 11.+11.j 12.+12.j 13.+13.j
14.+14.j 15.+15.j]
[ 16.+16.j 17.+17.j 18.+18.j 19.+19.j 20.+20.j 21.+21.j
22.+22.j 23.+23.j]
[ 24.+24.j 25.+25.j 26.+26.j 27.+27.j 28.+28.j 29.+29.j
30.+30.j 31.+31.j]
[ 32.+32.j 33.+33.j 34.+34.j 35.+35.j 36.+36.j 37.+37.j
38.+38.j 39.+39.j]
[ 40.+40.j 41.+41.j 42.+42.j 43.+43.j 44.+44.j 45.+45.j
46.+46.j 47.+47.j]]
c= [[ 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j]
[ 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j]
[ 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j]
[ 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j]
[ 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j]
[ 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j]
[ 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j]
[ 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j 1.-1.j]]
alpha= 2.0 ; beta= 3.0
PvTRANU= [[ 3. -3.j 5. -1.j 7. +1.j 9. +3.j 11. +5.j 13. +7.j
15. +9.j 17.+11.j]
[ 19.+13.j 21.+15.j 23.+17.j 25.+19.j 27.+21.j 29.+23.j
31.+25.j 33.+27.j]
[ 35.+29.j 37.+31.j 39.+33.j 41.+35.j 43.+37.j 45.+39.j
47.+41.j 49.+43.j]
[ 51.+45.j 53.+47.j 55.+49.j 57.+51.j 59.+53.j 61.+55.j
63.+57.j 65.+59.j]
[ 67.+61.j 69.+63.j 71.+65.j 73.+67.j 75.+69.j 77.+71.j
79.+73.j 81.+75.j]
[ 83.+77.j 85.+79.j 87.+81.j 89.+83.j 91.+85.j 93.+87.j
95.+89.j 97.+91.j]]
En el ejemplo mostrado podemos ver como generamos las matrices a y
c con las dimensiones adecuadas para poder realizar la operación , por
tanto a es
y b es
resultado una matriz
de tamaño
.
See Sobre este documento... para sugerencias en cambios.