c=PyPBLAS.pvtranc(alpha,a,beta,c)
La función "PyPBLAS.pvtranc" implementa la siguiente operación entre
matrices con elementos de tipo complejo:
PyPBLASpvtranc informará de ello y no podrá finalizar la
operación.
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: PvTRANC"
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.pvtranc(alpha,a,beta,c)
c_num=PyACTS2Num(c)
if PyACTS.iread==1:
print "PvTRANC=",transpose(c_num)
PyACTS.gridexit()
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPypvtranc.py
Example of using PyPBLAS 3: PvTRANC
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. -5.j 7. -7.j 9. -9.j 11.-11.j 13.-13.j
15.-15.j 17.-17.j]
[ 19.-19.j 21.-21.j 23.-23.j 25.-25.j 27.-27.j 29.-29.j
31.-31.j 33.-33.j]
[ 35.-35.j 37.-37.j 39.-39.j 41.-41.j 43.-43.j 45.-45.j
47.-47.j 49.-49.j]
[ 51.-51.j 53.-53.j 55.-55.j 57.-57.j 59.-59.j 61.-61.j
63.-63.j 65.-65.j]
[ 67.-67.j 69.-69.j 71.-71.j 73.-73.j 75.-75.j 77.-77.j
79.-79.j 81.-81.j]
[ 83.-83.j 85.-85.j 87.-87.j 89.-89.j 91.-91.j 93.-93.j
95.-95.j 97.-97.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.