示例#1
0
文件: mpi.py 项目: nsrishankar/pymor
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
示例#2
0
文件: mpi.py 项目: lucas-ca/pymor
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)
示例#3
0
文件: mpi.py 项目: 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
示例#4
0
文件: mpi.py 项目: nsrishankar/pymor
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)
示例#5
0
文件: mpi.py 项目: 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)
示例#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)
示例#7
0
文件: mpi.py 项目: simon-ca/pymor
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)
示例#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
示例#9
0
文件: mpi.py 项目: simon-ca/pymor
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)
示例#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
示例#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
示例#12
0
文件: mpi.py 项目: JuliaBru/pymor
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)
示例#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
示例#14
0
文件: mpi.py 项目: lucas-ca/pymor
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)
示例#15
0
文件: mpi.py 项目: JuliaBru/pymor
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)
示例#16
0
文件: mpi.py 项目: lucas-ca/pymor
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)
示例#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)
示例#18
0
文件: mpi.py 项目: simon-ca/pymor
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)
示例#19
0
文件: mpi.py 项目: renemilk/pyMor
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)
示例#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))
示例#21
0
文件: mpi.py 项目: JuliaBru/pymor
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
示例#22
0
文件: mpi.py 项目: nsrishankar/pymor
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))
示例#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
示例#24
0
文件: mpi.py 项目: nsrishankar/pymor
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