|
StarPU Internal Handbook
|
#include <starpu.h>#include <common/config.h>#include <common/uthash.h>#include <starpu_mpi.h>#include <starpu_mpi_fxt.h>#include <common/list.h>#include <common/prio_list.h>#include <common/starpu_spinlock.h>#include <core/simgrid.h>Go to the source code of this file.
Data Structures | |
| struct | _starpu_simgrid_mpi_req |
| struct | _starpu_mpi_node |
| struct | _starpu_mpi_node_tag |
| struct | _starpu_mpi_coop_sends |
| struct | _starpu_mpi_data |
| struct | _starpu_mpi_req |
| struct | _starpu_mpi_argc_argv |
| struct | _starpu_mpi_backend |
Enumerations | |
| enum | _starpu_mpi_request_type { SEND_REQ , RECV_REQ , WAIT_REQ , TEST_REQ , BARRIER_REQ , PROBE_REQ , UNKNOWN_REQ } |
Functions | |
| int | _starpu_mpi_simgrid_mpi_test (unsigned *done, int *flag) |
| void | _starpu_mpi_simgrid_wait_req (MPI_Request *request, MPI_Status *status, starpu_pthread_queue_t *queue, unsigned *done) |
| struct _starpu_mpi_req * | _starpu_mpi_isend_cache_aware (starpu_data_handle_t data_handle, int dest, starpu_mpi_tag_t data_tag, MPI_Comm comm, unsigned detached, unsigned sync, int prio, void(*callback)(void *), void *_arg, int sequential_consistency, int *cache_flag) |
| struct _starpu_mpi_req * | _starpu_mpi_irecv_cache_aware (starpu_data_handle_t data_handle, int source, starpu_mpi_tag_t data_tag, MPI_Comm comm, unsigned detached, unsigned sync, void(*callback)(void *), void *_arg, int sequential_consistency, int is_internal_req, starpu_ssize_t count, int *cache_flag) |
| char * | _starpu_mpi_get_mpi_error_code (int code) |
| void | _starpu_mpi_env_init (void) |
| struct _starpu_mpi_data * | _starpu_mpi_data_get (starpu_data_handle_t data_handle) |
| void | _starpu_mpi_submit_ready_request (void *arg) |
| void | _starpu_mpi_release_req_data (struct _starpu_mpi_req *req) |
| void | _starpu_mpi_isend_irecv_common (struct _starpu_mpi_req *req, enum starpu_data_access_mode mode, int sequential_consistency) |
| void | _starpu_mpi_coop_send (starpu_data_handle_t data_handle, struct _starpu_mpi_req *req, enum starpu_data_access_mode mode, int sequential_consistency) |
| void | _starpu_mpi_submit_coop_sends (struct _starpu_mpi_coop_sends *coop_sends, int submit_control, int submit_data) |
| void | _starpu_mpi_redux_fill_post_sync_jobid (const void *const redux_data_args, long *const post_sync_jobid) |
| void | _starpu_mpi_request_init (struct _starpu_mpi_req **req) |
| struct _starpu_mpi_req * | _starpu_mpi_request_fill (starpu_data_handle_t data_handle, int srcdst, starpu_mpi_tag_t data_tag, MPI_Comm comm, unsigned detached, unsigned sync, int prio, void(*callback)(void *), void *arg, enum _starpu_mpi_request_type request_type, void(*func)(struct _starpu_mpi_req *), int sequential_consistency, int is_internal_req, starpu_ssize_t count) |
| void | _starpu_mpi_request_destroy (struct _starpu_mpi_req *req) |
| char * | _starpu_mpi_request_type (enum _starpu_mpi_request_type request_type) |
| struct _starpu_mpi_req * | _starpu_mpi_irecv_common (starpu_data_handle_t data_handle, int source, starpu_mpi_tag_t data_tag, MPI_Comm comm, unsigned detached, unsigned sync, void(*callback)(void *), void *arg, int sequential_consistency, int is_internal_req, starpu_ssize_t count, int prio) |
| int | _starpu_mpi_choose_node (starpu_data_handle_t data_handle, enum starpu_data_access_mode mode) |
| void | _starpu_mpi_data_flush (starpu_data_handle_t data_handle) |
| void | _starpu_mpi_tags_init (void) |
Variables | |
| starpu_pthread_wait_t | _starpu_mpi_thread_wait |
| starpu_pthread_queue_t | _starpu_mpi_thread_dontsleep |
| int | _starpu_debug_rank |
| int | _starpu_mpi_comm_debug |
| int | _starpu_mpi_fake_world_size |
| int | _starpu_mpi_fake_world_rank |
| int | _starpu_mpi_use_prio |
| int | _starpu_mpi_nobind |
| int | _starpu_mpi_thread_cpuid |
| int | _starpu_mpi_thread_multiple_send |
| int | _starpu_mpi_use_coop_sends |
| int | _starpu_mpi_mem_throttle |
| int | _starpu_mpi_recv_wait_finalize |
| int | _starpu_mpi_has_cuda |
| int | _starpu_mpi_cuda_devid |
| PRIO_struct | _starpu_mpi_req |
| struct _starpu_mpi_backend | _mpi_backend |
| struct _starpu_simgrid_mpi_req |
| struct _starpu_mpi_node_tag |
| Data Fields | ||
|---|---|---|
| struct _starpu_mpi_node | node | |
| starpu_mpi_tag_t | data_tag | |
| struct _starpu_mpi_coop_sends |
One bag of cooperative sends
| Data Fields | ||
|---|---|---|
| starpu_data_handle_t | data_handle | |
| struct _starpu_mpi_req_multilist_coop_sends | reqs |
List of send requests |
| struct _starpu_mpi_data * | mpi_data | |
| struct _starpu_spinlock | lock |
Array of send requests, after sorting out |
| struct _starpu_mpi_req ** | reqs_array | |
| unsigned | n | |
| unsigned | redirects_sent | |
| long | pre_sync_jobid | |
| struct _starpu_mpi_data |
Initialized in starpu_mpi_data_register_comm
| Data Fields | ||
|---|---|---|
| int | magic | |
| struct _starpu_mpi_node_tag | node_tag | |
| char * | cache_sent | |
| unsigned int | cache_received | |
| unsigned int | ft_induced_cache_received:1 | |
| unsigned int | ft_induced_cache_received_count:1 | |
| unsigned int | modified:1 | |
| char * | redux_map |
Array used to store the contributing nodes to this data when it is accessed in (MPI_)REDUX mode. |
| struct _starpu_spinlock | coop_lock |
Rendez-vous data for opportunistic cooperative sends, Needed to synchronize between submit thread and workers |
| struct _starpu_mpi_coop_sends * | coop_sends |
Current cooperative send bag |
| unsigned | nb_future_sends |
When provided, wait the given number of sends to start a coop, instead of just waiting that data are ready |
| struct _starpu_mpi_argc_argv |
| void _starpu_mpi_submit_ready_request | ( | void * | arg | ) |
To be called to actually submit the request
| void _starpu_mpi_release_req_data | ( | struct _starpu_mpi_req * | req | ) |
To be called when request is completed
| void _starpu_mpi_coop_send | ( | starpu_data_handle_t | data_handle, |
| struct _starpu_mpi_req * | req, | ||
| enum starpu_data_access_mode | mode, | ||
| int | sequential_consistency | ||
| ) |
Try to merge with send request with other send requests
| void _starpu_mpi_submit_coop_sends | ( | struct _starpu_mpi_coop_sends * | coop_sends, |
| int | submit_control, | ||
| int | submit_data | ||
| ) |
Actually submit the coop_sends bag to MPI. At least one of submit_control or submit_data is true. _starpu_mpi_submit_coop_sends may be called either
| void _starpu_mpi_tags_init | ( | void | ) |
To be called at initialization to set up the tags upper bound