DASH  0.3.0
dart_communication.h File Reference
#include <dash/dart/if/dart_types.h>
#include <dash/dart/if/dart_util.h>
#include <dash/dart/if/dart_globmem.h>
Include dependency graph for dart_communication.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

Collective operations

Collective operations involving all units of a given team.

dart_ret_t dart_barrier (dart_team_t team)
 DART Equivalent to MPI_Barrier. More...
 
dart_ret_t dart_bcast (void *buf, size_t nelem, dart_datatype_t dtype, dart_team_unit_t root, dart_team_t team)
 DART Equivalent to MPI broadcast. More...
 
dart_ret_t dart_scatter (const void *sendbuf, void *recvbuf, size_t nelem, dart_datatype_t dtype, dart_team_unit_t root, dart_team_t team)
 DART Equivalent to MPI scatter. More...
 
dart_ret_t dart_gather (const void *sendbuf, void *recvbuf, size_t nelem, dart_datatype_t dtype, dart_team_unit_t root, dart_team_t team)
 DART Equivalent to MPI gather. More...
 
dart_ret_t dart_allgather (const void *sendbuf, void *recvbuf, size_t nelem, dart_datatype_t dtype, dart_team_t team)
 DART Equivalent to MPI allgather. More...
 
dart_ret_t dart_allgatherv (const void *sendbuf, size_t nsendelem, dart_datatype_t dtype, void *recvbuf, const size_t *nrecvelem, const size_t *recvdispls, dart_team_t teamid)
 DART Equivalent to MPI allgatherv. More...
 
dart_ret_t dart_allreduce (const void *sendbuf, void *recvbuf, size_t nelem, dart_datatype_t dtype, dart_operation_t op, dart_team_t team)
 DART Equivalent to MPI allreduce. More...
 
dart_ret_t dart_alltoall (const void *sendbuf, void *recvbuf, size_t nelem, dart_datatype_t dtype, dart_team_t team)
 DART Equivalent to MPI alltoall. More...
 
dart_ret_t dart_reduce (const void *sendbuf, void *recvbuf, size_t nelem, dart_datatype_t dtype, dart_operation_t op, dart_team_unit_t root, dart_team_t team)
 DART Equivalent to MPI_Reduce. More...
 
Atomic operations

Operations performing element-wise atomic updates on a given global pointer.

dart_ret_t dart_accumulate (dart_gptr_t gptr, const void *values, size_t nelem, dart_datatype_t dtype, dart_operation_t op)
 Perform an element-wise atomic update on the values pointed to by gptr by applying the operation op with the corresponding value in value on them. More...
 
dart_ret_t dart_accumulate_blocking_local (dart_gptr_t gptr, const void *values, size_t nelem, dart_datatype_t dtype, dart_operation_t op)
 Perform an element-wise atomic update on the values pointed to by gptr by applying the operation op with the corresponding value in value on them. More...
 
dart_ret_t dart_fetch_and_op (dart_gptr_t gptr, const void *value, void *result, dart_datatype_t dtype, dart_operation_t op)
 Perform an element-wise atomic update on the value of type dtype pointed to by gptr by applying the operation op with value on it and return the value beforethe update in result. More...
 
dart_ret_t dart_compare_and_swap (dart_gptr_t gptr, const void *value, const void *compare, void *result, dart_datatype_t dtype)
 Atomically replace the single value pointed to by gptr with the the value in value if it is equal to compare. More...
 
Non-blocking single-sided communication routines

DART single-sided communication routines that return without guaranteeing completion.

Completion will be guaranteed after a flush operation.

dart_ret_t dart_get (void *dest, dart_gptr_t gptr, size_t nelem, dart_datatype_t src_type, dart_datatype_t dst_type)
 'REGULAR' variant of dart_get. More...
 
dart_ret_t dart_put (dart_gptr_t gptr, const void *src, size_t nelem, dart_datatype_t src_type, dart_datatype_t dst_type)
 'REGULAR' variant of dart_put. More...
 
dart_ret_t dart_flush (dart_gptr_t gptr)
 Guarantee completion of all outstanding operations involving a segment on a certain unit. More...
 
dart_ret_t dart_flush_all (dart_gptr_t gptr)
 Guarantee completion of all outstanding operations involving a segment on all units. More...
 
dart_ret_t dart_flush_local (dart_gptr_t gptr)
 Guarantee local completion of all outstanding operations involving a segment on a certain unit. More...
 
dart_ret_t dart_flush_local_all (dart_gptr_t gptr)
 Guarantee completion of all outstanding operations involving a segment on all units. More...
 
