constexpr MPI_Comm MPI_COMM_WORLD
void broadcast(real *data, idx n, int root=0, MPI_Comm comm=MPI_COMM_WORLD)
Broadcast from root.
void allreduce_sum(real *data, idx n, MPI_Comm comm=MPI_COMM_WORLD)
Allreduce sum.
real norm(const Vector &x, MPI_Comm comm=MPI_COMM_WORLD)
Distributed norm.
void init(int *argc, char ***argv)
Initialize MPI (call once)
void finalize()
Finalize MPI.
int size(MPI_Comm comm=MPI_COMM_WORLD)
Get communicator size.
int rank(MPI_Comm comm=MPI_COMM_WORLD)
Get communicator rank.
real dot(const Vector &x, const Vector &y, MPI_Comm comm=MPI_COMM_WORLD)
Distributed dot product (each rank holds partial vector)
constexpr T ipow(T x) noexcept
Compute x^N at compile time via repeated squaring.