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 > |
| The bind_accessors type is called to walk the user task arguments inside of an executing HPX task to properly complete the users accessors, i.e., by pointing the accessor view instances to the appropriate buffers. 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 | 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_class |
| Example task class which is not really implemented. More... | |
| struct | task_local< T > |
| A global variable with a task-specific value. More... | |
| struct | task_prolog< 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.