88 int *senders,
int *num_senders,
107 int *senders,
int *num_senders,
185 #define SC_NOTIFY_STR_ALLGATHER "allgather"
186 #define SC_NOTIFY_STR_BINARY "binary"
187 #define SC_NOTIFY_STR_NARY "nary"
188 #define SC_NOTIFY_STR_PEX "pex"
189 #define SC_NOTIFY_STR_PCX "pcx"
190 #define SC_NOTIFY_STR_RSX "rsx"
191 #define SC_NOTIFY_STR_NBX "nbx"
192 #define SC_NOTIFY_STR_RANGES "ranges"
193 #define SC_NOTIFY_STR_SUPERSET "superset"
304 int *ntop,
int *nint,
336 int sc_notify_ranges_get_package_id (
sc_notify_t * notify);
342 void sc_notify_ranges_set_package_id (
sc_notify_t * notify,
344 const int *sc_notify_ranges_get_procs (
sc_notify_t * notify,
346 void sc_notify_ranges_set_procs (
sc_notify_t * notify,
349 void sc_notify_ranges_get_peer_range (
sc_notify_t * notify,
352 void sc_notify_ranges_set_peer_range (
sc_notify_t * notify,
sc3_MPI_Comm_t sc_MPI_Comm
Emulate an MPI communicator.
Definition: sc_mpi.h:450
void sc_notify_destroy(sc_notify_t *notify)
Destroy a notify controller constructed with sc_notify_new.
sc_notify_type_t sc_notify_get_type(sc_notify_t *notify)
Get the type of a notify controller.
void sc_notify_payload(sc_array_t *receivers, sc_array_t *senders, sc_array_t *in_payload, sc_array_t *out_payload, int sorted, sc_notify_t *notify)
Collective call to notify a set of receiver ranks of current rank.
void sc_notify_nary_set_widths(sc_notify_t *notify, int ntop, int nint, int nbot)
For a notify of type SC_NOTIFY_NARY, set the branching widths of the recursive algorithm.
void sc_notify_payloadv(sc_array_t *receivers, sc_array_t *senders, sc_array_t *out_payload, sc_array_t *in_payload, sc_array_t *out_offsets, sc_array_t *in_offsets, int sorted, sc_notify_t *notify)
Collective call to notify a set of receiver ranks of current rank and send a variable size message to...
int sc_notify(int *receivers, int num_receivers, int *senders, int *num_senders, sc_MPI_Comm mpicomm)
Collective call to notify a set of receiver ranks of current rank.
size_t sc_notify_get_eager_threshold(sc_notify_t *notify)
Get the payload size above which payloads are no longer transferred with notification packets in sc_n...
sc_notify_t * sc_notify_new(sc_MPI_Comm mpicomm)
Create a notify controller that can be used in sc_notify_payload and sc_notify_payloadv.
void sc_notify_ranges_set_num_ranges(sc_notify_t *notify, int num_ranges)
Set the number of ranges for the SC_NOTIFY_RANGES method.
sc_notify_type_t
Various equivalent implementations of the functionality.
Definition: sc_notify.h:168
@ SC_NOTIFY_ALLGATHER
Choose allgather algorithm.
Definition: sc_notify.h:170
@ SC_NOTIFY_SUPERSET
Use a computable superset of communicators, computed by a callback function.
Definition: sc_notify.h:179
@ SC_NOTIFY_RSX
Choose remote summation algorithm.
Definition: sc_notify.h:176
@ SC_NOTIFY_NUM_TYPES
End of list marker for notify algorithms.
Definition: sc_notify.h:181
@ SC_NOTIFY_DEFAULT
Choose whatever type is stored in sc_notify_type_default.
Definition: sc_notify.h:169
@ SC_NOTIFY_RANGES
Use the sc_ranges functionality.
Definition: sc_notify.h:178
@ SC_NOTIFY_PCX
Choose reduce_scatter algorithm (AKA personalized census).
Definition: sc_notify.h:175
@ SC_NOTIFY_NARY
Choose nary (k-way) recursion.
Definition: sc_notify.h:172
@ SC_NOTIFY_PEX
Choose alltoall algorithm (AKA personalized exchange).
Definition: sc_notify.h:173
@ SC_NOTIFY_NBX
Choose non-blocking consensus algorithm.
Definition: sc_notify.h:177
@ SC_NOTIFY_BINARY
Choose simple binary recursion.
Definition: sc_notify.h:171
int sc_notify_nary_ntop_default
Default number of children at root node of nary tree; initialized to 2.
const char * sc_notify_type_strings[SC_NOTIFY_NUM_TYPES]
Names for each notify method.
sc_MPI_Comm sc_notify_get_comm(sc_notify_t *notify)
Get the MPI communicator of a notify controller.
size_t sc_notify_eager_threshold_default
The default threshold for payload sizes (in bytes) that are communicated with the notification packet...
void(* sc_compute_superset_t)(sc_array_t *, sc_array_t *, sc_array_t *, sc_notify_t *, void *)
Type of callback function for the SC_NOTIFY_SUPERSET variant.
Definition: sc_notify.h:162
void sc_notify_ext(sc_array_t *receivers, sc_array_t *senders, sc_array_t *in_payload, sc_array_t *out_payload, sc_MPI_Comm mpicomm)
The default implementation of the notify functionality, currently PEX.
int sc_notify_ranges_num_ranges_default
For the SC_NOTIFY_RANGES method, the default is 25.
int sc_notify_allgather(int *receivers, int num_receivers, int *senders, int *num_senders, sc_MPI_Comm mpicomm)
Collective call to notify a set of receiver ranks of current rank.
int sc_notify_nary_nint_default
Default number of children at intermediate tree nodes; initialized to 2.
void sc_notify_set_eager_threshold(sc_notify_t *notify, size_t thresh)
Get the payload size above which payloads are no longer transferred with notification packets in sc_n...
sc_statistics_t * sc_notify_get_stats(sc_notify_t *notify)
Get the sc_statistics_t object for logging runtimes (added by function name).
void sc_notify_nary_get_widths(sc_notify_t *notify, int *ntop, int *nint, int *nbot)
For a notify of type SC_NOTIFY_NARY, get the branching widths of the recursive algorithm.
void sc_notify_nary(sc_array_t *receivers, sc_array_t *senders, sc_array_t *in_payload, sc_array_t *out_payload, sc_MPI_Comm mpicomm)
The n-ary tree implementation of the notify functionality.
void sc_notify_superset_get_callback(sc_notify_t *notify, sc_compute_superset_t *compute_superset, void *ctx)
Query the callback for the SC_NOTIFY_SUPERSET method.
int sc_notify_ranges_get_num_ranges(sc_notify_t *notify)
Query the number of ranges for the SC_NOTIFY_RANGES method.
int sc_notify_nary_nbot_default
Default number of children at deepest level of tree; initialized to 2.
int sc_notify_set_type(sc_notify_t *notify, sc_notify_type_t type)
Set the type of a notify controller.
void sc_notify_set_stats(sc_notify_t *notify, sc_statistics_t *stats)
Set a sc_statistics_t object for logging runtimes (added by function name).
int sc_notify_supports_type(sc_notify_type_t type)
Query whether sc_notify_set_type supports a given type.
void sc_notify_superset_set_callback(sc_notify_t *notify, sc_compute_superset_t compute_superset, void *ctx)
Set the callback for the SC_NOTIFY_SUPERSET method.
sc_notify_type_t sc_notify_type_default
The default type used when constructing a notify controller; initialized to SC_NOTIFY_PEX.
struct sc_notify_s sc_notify_t
Opaque object used for controlling notification (AKA dynamic sparse data exchange) operations.
Definition: sc_notify.h:159
Computation of average and mean values etc.
The sc_array object provides a dynamic array of equal-size elements.
Definition: sc_containers.h:117
The statistics container allows dynamically adding random variables.
Definition: sc_statistics.h:63