예제 #1
0
파일: routines.py 프로젝트: rhodrin/devito
    def __new__(cls, mode, **generators):
        if mode is True or mode == 'basic':
            obj = object.__new__(BasicHaloExchangeBuilder)
        elif mode == 'diag':
            obj = object.__new__(DiagHaloExchangeBuilder)
        elif mode == 'overlap':
            obj = object.__new__(OverlapHaloExchangeBuilder)
        elif mode == 'overlap2':
            obj = object.__new__(Overlap2HaloExchangeBuilder)
        elif mode == 'full':
            obj = object.__new__(FullHaloExchangeBuilder)
        else:
            assert False, "unexpected value `mode=%s`" % mode

        # Unique name generators
        obj._gen_msgkey = generators.get('msg', generator())
        obj._gen_commkey = generators.get('comm', generator())
        obj._gen_compkey = generators.get('comp', generator())

        obj._cache_halo = OrderedDict()
        obj._cache_dims = OrderedDict()
        obj._objs = OrderedSet()
        obj._regions = OrderedDict()
        obj._msgs = OrderedDict()
        obj._efuncs = []

        return obj
예제 #2
0
    def __new__(cls, mode, **generators):
        obj = object.__new__(mpi_registry[mode])

        # Unique name generators
        obj._gen_msgkey = generators.get('msg', generator())
        obj._gen_commkey = generators.get('comm', generator())
        obj._gen_compkey = generators.get('comp', generator())

        obj._cache_halo = OrderedDict()
        obj._cache_dims = OrderedDict()
        obj._objs = OrderedSet()
        obj._regions = OrderedDict()
        obj._msgs = OrderedDict()
        obj._efuncs = []

        return obj