DASH  0.3.0
dart_team_group.h
Go to the documentation of this file.
1 #ifndef DART_TEAM_GROUP_H_INCLUDED
2 #define DART_TEAM_GROUP_H_INCLUDED
3 
5 #include <dash/dart/if/dart_util.h>
6 
7 
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
42 #define DART_INTERFACE_ON
43 
61 typedef struct dart_group_struct* dart_group_t;
62 
63 
75 dart_ret_t dart_group_create(dart_group_t *group) DART_NOTHROW;
76 
88  dart_group_t *group) DART_NOTHROW;
89 
90 
103  const dart_group_t gin,
104  dart_group_t * gout) DART_NOTHROW;
105 
106 
120  const dart_group_t g1,
121  const dart_group_t g2,
122  dart_group_t * gout) DART_NOTHROW;
123 
124 
138  const dart_group_t g1,
139  const dart_group_t g2,
140  dart_group_t * gout) DART_NOTHROW;
141 
142 
155  dart_group_t g,
156  dart_global_unit_t unitid) DART_NOTHROW;
157 
158 
171  dart_group_t g,
172  dart_global_unit_t unitid) DART_NOTHROW;
173 
174 
188  const dart_group_t g,
189  dart_global_unit_t unitid,
190  int32_t * ismember) DART_NOTHROW;
191 
192 
205  const dart_group_t g,
206  size_t * size) DART_NOTHROW;
207 
208 
223  const dart_group_t g,
224  dart_global_unit_t * unitids) DART_NOTHROW;
225 
226 
244  const dart_group_t g,
245  size_t n,
246  size_t * nout,
247  dart_group_t * gout) DART_NOTHROW;
248 
272  const dart_group_t g,
274  dart_locality_scope_t scope,
275  size_t n,
276  size_t * nout,
277  dart_group_t * gout) DART_NOTHROW;
278 
302 #define DART_TEAM_ALL ((dart_team_t)0)
303 
304 #define DART_TEAM_NULL ((dart_team_t)-1)
305 
306 #define DART_GROUP_NULL ((struct dart_group_struct*)NULL)
307 
322  dart_team_t teamid,
323  dart_group_t * group) DART_NOTHROW;
324 
325 
371  dart_team_t teamid,
372  const dart_group_t group,
373  dart_team_t * newteam) DART_NOTHROW;
374 
386  dart_team_t * teamid) DART_NOTHROW;
387 
388 
400  dart_team_t team,
401  dart_team_t * newteam) DART_NOTHROW;
402 
446  dart_team_t teamid,
447  dart_team_unit_t * myid) DART_NOTHROW;
448 
461  dart_team_t teamid,
462  size_t * size) DART_NOTHROW;
463 
475 
486 dart_ret_t dart_size(size_t *size) DART_NOTHROW;
487 
488 
503  dart_team_t team,
504  dart_team_unit_t localid,
505  dart_global_unit_t * globalid) DART_NOTHROW;
506 
521  dart_team_t team,
522  dart_global_unit_t globalid,
523  dart_team_unit_t * localid) DART_NOTHROW;
524 
529 #define DART_INTERFACE_OFF
530 
532 #ifdef __cplusplus
533 }
534 #endif
535 
536 #endif /* DART_TEAM_GROUP_H_INCLUDED */
global_unit_t myid()
Shortcut to query the global unit ID of the calling unit.
struct dart_group_struct * dart_group_t
DART groups are represented by an opaque struct dart_group_struct.
size_t size()
Return the number of units in the global team.
dart_ret_t dart_team_myid(dart_team_t teamid, dart_team_unit_t *myid)
Return the unit id of the caller in the specified team.
dart_ret_t dart_group_locality_split(const dart_group_t g, dart_domain_locality_t *domain, dart_locality_scope_t scope, size_t n, size_t *nout, dart_group_t *gout)
Split the group g into n groups by the specified locality scope.
dart_ret_t dart_team_destroy(dart_team_t *teamid)
Free up resources associated with the specified team.
dart_ret_t dart_group_union(const dart_group_t g1, const dart_group_t g2, dart_group_t *gout)
Create a union of two groups.
dart_ret_t dart_team_size(dart_team_t teamid, size_t *size)
Return the size of the specified team.
dart_ret_t dart_group_addmember(dart_group_t g, dart_global_unit_t unitid)
Add a member to the group.
dart_ret_t dart_team_clone(dart_team_t team, dart_team_t *newteam)
Clone a DART team object by duplicating the underlying team information.
dart_ret_t dart_myid(dart_global_unit_t *myid)
Return the id in the default team DART_TEAM_ALL.
A domain is a group of processing entities such as cores in a specific NUMA domain or a Intel MIC ent...
Definition: dart_types.h:597
dart_ret_t dart_group_ismember(const dart_group_t g, dart_global_unit_t unitid, int32_t *ismember)
Test if a unit is a member of the group.
dart_ret_t dart_team_get_group(dart_team_t teamid, dart_group_t *group)
Query the group associated with the specified team.
Data type for storing a unit ID relative to a team.
Definition: dart_types.h:180
dart_ret_t dart_group_delmember(dart_group_t g, dart_global_unit_t unitid)
Remove a member from the group.
dart_ret_t dart_size(size_t *size)
Return the size of the default team DART_TEAM_ALL.
dart_ret_t dart_group_getmembers(const dart_group_t g, dart_global_unit_t *unitids)
Get all the members of the group, unitids must be large enough to hold the number of members returned...
dart_ret_t dart_group_clone(const dart_group_t gin, dart_group_t *gout)
Create a copy of the group gin, allocating resources for gout.
dart_ret_t dart_group_create(dart_group_t *group)
Allocate and initialize a DART group object.
dart_ret_t
Return values of functions in the DART interface.
Definition: dart_types.h:30
dart_ret_t dart_group_size(const dart_group_t g, size_t *size)
Determine the size of the group.
dart_ret_t dart_group_destroy(dart_group_t *group)
Reclaim resources that might be associated with the group.
int16_t dart_team_t
Data type for storing a team ID.
Definition: dart_types.h:252
Data type for storing a global unit ID.
Definition: dart_types.h:166
dart_ret_t dart_group_split(const dart_group_t g, size_t n, size_t *nout, dart_group_t *gout)
Split the group into n groups of approx.
dart_ret_t dart_team_create(dart_team_t teamid, const dart_group_t group, dart_team_t *newteam)
Create a new team from the specified group.
dart_ret_t dart_group_intersect(const dart_group_t g1, const dart_group_t g2, dart_group_t *gout)
Create an intersection of the two groups.
dart_ret_t dart_team_unit_g2l(dart_team_t team, dart_global_unit_t globalid, dart_team_unit_t *localid)
Convert from a global to a local unit ID.
dart_ret_t dart_team_unit_l2g(dart_team_t team, dart_team_unit_t localid, dart_global_unit_t *globalid)
Convert from a local to a global unit ID.
dart_locality_scope_t
Scopes of locality domains.
Definition: dart_types.h:290
constexpr auto domain(ViewT &&view) -> typename std::enable_if< dash::detail::has_type_domain_type< ViewValueT >::value, decltype(std::forward< ViewT >(view).domain()) >::type
Definition: Domain.h:23