Changeset 663


Ignore:
Timestamp:
01/19/18 23:43:11 (6 years ago)
Author:
dubos
Message:

devel/Python : fix numpy messing up OpenMP

Location:
codes/icosagcm/devel
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/Python/dynamico/__init__.py

    r618 r663  
    1 # import NetCDF before other modules 
    2 import netCDF4 
     1# import openmp before NetCDF4 numpy because it uses numpy hence MKL and messes up OMP_NUM_PROCS 
     2import sys 
     3if 'numpy' in sys.modules: 
     4    raise ImportError('Module dynamico must be imported before NetCDF/numpy because numpy may mess up OpenMP') 
     5import libs 
     6libs.libicosa.dynamico_show_openmp() 
  • codes/icosagcm/devel/Python/dynamico/wrap.py

    r615 r663  
    3838 
    3939class SharedLib: 
    40     def __init__(self,vardict,name,check_args=True, prefix_so='',prefix_py=''): 
     40    def __init__(self,vardict,lib,check_args=True, prefix_so='',prefix_py=''): 
    4141        self.vardict, self.check_args = vardict, check_args 
    4242        self.prefix_so, self.prefix_py = prefix_so, prefix_py 
    43         self.lib=cdll.LoadLibrary(name) 
     43        self.lib=lib 
    4444        self.vars={} 
    4545    def import_funs(self,prototypes,prefix=''): 
  • codes/icosagcm/devel/Python/src/unstructured.pyx

    r643 r663  
    11import time 
    22import math 
    3 import numpy as np 
    4 cimport numpy as np 
    53import dynamico.wrap as wrap 
     4from dynamico.libs import libicosa 
     5 
    66from ctypes import c_void_p, c_int, c_double, c_bool 
    77 
    88#from libc.time cimport time as ctime, time_t 
    99from numpy cimport ndarray 
     10cimport numpy as np 
    1011 
    1112#------------- direct Cython interface to DYNAMICO routines -------------# 
     
    3940 
    4041try:     
    41     kernels = wrap.SharedLib(vars(ker), 'libicosa.so', check_args=check_args)  
     42    kernels = wrap.SharedLib(vars(ker), libicosa, check_args=check_args)  
    4243    setvar, setvars, getvar, getvars = kernels.setvar, kernels.setvars, kernels.getvar, kernels.getvars 
    4344except OSError: 
     
    291292# i.e. index[start:end] with start=vtxdist[cell], end=vtxdist[cell+1] lists the edges of cell 'cell' 
    292293 
     294import numpy as np 
     295 
    293296def list_stencil(degree, stencil, cond=lambda x:True): 
    294297    for i in range(degree.size): 
  • codes/icosagcm/devel/Python/src/xios.pyx

    r630 r663  
     1from dynamico.libs import libxios 
     2import dynamico.wrap as wrap 
    13import numpy as np 
    2 import dynamico.wrap as wrap 
     4 
    35from ctypes import c_int, c_double, c_bool, c_void_p, c_char_p, byref, POINTER, Structure 
    46c_void_pp=POINTER(c_void_p) # used in prototype 
     
    3537 
    3638lib=wrap.Struct() 
    37 cxios = wrap.SharedLib(vars(lib), "libxios.so", prefix_so='cxios_') 
     39cxios = wrap.SharedLib(vars(lib), libxios, prefix_so='cxios_') 
    3840 
    3941class Duration(Structure): 
  • codes/icosagcm/devel/Python/test/py/test_xios.py

    r631 r663  
     1#print 'import dynamico' 
     2#import dynamico 
     3print 'import dynamico.unstructured' 
     4import dynamico.unstructured as unst 
     5print 'import dynamico.xios' 
     6import dynamico.xios as xios 
     7print 'Done.' 
     8from dynamico.meshes import MPAS_Mesh as Mesh, radian 
     9 
    110from mpi4py import MPI 
    211comm = MPI.COMM_WORLD 
     
    514 
    615import numpy as np 
    7 print 'import dynamico.unstructured' 
    8 import dynamico.unstructured as unst 
    9 print 'import dynamico.xios' 
    10 import dynamico.xios as xios 
    11 print 'Done.' 
    12 from dynamico.meshes import MPAS_Mesh as Mesh, radian 
    1316 
    1417def boundaries(degree,points,lon,lat): 
  • codes/icosagcm/devel/src/unstructured/data_unstructured.F90

    r658 r663  
    188188    PRINT *,' ... Done.' 
    189189    IF(nb_threads==0) nb_threads=OMP_GET_MAX_THREADS() 
    190     PRINT *,'OpenMP : max_threads, num_procs, nb_threads', OMP_GET_MAX_THREADS(), omp_get_num_procs(), nb_threads 
    191  
     190    PRINT *,'OpenMP : max_threads, num_procs, nb_threads', OMP_GET_MAX_THREADS(), OMP_GET_NUM_PROCS(), nb_threads 
    192191  END SUBROUTINE init_metric 
     192  ! 
     193  SUBROUTINE show_openmp() BINDC(show_openmp) 
     194    PRINT *,'OpenMP : max_threads, num_procs', OMP_GET_MAX_THREADS(), OMP_GET_NUM_PROCS() 
     195  END SUBROUTINE show_openmp 
    193196  ! 
    194197  SUBROUTINE init_params() BINDC(init_params) 
Note: See TracChangeset for help on using the changeset viewer.