a_acts=PNetCDF2PyACTS(a_pnetcdf,ACTS_lib)
Una vez instalado este paquete correctamente podremos hacer que interactúe con el paquete PyACTS mediante esta y otras rutinas que explicaremos a continuación. La principal finalidad de esta rutina es la de obtener los datos desde una instancia de un objeto PyPNetCDF para conseguir una variable de tipo PyACTS que nos permita utilizarla en las rutinas PyBLACS, PyPBLAS y PyScaLAPACK.
La utilización de esta rutina trata de ser muy sencilla, sin embargo para poder comprender su funcionamiento será necesario también entender el funcionamiento básico del paquete PyPNetCDF.
El proceso que se sigue en esta rutina será el siguiente:
Las características de cada uno de los parámetros de entrada y salida son:
Parámetros de Entrada
a_pnetcdf: instancia de un objeto de tipo PyPNetCDF.Variable.
ACTS_lib: Indicador de la librería de las ACTS a la que queremos convertir.
Parámetros de Salida
a_acts: Matriz de tipo PyACTS con las propiedades ACTS_lib, data y desc ``preparada'' para ser utilizada como variable en cualquiera de las funciones del paquete PyACTS que requiera una variable de este tipo como dato de entrada.
from PyACTS import *
import PyACTS.PyPBLAS as PyPBLAS
import PyACTS.pyscalapack as pyscalapack
from PyPNetCDF.PNetCDF import *
from RandomArray import *
from Numeric import *
#Initiliaze the Grid
PyACTS.gridinit()
file = PNetCDFFile('data_pvgemm.nc', 'r')
if PyACTS.iread==1:
print "Example Using PyPBLAS 3 (PvGEMM) y and PyPNetCDF "
print "nprow x npcol:",PyACTS.nprow,"x",PyACTS.npcol
print "Tam. Bloques:",PyACTS.mb,"*",PyACTS.nb
a = file.variables['a']
b = file.variables['b']
c = file.variables['c']
#We convert NetCDF Variables to PyACTS.Scalapack Array
ACTS_lib=1 # 1=Scalapack
alpha1=PNetCDF2ScalPyACTS(file.alpha[0],ACTS_lib)
beta1=PNetCDF2ScalPyACTS(file.beta[0],ACTS_lib)
a1=PNetCDF2PyACTS(a,ACTS_lib)
b1=PNetCDF2PyACTS(b,ACTS_lib)
c1=PNetCDF2PyACTS(c,ACTS_lib)
#We call PBLAS routine
c1= PyPBLAS.pvgemm(alpha1,a1,b1,beta1,c1)
#Create Results File in NetCDF Format
file2 = PNetCDFFile('result_data_pvgemm.nc', 'w')
file2.title = "Result of operation with pvgemm"
file2.version = 1
for dim in file.dimensions:
file2.createDimension(dim, file.dimensions[dim])
c_result = file2.createVariable('c_result', c.vartypecode, c.dimensions)
file2.enddef()
#Write results from PyACTS data to a NetCDF File
c_result=PyACTS2PNetCDF(c1,c_result)
file2.close()
file.close()
PyACTS.gridexit()
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPypvgemm.py