MPI (sisl.mpi)

Optional MPI support. All functionality works without mpi4py, in which case the communicator is a serial stand-in.

See Distributing work with MPI for a guide on how to use it.

Communicators

get_comm()

The communicator sisl is using, acquiring it on first call.

BaseCommunicator

The communicator contract sisl relies on.

Communicator

An mpi4py communicator plus the provenance needed to behave correctly.

Distributions

Distributions decide which rank owns which indices. Calling one on an object forwards to the object’s __sisl_distribute__ method.

Distribution

Maps n indices onto the ranks of comm.

BlockCyclicDistribution

Blocks of blocksize indices dealt round-robin, as ScaLAPACK lays out a matrix.

Implementing distributable objects

Helpers for objects that implement __sisl_distribute__ and need to track whether they have changed since they were last distributed.

DistributionState

Distribution state carried by a distributed object.

distribute_changes(method)

Mark method as invalidating the distribution of its object.