Changeset 7889dc4


Ignore:
Timestamp:
05/03/19 10:13:44 (6 years ago)
Author:
Thomas Uram <turam@…>
Branches:
pympi
Children:
7ecb2a8
Parents:
45bb293
git-author:
Thomas Uram <turam@…> (05/03/19 10:13:44)
git-committer:
Thomas Uram <turam@…> (05/03/19 10:13:44)
Message:

intermediate

Location:
python
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/genericio.py

    r45bb293 r7889dc4  
    4949#the argument types 
    5050libpygio.get_elem_num.restype=ct.c_int64 
    51 libpygio.get_elem_num.argtypes=[ct.c_char_p] 
     51libpygio.get_elem_num.argtypes=[ct.c_int,ct.c_char_p] 
    5252 
    5353libpygio.get_variable_type.restype=ct.c_int 
     
    7575libpygio.inspect_gio.argtypes=[ct.c_char_p] 
    7676 
    77 def gio_read_(file_name,var_name): 
     77def gio_read_(comm,file_name,var_name): 
    7878    if sys.version_info[0] == 3: 
    7979        file_name = bytes(file_name,'ascii') 
    8080        var_name = bytes(var_name,'ascii') 
    81     var_size = libpygio.get_elem_num(file_name) 
    82     var_type = libpygio.get_variable_type(file_name,var_name) 
    83     field_count = libpygio.get_variable_field_count(file_name,var_name) 
     81    var_size = libpygio.get_elem_num(comm,file_name) 
     82    var_type = libpygio.get_variable_type(comm,file_name,var_name) 
     83    field_count = libpygio.get_variable_field_count(comm,file_name,var_name) 
    8484    if(var_type==10): 
    8585        print("Variable not found") 
     
    9090        #float 
    9191        result = np.ndarray((var_size),dtype=np.float32) 
    92         libpygio.read_gio_float(file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_float)),field_count) 
     92        libpygio.read_gio_float(comm,file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_float)),field_count) 
    9393        return result 
    9494    elif(var_type==1): 
    9595        #double 
    9696        result = np.ndarray((var_size),dtype=np.float64) 
    97         libpygio.read_gio_double(file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_double)),field_count) 
     97        libpygio.read_gio_double(comm,file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_double)),field_count) 
    9898        return result 
    9999    elif(var_type==2): 
    100100        #int32 
    101101        result = np.ndarray((var_size),dtype=np.int32) 
    102         libpygio.read_gio_int32(file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_int32)),field_count) 
     102        libpygio.read_gio_int32(comm,file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_int32)),field_count) 
    103103        return result 
    104104    elif(var_type==3): 
    105105        #int64 
    106106        result = np.ndarray((var_size),dtype=np.int64) 
    107         libpygio.read_gio_int64(file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_int64)),field_count) 
     107        libpygio.read_gio_int64(comm,file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_int64)),field_count) 
    108108        return result         
    109109    elif(var_type==4): 
    110110        #uint16 
    111111        result = np.ndarray((var_size,field_count),dtype=np.uint16) 
    112         libpygio.read_gio_uint16(file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_uint16)),field_count) 
     112        libpygio.read_gio_uint16(comm,file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_uint16)),field_count) 
    113113        return result 
    114114 
    115 def gio_read(file_name,var_names): 
     115def gio_read(comm,file_name,var_names): 
    116116    ret = [] 
    117117    if not isinstance(var_names,list): 
    118118        var_names = [ var_names ] 
    119119    for var_name in var_names: 
    120         ret.append( gio_read_(file_name,var_name) ) 
     120        ret.append( gio_read_(comm,file_name,var_name) ) 
    121121    return np.array( ret ) 
    122122 
    123 def gio_has_variable(file_name,var_name): 
     123def gio_has_variable(comm,file_name,var_name): 
    124124    if sys.version_info[0] == 3: 
    125125        file_name=bytes(file_name,'ascii') 
    126126        var_name=bytes(var_name,'ascii') 
    127     var_size = libpygio.get_elem_num(file_name) 
    128     var_type = libpygio.get_variable_type(file_name,var_name) 
     127    var_size = libpygio.get_elem_num(comm,file_name) 
     128    var_type = libpygio.get_variable_type(comm,file_name,var_name) 
    129129    return var_type!=10 
    130130 
    131 def gio_inspect(file_name): 
     131def gio_inspect(comm,file_name): 
    132132    if sys.version_info[0] == 3: 
    133133        file_name=bytes(file_name,'ascii') 
  • python/lib/gio.h

    rd409b8c r7889dc4  
    7474  reader.close(); 
    7575} 
    76 extern "C" int64_t get_elem_num(char* file_name); 
     76extern "C" int64_t get_elem_num(const MPI_Comm &c, char* file_name); 
    7777 
    7878extern "C" void read_gio_float (const MPI_Comm &C, char* file_name, char* var_name, float* data, int field_count); 
     
    9090  var_not_found=10 
    9191}; 
    92 extern "C" var_type get_variable_type(char* file_name,char* var_name); 
    93 extern "C" int get_variable_field_count(char* file_name,char* var_name); 
     92extern "C" var_type get_variable_type(const MPI_Comm &C, char* file_name,char* var_name); 
     93extern "C" int get_variable_field_count(const MPI_Comm &C, char* file_name,char* var_name); 
    9494extern "C" void inspect_gio(const MPI_Comm &C, char* file_name); 
Note: See TracChangeset for help on using the changeset viewer.