DASH
0.3.0
|
A domain is a group of processing entities such as cores in a specific NUMA domain or a Intel MIC entity. More...
#include <dart_types.h>
Public Attributes | |
char | host [((int)(256))] |
Hostname of the domain's node or 0 if unspecified. More... | |
char | domain_tag [((int)(32))] |
Hierarchical domain identifier, represented as dot-separated list of relative indices on every level in the locality hierarchy. More... | |
struct dart_domain_locality_s ** | aliases |
int | num_aliases |
dart_locality_scope_t | scope |
Locality scope of the domain. More... | |
int | level |
Level in the domain locality hierarchy. More... | |
int | global_index |
The domain's global index within its scope. More... | |
int | relative_index |
The domain's index within its parent domain. More... | |
struct dart_domain_locality_s * | parent |
Pointer to descriptor of parent domain or 0 if no parent domain is specified. More... | |
int | num_domains |
Number of subordinate domains. More... | |
struct dart_domain_locality_s ** | children |
Array of subordinate domains of size num_domains or 0 if no subdomains are specified. More... | |
int | is_symmetric |
Whether sub-domains have identical hardware configuration. More... | |
dart_team_t | team |
Team associated with the domain. More... | |
int | num_units |
Number of units in the domain. More... | |
dart_global_unit_t * | unit_ids |
Global IDs of units in the domain. More... | |
int | num_nodes |
int | node_id |
int | num_cores |
int | shared_mem_bytes |
A domain is a group of processing entities such as cores in a specific NUMA domain or a Intel MIC entity.
Domains are organized in a hierarchy. In this, a domain may consist of heterogenous child domains. Processing entities in domains on the lowest locality level are homogenous.
Domains represent the actual hardware topology but also can represent grouping from user-defined team specifications.
Use cases:
num_nodes
is set to 1, orscope
is set to DART_LOCALITY_SCOPE_NODE
or greater.The maximum number of threads for a single unit, e.g. for MKL routines, can be calculated as:
(dloc.num_cores x dloc.num_threads)
from a domain descriptor dloc
with scope DART_LOCALITY_SCOPE_UNIT
.
A simple metric of processing power of components in a homogenous domain (minimum number of instructions per second) can be calculated as:
dmhz(dloc) = (dloc.num_cores x dloc.min_threads x dloc.min_cpu_mhz)
This metric then can be used to balance workload between homogenous domains with different processing components. A simple balance factor wb
can be calculated as:
wb = dmhz(dloc_a) / dmhz(dloc_b)
from domain descriptors dloc_a
and dloc_b
.
Illustrating example:
Definition at line 597 of file dart_types.h.
struct dart_domain_locality_s** dart_domain_locality_s::children |
Array of subordinate domains of size num_domains
or 0 if no subdomains are specified.
Definition at line 630 of file dart_types.h.
char dart_domain_locality_s::domain_tag[((int)(32))] |
Hierarchical domain identifier, represented as dot-separated list of relative indices on every level in the locality hierarchy.
Definition at line 606 of file dart_types.h.
int dart_domain_locality_s::global_index |
The domain's global index within its scope.
Definition at line 618 of file dart_types.h.
Referenced by dash::util::LocalityDomain::leader_unit().
char dart_domain_locality_s::host[((int)(256))] |
Hostname of the domain's node or 0 if unspecified.
Definition at line 600 of file dart_types.h.
int dart_domain_locality_s::is_symmetric |
Whether sub-domains have identical hardware configuration.
Definition at line 633 of file dart_types.h.
int dart_domain_locality_s::level |
Level in the domain locality hierarchy.
Definition at line 615 of file dart_types.h.
Referenced by dash::util::LocalityDomain::leader_unit().
int dart_domain_locality_s::num_domains |
Number of subordinate domains.
Definition at line 627 of file dart_types.h.
int dart_domain_locality_s::num_units |
Number of units in the domain.
Definition at line 638 of file dart_types.h.
struct dart_domain_locality_s* dart_domain_locality_s::parent |
Pointer to descriptor of parent domain or 0 if no parent domain is specified.
Definition at line 624 of file dart_types.h.
int dart_domain_locality_s::relative_index |
The domain's index within its parent domain.
Definition at line 620 of file dart_types.h.
dart_locality_scope_t dart_domain_locality_s::scope |
Locality scope of the domain.
Definition at line 613 of file dart_types.h.
Referenced by dash::util::LocalityDomain::leader_unit().
dart_team_t dart_domain_locality_s::team |
Team associated with the domain.
Definition at line 636 of file dart_types.h.
dart_global_unit_t* dart_domain_locality_s::unit_ids |
Global IDs of units in the domain.
Definition at line 640 of file dart_types.h.