Ejemplo n.º 1
0
def _mpi_wrap_discretization_manage_operators(obj_id):
    d = mpi.get_object(obj_id)
    operators = {k: mpi.manage_object(v) if v else None for k, v in sorted(d.operators.iteritems())}
    functionals = {k: mpi.manage_object(v) if v else None for k, v in sorted(d.functionals.iteritems())}
    vectors = {k: mpi.manage_object(v) if v else None for k, v in sorted(d.vector_operators.iteritems())}
    products = {k: mpi.manage_object(v) if v else None for k, v in sorted(d.products.iteritems())} if d.products else None
    if mpi.rank0:
        return operators, functionals, vectors, products
Ejemplo n.º 2
0
def _mpi_wrap_operator_VectorArrayOperator_manage_array(obj_id):
    op = mpi.get_object(obj_id)
    array_obj_id = mpi.manage_object(op._array)
    subtypes = mpi.comm.gather(op._array.subtype, root=0)
    mpi.remove_object(obj_id)
    if mpi.rank0:
        return array_obj_id, tuple(subtypes)
Ejemplo n.º 3
0
Archivo: mpi.py Proyecto: pymor/pymor
 def process_attribute(v):
     if isinstance(v, OperatorInterface):
         mpi_range = type(v.range) in mpi_spaces or v.range.id in mpi_spaces
         mpi_source = type(v.source) in mpi_spaces or v.source.id in mpi_spaces
         if mpi_range or mpi_source:
             return _OperatorToWrap(mpi.manage_object(v), mpi_range, mpi_source)
         else:
             return v
     else:
         return v
Ejemplo n.º 4
0
def _mpi_wrap_operator_VectorArrayOperator_manage_array(obj_id, pickle_subtypes):
    op = mpi.get_object(obj_id)
    array_obj_id = mpi.manage_object(op._array)
    subtype = op._array.subtype
    if not pickle_subtypes:
        subtype = _register_subtype(subtype)
    subtypes = mpi.comm.gather(subtype, root=0)
    mpi.remove_object(obj_id)
    if mpi.rank0:
        return array_obj_id, tuple(subtypes)
Ejemplo n.º 5
0
Archivo: mpi.py Proyecto: pymor/pymor
def _mpi_wrap_operator_VectorArrayOperator_manage_array(obj_id, pickle_local_spaces):
    op = mpi.get_object(obj_id)
    array_obj_id = mpi.manage_object(op._array)
    local_space = op._array.space
    if not pickle_local_spaces:
        local_space = _register_local_space(local_space)
    local_spaces = mpi.comm.gather(local_space, root=0)
    mpi.remove_object(obj_id)
    if mpi.rank0:
        return array_obj_id, tuple(local_spaces)
Ejemplo n.º 6
0
def _mpi_wrap_operator_VectorArrayOperator_manage_array(
        obj_id, pickle_local_spaces):
    op = mpi.get_object(obj_id)
    array_obj_id = mpi.manage_object(op.array)
    local_space = op.array.space
    if not pickle_local_spaces:
        local_space = _register_local_space(local_space)
    local_spaces = mpi.comm.gather(local_space, root=0)
    mpi.remove_object(obj_id)
    if mpi.rank0:
        return array_obj_id, tuple(local_spaces)
Ejemplo n.º 7
0
def _mpi_wrap_operator_VectorArrayOperator_manage_array(
        obj_id, pickle_subtypes):
    op = mpi.get_object(obj_id)
    array_obj_id = mpi.manage_object(op._array)
    subtype = op._array.subtype
    if not pickle_subtypes:
        subtype = _register_subtype(subtype)
    subtypes = mpi.comm.gather(subtype, root=0)
    mpi.remove_object(obj_id)
    if mpi.rank0:
        return array_obj_id, tuple(subtypes)
Ejemplo n.º 8
0
 def process_attribute(v):
     if isinstance(v, OperatorInterface):
         mpi_range = type(v.range) in mpi_spaces or v.range.id in mpi_spaces
         mpi_source = type(
             v.source) in mpi_spaces or v.source.id in mpi_spaces
         if mpi_range or mpi_source:
             return _OperatorToWrap(mpi.manage_object(v), mpi_range,
                                    mpi_source)
         else:
             return v
     else:
         return v
Ejemplo n.º 9
0
def _MPIVectorArray_make_array(cls, subtype=(None, ), count=0, reserve=0):
    subtype = subtype[mpi.rank] if len(subtype) > 1 else subtype[0]
    if type(subtype) is RegisteredSubtype:
        subtype = _subtype_registry[subtype]
    obj = cls.make_array(subtype=subtype, count=count, reserve=reserve)
    return mpi.manage_object(obj)
