Skip to content

Execution Policies for Algorithms #104

@fuchsto

Description

@fuchsto

Execution policies should be introduced that allow to specify the behavior of DASH algorithms.

Usage should correspond to execution policies as proposed for the STL:
http://en.cppreference.com/w/cpp/experimental/transform_reduce

For example:

// The specialization of dash::transform for one-sided execution results in
// MPI_Accumulate + MPI_Win_flush:

// defaults to one-sided execution policy:
dash::transform(
  in_a_first, in_a_last,
  in_b_first,
  out_first);
// specify one-sided execution explicitly:
dash::transform(
  dash::execution::onesided,
  in_a_first, in_a_last,
  in_b_first,
  out_first);

// For collective execution, dash::transform resolves to MPI_Allreduce which
// is more efficient but requires a coordinated schedule: 
dash::transform(
  dash::execution::collective,
  in_a_first, in_a_last,
  in_b_first,
  out_first);

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions