Backend Development
A FleCSI backend must implement a number of entry points (see Internal Summary) for invocation by the rest of FleCSI—and in a few cases, directly by application code. Almost all of these entry points can be identified by a
#ifdef DOXYGEN // implemented per-backend
block in the source code that illustrates the interface required from each backend implementation.
For backend-developer convenience, the set of entry points is aggregated below, sorted by source file.
data/topology.hh
flecsi::data::region_base
flecsi::data::partition
flecsi::data::rows
flecsi::data::borrow
data/copy.hh
flecsi::data::prefixes
flecsi::data::intervals
flecsi::data::copy_engine
exec/bind_parameters.hh
flecsi::exec::bind_accessors
exec/future.hh
flecsi::future<R, single>
(exposed to applications)flecsi::future<R, index>
(exposed to applications)flecsi::make_future
exec/prolog.hh:
flecsi::exec::task_prologue
execution.hh
flecsi::exec::trace
(exposed to applications)flecsi::task_local
(exposed to applications)
io.hh
flecsi::io::io_interface
run/context.hh
flecsi::run::config
(exposed to applications)flecsi::run::dependencies_guard
(exposed to applications)flecsi::run::context_t
(#ifdef DOXYGEN
lies withinflecsi::run::context
)
No
#ifdef DOXYGEN
flecsi::data::logical_size
flecsi::exec::reduce_internal
(supportsflecsi::reduce
)
Definitions expected to be common to multiple backends can be found in the flecsi/data/local
and flecsi/run/local
directories.
Backends are free to include the header files found there but may reimplement the code entirely if meaningful to do so.