Ejemplo n.º 10
0
def _random_array(dims, length, seed):
    np.random.seed(seed + mpi.rank)
    dim = dims[mpi.rank] if len(dims) > 1 else dims[0]
    array = NumpyVectorArray(np.random.random((length, dim)))
    obj_id = mpi.manage_object(array)
    return obj_id
Ejemplo n.º 11
0
def _random_vector(dims, seed):
    np.random.seed(seed + mpi.rank)
    dim = dims[mpi.rank] if len(dims) > 1 else dims[0]
    vector = NumpyVector(np.random.random(dim), copy=False)
    obj_id = mpi.manage_object(vector)
    return obj_id
Ejemplo n.º 12
0
def _MPIVector_make_zeros(cls, subtype=(None,)):
    subtype = subtype[mpi.rank] if len(subtype) > 1 else subtype[0]
    if type(subtype) is RegisteredSubtype:
        subtype = _subtype_registry[subtype]
    obj = cls.make_zeros(subtype)
    return mpi.manage_object(obj)
Ejemplo n.º 13
0
def _mpi_wrap_operator_LincombOperator_manage_operators(obj_id):
    op = mpi.get_object(obj_id)
    obj_ids = [mpi.manage_object(o) for o in op.operators]
    mpi.remove_object(obj_id)
    if mpi.rank0:
        return obj_ids
Ejemplo n.º 14
0
def _MPIVector_make_zeros(cls, subtype=(None,)):
    subtype = subtype[mpi.rank] if len(subtype) > 1 else subtype[0]
    obj = cls.make_zeros(subtype)
    return mpi.manage_object(obj)
Ejemplo n.º 15
0
def _MPIVectorArray_make_array(cls, subtype=(None,), count=0, reserve=0):
    subtype = subtype[mpi.rank] if len(subtype) > 1 else subtype[0]
    if type(subtype) is RegisteredSubtype:
        subtype = _subtype_registry[subtype]
    obj = cls.make_array(subtype=subtype, count=count, reserve=reserve)
    return mpi.manage_object(obj)
Ejemplo n.º 16
0
def _MPIVectorArray_make_array(cls, subtype=(None,), count=0, reserve=0):
    subtype = subtype[mpi.rank] if len(subtype) > 1 else subtype[0]
    obj = cls.make_array(subtype=subtype, count=count, reserve=reserve)
    return mpi.manage_object(obj)
Ejemplo n.º 17
0
def _MPIVectorSpace_zeros(local_spaces=(None, ), count=0, reserve=0):
    local_space = _get_local_space(local_spaces)
    obj = local_space.zeros(count=count, reserve=reserve)
    return mpi.manage_object(obj)
Ejemplo n.º 18
0
def _MPIVector_make_zeros(cls, subtype=(None, )):
    subtype = subtype[mpi.rank] if len(subtype) > 1 else subtype[0]
    if type(subtype) is RegisteredSubtype:
        subtype = _subtype_registry[subtype]
    obj = cls.make_zeros(subtype)
    return mpi.manage_object(obj)
Ejemplo n.º 19
0
def _MPIVectorSpace_zeros(local_spaces=(None,), count=0, reserve=0):
    local_space = _get_local_space(local_spaces)
    obj = local_space.zeros(count=count, reserve=reserve)
    return mpi.manage_object(obj)
Ejemplo n.º 20
0
def _MPIOperator_assemble_lincomb(operators, coefficients, name):
    operators = [mpi.get_object(op) for op in operators]
    return mpi.manage_object(operators[0].assemble_lincomb(operators,
                                                           coefficients,
                                                           name=name))
Ejemplo n.º 21
0
def _random_vector(dims, seed):
    np.random.seed(seed + mpi.rank)
    dim = dims[mpi.rank] if len(dims) > 1 else dims[0]
    vector = NumpyVector(np.random.random(dim), copy=False)
    obj_id = mpi.manage_object(vector)
    return obj_id
Ejemplo n.º 22
0
def _MPIOperator_assemble_lincomb(operators, coefficients, name):
    operators = [mpi.get_object(op) for op in operators]
    return mpi.manage_object(operators[0].assemble_lincomb(operators, coefficients, name=name))
Ejemplo n.º 23
0
def _random_array(dims, length, seed):
    np.random.seed(seed + mpi.rank)
    dim = dims[mpi.rank] if len(dims) > 1 else dims[0]
    array = NumpyVectorSpace.make_array(np.random.random((length, dim)))
    obj_id = mpi.manage_object(array)
    return obj_id
Ejemplo n.º 24
0
def _mpi_wrap_operator_LincombOperator_manage_operators(obj_id):
    op = mpi.get_object(obj_id)
    obj_ids = [mpi.manage_object(o) for o in op.operators]
    mpi.remove_object(obj_id)
    if mpi.rank0:
        return obj_ids