Launching tasks and kernels. More...
Topics | |
Reduction Operations | |
Types to use with reduce , reduceall , and reduction_accessor . | |
Kernels | |
Local concurrent operations. | |
Legion Execution | |
Potentially remote task execution. | |
MPI Execution | |
Direct task execution. | |
Classes | |
struct | agent< S > |
A node-local context for potentially parallel operations. More... | |
struct | bind_accessors< Proc > |
Handling for low-level special task parameters/arguments. More... | |
struct | blocks< S, T, B > |
Parallel operations with thread configuration. More... | |
struct | cpu |
Single-core execution space. More... | |
struct | executor< S, T, B > |
Parallel operations given a name for debugging or profiling. More... | |
struct | executor_base< D > |
Executor derivation. More... | |
struct | future< Return, Launch > |
Single or multiple future. More... | |
struct | future< Return > |
Single-valued future. More... | |
struct | future< Return, exec::launch_type_t::index > |
Multi-valued future from an index launch. More... | |
struct | gpu |
GPU execution space. More... | |
struct | trace::guard |
RAII guard for executing a trace. More... | |
struct | launch_domain |
An explicit launch domain size. More... | |
struct | multi< class > |
A sequence of accessors obtained from a launch::mapping . More... | |
struct | omp |
OpenMP execution space. More... | |
struct | partial< F, AA > |
A simple version of C++20's bind_front . More... | |
struct | prolog< Proc > |
Analyzes task arguments and updates data objects before launching a task. More... | |
struct | scheduler |
Launches tasks according to their execution-space (template) parameters. More... | |
struct | space< S > |
Execution space operations. More... | |
struct | space_base |
An execution space. More... | |
struct | task_local< T > |
A global variable with a task-specific value. More... | |
struct | task_prologue< Proc > |
Handling for low-level special task parameters/arguments. More... | |
struct | trace |
Records execution of a loop whose iterations all execute the same sequence of tasks. More... | |
Typedefs | |
using | accelerator |
The available accelerated execution space. | |
Enumerations | |
enum class | processor : size_t |
Enumeration of processor types. More... | |
enum | task_attributes_mask_t : TaskAttributes { } |
Task attribute flags. More... | |
Functions | |
template<class T , class... AA> | |
auto & | allocate (std::unique_ptr< topology< T > > &p, const typename T::coloring &c, AA &&... aa) |
Create a topology instance with specialization support. | |
template<auto & TASK, TaskAttributes ATTRIBUTES = flecsi::loc | flecsi::leaf, typename... ARGS> | |
auto | execute (ARGS &&... args) |
Execute a task. | |
template<class Return > | |
future< std::decay_t< Return > > | make_future (Return &&) |
Generate a new future from a value. | |
template<auto & F, class... AA> | |
constexpr exec::partial< F, std::decay_t< AA >... > | make_partial (AA &&... aa) |
Partially apply a function. | |
template<auto & Task, class Reduction , TaskAttributes Attributes = flecsi::loc | flecsi::leaf, typename... Args> | |
auto | reduce (Args &&...) |
Execute a reduction task. | |
template<class V , class... AA> | |
int | test (AA &&... aa) |
Execute a variant of a test task. | |
template<auto & TASK, TaskAttributes ATTRIBUTES = flecsi::loc | flecsi::leaf, typename... ARGS> | |
int | test (ARGS &&... args) |
Execute a test task. | |
Variables | |
constexpr auto | default_accelerator |
The task attribute to use for tasks that use the on-node parallelism interface. | |
constexpr on_t | on |
Placeholder argument that corresponds to an execution-space task parameter. | |
Launching tasks and kernels.
Tasks are coarse-grained and use distributed-memory with restricted side effects; kernels are fine-grained and data-parallel, possibly using an accelerator.
Contents are in flecsi::exec
unless otherwise specified.
using accelerator |
The available accelerated execution space.
Defined as gpu
or omp
if support for one of those is available, otherwise cpu
.
enum task_attributes_mask_t : TaskAttributes |
Task attribute flags.
Appears directly in flecsi
.
Enumerator | |
---|---|
idempotent | Ignored.
|
loc | Run on a Latency-Optimized Core (a CPU). |
toc | Run on a Throughput-Optimized Core (a GPU). The task function itself still runs on the host, but a GPU is reserved for its use and field data is made available there.
|
omp | Run as an OpenMP task.
|
mpi | Run simultaneously on all processes with the obvious color mapping; allow MPI communication among point tasks, at the cost of significant startup overhead. |
|
strong |
Enumeration of processor types.
future< std::decay_t< Return > > make_future | ( | Return && | val | ) |
Generate a new future from a value.
Appears directly in flecsi
.
|
nodiscard |
auto execute | ( | ARGS &&... | args | ) |
Execute a task.
TASK | The user task. Its parameters must be copyable or a reference to a const, movable type. Any that is a pointer must be to a const type or to a function. If ATTRIBUTES specifies an MPI task, parameters need merely be movable. |
ATTRIBUTES | The task attributes mask. |
ARGS | The user-specified task arguments, implicitly converted to the parameter types for TASK. Certain FleCSI-defined parameter types accept particular, different argument types that serve as selectors for information stored by the backend; each type involved documents the correspondence. Additionally, a parameter may be a std::vector of such a type or a std::tuple that includes such a type; it accepts a std::vector of or a std::tuple including the corresponding argument type. |
Appears directly in flecsi
.
|
constexpr |
Partially apply a function.
F | function to call |
AA | leading arguments |
Appears directly in flecsi
.
std::bind
.
|
nodiscard |
Execute a test task.
This interface is provided for FleCSI's unit testing framework. Test tasks must return an integer that is non-zero on failure, and zero otherwise.
execute
about parameter and argument types.Appears directly in flecsi
.
|
nodiscard |
Execute a variant of a test task.
auto & allocate | ( | std::unique_ptr< topology< T > > & | p, |
const typename T::coloring & | c, | ||
AA &&... | aa ) |
Create a topology instance with specialization support.
Calls the specialization's initialize
on the topology instance.
p | where to store the topology |
c | coloring (perhaps from an mpi_coloring ) |
aa | further specialization-specific parameters |
|
constexpr |
Placeholder argument that corresponds to an execution-space task parameter.
|
constexpr |
The task attribute to use for tasks that use the on-node parallelism interface.
toc
causes field data to be placed on the device, so that it is accessible only via the parallelism interface.Appears directly in flecsi
.
accelerator
.