bempp_cl.api.utils.remote_operator¶
Implementation of MPI based remote operators.
Attributes¶
Classes¶
Messages for remote workers. |
|
Manage remote worker execution. |
|
Define a remote blocked operator. |
|
Implementation of a discrete blocked boundary operator. |
Functions¶
Initialize remote manager. |
Module Contents¶
- bempp_cl.api.utils.remote_operator.MPI_SIZE¶
- bempp_cl.api.utils.remote_operator.MPI_RANK¶
- bempp_cl.api.utils.remote_operator.COMM¶
- bempp_cl.api.utils.remote_operator._REMOTE_MANAGER = None¶
- class bempp_cl.api.utils.remote_operator.Message(status, operator_tag=None, is_complex=False, nelements=None)¶
Messages for remote workers.
- status¶
- is_complex = False¶
- operator_tag = None¶
- nelements = None¶
- class bempp_cl.api.utils.remote_operator.RemoteManager¶
Manage remote worker execution.
- _op_data¶
- _op_location¶
- _tags¶
- _tags_counter = 0¶
- _rank_counter = 1¶
- 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.
- property tags¶
Return tags.
- bempp_cl.api.utils.remote_operator.get_remote_manager()¶
Initialize remote manager.
- class bempp_cl.api.utils.remote_operator.RemoteBlockedOperator(m, n)¶
Bases:
bempp_cl.api.assembly.blocked_operator.BlockedOperatorDefine a remote blocked operator.
- _assemble()¶
Assemble the operator.
- class bempp_cl.api.utils.remote_operator.RemoteBlockedDiscreteOperator(ops)¶
Bases:
bempp_cl.api.assembly.discrete_boundary_operator._DiscreteOperatorBaseImplementation of a discrete blocked boundary operator.
- _manager = None¶
- _ndims¶
- _operators¶
- _tags¶
- _rows¶
- _cols¶
- __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 property A¶
Return as dense Numpy array.
- abstractmethod _transpose()¶
Implement the transpose.
- abstractmethod _adjoint()¶
Implement the adjoint.
- row_dimensions¶
- column_dimensions¶