Blocking single-sided communication operations

These operations will block until completion of put and get is guaranteed.

dart_ret_t dart_get_blocking (void *dest, dart_gptr_t gptr, size_t nelem, dart_datatype_t src_type, dart_datatype_t dst_type)
 'BLOCKING' variant of dart_get. More...
 
dart_ret_t dart_put_blocking (dart_gptr_t gptr, const void *src, size_t nelem, dart_datatype_t src_type, dart_datatype_t dst_type)
 'BLOCKING' variant of dart_put. More...
 
Blocking two-sided communication operations

These operations will block until the operation is finished, i.e., the message has been successfully received.

dart_ret_t dart_send (const void *sendbuf, size_t nelem, dart_datatype_t dtype, int tag, dart_global_unit_t unit)
 DART Equivalent to MPI send. More...
 
dart_ret_t dart_recv (void *recvbuf, size_t nelem, dart_datatype_t dtype, int tag, dart_global_unit_t unit)
 DART Equivalent to MPI recv. More...
 
dart_ret_t dart_sendrecv (const void *sendbuf, size_t send_nelem, dart_datatype_t send_dtype, int send_tag, dart_global_unit_t dest, void *recvbuf, size_t recv_nelem, dart_datatype_t recv_dtype, int recv_tag, dart_global_unit_t src)
 DART Equivalent to MPI sendrecv. More...
 

Non-blocking single-sided communication operations using handles

The handle can be used to wait for a specific operation to complete using wait functions.

#define DART_HANDLE_NULL   (dart_handle_t)NULL
 Handle returned by dart_get_handle and the like used to wait for a specific operation to complete using dart_wait etc. More...
 
typedef struct dart_handle_struct * dart_handle_t
 Handle returned by dart_get_handle and the like used to wait for a specific operation to complete using dart_wait etc. More...
 
dart_ret_t dart_get_handle (void *dest, dart_gptr_t gptr, size_t nelem, dart_datatype_t src_type, dart_datatype_t dst_type, dart_handle_t *handle)
 'HANDLE' variant of dart_get. More...
 
dart_ret_t dart_put_handle (dart_gptr_t gptr, const void *src, size_t nelem, dart_datatype_t src_type, dart_datatype_t dst_type, dart_handle_t *handle)
 'HANDLE' variant of dart_put. More...
 
dart_ret_t dart_wait (dart_handle_t *handle)
 Wait for the local and remote completion of an operation. More...
 
dart_ret_t dart_waitall (dart_handle_t handles[], size_t n)
 Wait for the local and remote completion of operations. More...
 
dart_ret_t dart_wait_local (dart_handle_t *handle)
 Wait for the local completion of an operation. More...
 
dart_ret_t dart_waitall_local (dart_handle_t handles[], size_t n)
 Wait for the local completion of operations. More...
 
dart_ret_t dart_test_local (dart_handle_t *handle, int32_t *result)
 Test for the local completion of an operation. More...
 
dart_ret_t dart_test (dart_handle_t *handleptr, int32_t *is_finished)
 Test for the completion of an operation and ensure remote completion. More...
 
dart_ret_t dart_testall_local (dart_handle_t handles[], size_t n, int32_t *result)
 Test for the local completion of operations. More...
 
dart_ret_t dart_testall (dart_handle_t handles[], size_t n, int32_t *is_finished)
 Test for the completion of operations and ensure remote completion. More...
 
dart_ret_t dart_handle_free (dart_handle_t *handle)
 Free the handle without testing or waiting for completion of the operation. More...
 

Macro Definition Documentation

◆ DART_HANDLE_NULL

#define DART_HANDLE_NULL   (dart_handle_t)NULL

Handle returned by dart_get_handle and the like used to wait for a specific operation to complete using dart_wait etc.

Definition at line 514 of file dart_communication.h.

Referenced by dash::halo::HaloUpdateEnv< HaloBlock_t, SigReady >::block_env().

Typedef Documentation

◆ dart_handle_t

typedef struct dart_handle_struct* dart_handle_t

Handle returned by dart_get_handle and the like used to wait for a specific operation to complete using dart_wait etc.

Definition at line 512 of file dart_communication.h.

Function Documentation

◆ dart_handle_free()

dart_ret_t dart_handle_free ( dart_handle_t handle)

Free the handle without testing or waiting for completion of the operation.

Parameters
handlePointer to the handle to free.
Returns
DART_OK on success, any other of dart_ret_t otherwise.