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