:py:mod:`bempp.api.utils.remote_operator` ========================================= .. py:module:: bempp.api.utils.remote_operator .. autoapi-nested-parse:: Implementation of MPI based remote operators. Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: bempp.api.utils.remote_operator.Message bempp.api.utils.remote_operator.RemoteManager bempp.api.utils.remote_operator.RemoteBlockedOperator bempp.api.utils.remote_operator.RemoteBlockedDiscreteOperator Functions ~~~~~~~~~ .. autoapisummary:: bempp.api.utils.remote_operator.get_remote_manager Attributes ~~~~~~~~~~ .. autoapisummary:: 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 .. py:data:: MPI_SIZE .. py:data:: MPI_RANK .. py:data:: COMM .. py:data:: _REMOTE_MANAGER .. py:class:: Message(status, operator_tag=None, is_complex=False, nelements=None) Messages for remote workers. .. py:class:: RemoteManager Manage remote worker execution. .. py:property:: tags Return tags. .. py:method:: register(op) Register operator for remote execution. .. py:method:: execute_worker() Execute on workers. .. py:method:: send_data(msg, dest, operator_tag=None, data=None) Send data to destination rank. .. py:method:: send_error(msg, operator_tag) Send error message to master. .. py:method:: receive_data(source) Receive data. .. py:method:: submit_computation(op, x) Submit computation to operator. .. py:method:: receive_result(op) Receive result from a specific operator. .. py:method:: assemble(op) Assemble a given remote operator. .. py:method:: barrier() Use barrier operation for workers. .. py:method:: get_operator_dtype(tag) Get dtype of remote operator. .. py:method:: shutdown() Shutdown all workers. .. py:method:: _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. .. py:method:: assemble_parallel(ops) Assemble a list of operators in parallel. .. py:method:: compute_parallel(tasks) Compute in parallel. Parameters ---------- tasks : list 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. .. py:function:: get_remote_manager() Initialize remote manager. .. py:class:: RemoteBlockedOperator(m, n) Bases: :py:obj:`bempp.api.assembly.blocked_operator.BlockedOperator` Define a remote blocked operator. .. py:method:: _assemble() Assemble the operator. .. py:class:: RemoteBlockedDiscreteOperator(ops) Bases: :py:obj:`bempp.api.assembly.discrete_boundary_operator._DiscreteOperatorBase` Implementation of a discrete blocked boundary operator. .. py:property:: A :abstractmethod: Return as dense Numpy array. .. py:attribute:: row_dimensions .. py:attribute:: column_dimensions .. py:method:: __getitem__(key) Return the object at position (i, j). .. py:method:: _get_shape(op) Get shape of boundary operator. .. py:method:: _fill_complete() Check if the fill is complete. .. py:method:: _matvec(x) Perform matrix vector multiplication. .. py:method:: _get_row_dimensions() Return the number of rows. .. py:method:: _get_column_dimensions() Return the number of columns. .. py:method:: _transpose() :abstractmethod: Implement the transpose. .. py:method:: _adjoint() :abstractmethod: Implement the adjoint.