bempp.api.utils.remote_operator

Implementation of MPI based remote operators.

Module Contents

Classes

Message

Messages for remote workers.

RemoteManager

Manage remote worker execution.

RemoteBlockedOperator

Define a remote blocked operator.

RemoteBlockedDiscreteOperator

Implementation of a discrete blocked boundary operator.

Functions

get_remote_manager()

Initialize remote manager.

Attributes

MPI_SIZE

MPI_RANK

COMM

_REMOTE_MANAGER

bempp.api.utils.remote_operator.MPI_SIZE
bempp.api.utils.remote_operator.MPI_RANK
bempp.api.utils.remote_operator.COMM
bempp.api.utils.remote_operator._REMOTE_MANAGER
class bempp.api.utils.remote_operator.Message(status, operator_tag=None, is_complex=False, nelements=None)

Messages for remote workers.

class bempp.api.utils.remote_operator.RemoteManager

Manage remote worker execution.

property tags

Return tags.

register(op)

Register operator for remote execution.

execute_worker()

Execute on workers.

send_data(msg, dest, operator_tag=None, data=None)

Send data to destination rank.

send_error(msg, operator_tag)

Send error message to master.

receive_data(source)

Receive data.

submit_computation(op, x)

Submit computation to operator.

receive_result(op)

Receive result from a specific operator.

assemble(op)

Assemble a given remote operator.

barrier()

Use barrier operation for workers.

get_operator_dtype(tag)

Get dtype of remote operator.

shutdown()

Shutdown all workers.

_group_by_rank(tags)

Group tags by for parallel computation.

Given a list of tags (with possible repetitions). Return a list of list of positions in the tags list that is sorted so that each sublist does not have repeating ranks. This allows to distribute the computations effectively on the ranks.

assemble_parallel(ops)

Assemble a list of operators in parallel.

compute_parallel(tasks)

Compute in parallel.

Parameters

taskslist

A list [(op1, data1), (op2, data2), …] of operators and associated vectors.

Returns a list [result1, result2, …] of the results of the computation.

Operators are allowed to appear repeatedly in the list and are scheduled correctly.

bempp.api.utils.remote_operator.get_remote_manager()

Initialize remote manager.

class bempp.api.utils.remote_operator.RemoteBlockedOperator(m, n)

Bases: bempp.api.assembly.blocked_operator.BlockedOperator

Define a remote blocked operator.

_assemble()

Assemble the operator.

class bempp.api.utils.remote_operator.RemoteBlockedDiscreteOperator(ops)

Bases: bempp.api.assembly.discrete_boundary_operator._DiscreteOperatorBase

Implementation of a discrete blocked boundary operator.

abstract property A

Return as dense Numpy array.

row_dimensions
column_dimensions
__getitem__(key)

Return the object at position (i, j).

_get_shape(op)

Get shape of boundary operator.

_fill_complete()

Check if the fill is complete.

_matvec(x)

Perform matrix vector multiplication.

_get_row_dimensions()

Return the number of rows.

_get_column_dimensions()

Return the number of columns.

abstract _transpose()

Implement the transpose.

abstract _adjoint()

Implement the adjoint.