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.hhflecsi::data::region_baseflecsi::data::partitionflecsi::data::rowsflecsi::data::borrow
data/copy.hhflecsi::data::prefixesflecsi::data::intervalsflecsi::data::copy_engine
exec/bind_parameters.hhflecsi::exec::bind_accessors
exec/future.hhflecsi::future<R, single>(exposed to applications)flecsi::future<R, index>(exposed to applications)flecsi::make_future
exec/prolog.hh:flecsi::exec::task_prologue
execution.hhflecsi::exec::trace(exposed to applications)flecsi::task_local(exposed to applications)
io.hhflecsi::io::io_interface
run/context.hhflecsi::run::config(exposed to applications)flecsi::run::dependencies_guard(exposed to applications)flecsi::run::context_t(#ifdef DOXYGENlies withinflecsi::run::context)
No
#ifdef DOXYGENflecsi::data::logical_sizeflecsi::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.