Interface Documentation
Version: invalid
Classes | Typedefs | Enumerations | Functions | Variables
flecsi Namespace Reference

Classes

struct  control
 
struct  fid_counter_t
 
struct  field
 
class  filling_curve
 
struct  future
 
struct  future< R >
 
struct  future< R, exec::launch_type_t::index >
 
struct  future< Return >
 
struct  future< Return, exec::launch_type_t::index >
 
struct  future< void >
 
class  hilbert_curve
 
struct  isid_counter_t
 
class  morton_curve
 
struct  program_option
 

Typedefs

template<auto CP>
using control_point = util::constant< CP >
 
template<bool(*)() Predicate, typename... ControlPoints>
using cycle = ctrl_impl::cycle< Predicate, ControlPoints... >
 
using any = boost::any
 
using field_id_t = Legion::FieldID
 
using task_id_t = Legion::TaskID
 
using unique_fid_t = util::unique_id< fid_counter_t, field_id_t, FLECSI_GENERATED_ID_MAX >
 
using unique_isid_t = util::unique_id< isid_counter_t, field_id_t, FLECSI_GENERATED_ID_MAX >
 

Enumerations

enum  partition_privilege_t : size_t { nu = 0b00, ro = 0b01, wo = 0b10, rw = 0b11 }
 
enum  task_attributes_mask_t : size_t {
  leaf = 0x01, inner = 0x02, idempotent = 0x04, loc = 0x08,
  toc = 0x10, mpi = 0x20
}
 
enum  option_attribute : size_t { option_default, option_implicit, option_zero, option_multi }
 
enum  partition_t : size_t { exclusive = 0b001, shared = 0b010, ghost = 0b100, owned = 0b011 }
 

Functions

constexpr size_t privilege_count (std::size_t PACK)
 
constexpr partition_privilege_t get_privilege (std::size_t i, std::size_t pack)
 
constexpr bool privilege_write (std::size_t pack) noexcept
 
constexpr exec::launch_domain single (1)
 
template<auto & F, const exec::launch_domain & LAUNCH_DOMAIN, class REDUCTION , size_t ATTRIBUTES, typename... ARGS>
decltype(auto) reduce (ARGS &&... args)
 
log::devel_tag reduction_wrapper_tag ("reduction_wrapper")
 
int initialize (int argc, char **argv, bool dependent=true)
 
int start (const std::function< int()> &action)
 
void finalize ()
 
template<typename ValueType >
ValueType option_value (any const &v)
 
std::string const & program ()
 
size_t process ()
 
size_t processes ()
 
size_t threads_per_process ()
 
size_t threads ()
 
size_t color ()
 
size_t colors ()
 
template<auto & TASK, const exec::launch_domain & LAUNCH_DOMAIN = index, size_t ATTRIBUTES = flecsi::loc | flecsi::leaf, typename... ARGS>
decltype(auto) execute (ARGS &&... args)
 
template<auto & TASK, const exec::launch_domain & LAUNCH_DOMAIN = flecsi::index, size_t ATTRIBUTES = flecsi::loc | flecsi::leaf, typename... ARGS>
int test (ARGS &&... args)
 
template<size_t D, typename T , class DER >
std::ostream & operator<< (std::ostream &ostr, const filling_curve< D, T, DER > &k)
 output for filling_curve using output_ function defined in the class
 

Variables

log::devel_tag control_tag ("control")
 
program_option< bool > control_model_option ("FleCSI Options", "control-model", "Output a dot file of the control model. This can be processed into a pdf " "using the dot command, like:\33[0;36m$ dot -Tpdf input.dot > " "output.pdf\3[0m", {{flecsi::option_implicit, true}, {flecsi::option_zero}})
 
program_option< bool > control_model_sorted_option ("FleCSI Options", "control-model-sorted", "Output a dot file of the sorted control model actions.", {{flecsi::option_implicit, true}, {flecsi::option_zero}})
 
constexpr short privilege_bits = 2
 
template<partition_privilege_t... PP>
constexpr size_t privilege_pack
 
topo::global::slot global_topology
 
topo::index::cslot process_coloring
 
topo::index::slot process_topology
 
constexpr exec::launch_domain index
 
log::devel_tag bind_accessors_tag ("bind_accessors")
 
log::devel_tag execution_tag ("execution")
 
log::devel_tag reduction_wrapper_tag ("reduction_wrapper")
 
log::devel_tag task_prologue_tag ("task_prologue")
 
log::devel_tag task_wrapper_tag ("task_wrapper")
 
log::devel_tag unbind_accessors_tag ("unbind_accessors")
 
log::devel_tag io_tag ("io")
 
log::devel_tag context_tag ("context")
 
log::devel_tag legion_mapper_tag ("legion_mapper")
 
const field_id_t FIELD_ID_MAX = LEGION_MAX_APPLICATION_FIELD_ID
 
const task_id_t TASK_ID_MAX = LEGION_MAX_APPLICATION_TASK_ID
 
log::devel_tag dcrs_utils_tag ("dcrs_utils")
 
log::devel_tag unit_tag ("unit")
 

Detailed Description

file

Enumeration Type Documentation

◆ partition_privilege_t

Enumeration for specifying access privleges for data that are passed to FleCSI tasks.

Parameters
nuNo-Update access: data are mapped, no updates are done to the state. This privilege is basically as is.
roRead-Only access: data are mapped, updates are performed for consistency, but the data are read-only.
woWrite-Only access: data are mapped, no updates are done to the state, and the data can be written.
rwRead-Write access: data are mapped, updated are performend for consistency, and the data are read-write.

◆ task_attributes_mask_t

The task_attributes_mask_t type allows conversion from an eunumeration to a bit mask.

Note
This enumeration is not scoped so that users can create masks as in:
task_attributes_mask_t m(inner | idempotent);

Function Documentation

◆ color()

size_t flecsi::color ( )
inline

Return the color of the current execution instance. This function is only valid if invoked from within a task.

◆ colors()

size_t flecsi::colors ( )
inline

Return the number of colors of the current task invocation. This function is only valid if invoked from within a task.

◆ execute()

template<auto & TASK, const exec::launch_domain & LAUNCH_DOMAIN = index, size_t ATTRIBUTES = flecsi::loc | flecsi::leaf, typename... ARGS>
decltype(auto) flecsi::execute ( ARGS &&...  args)

Execute a task.

Template Parameters
TASKThe user task. Its parameters may be of any default-constructible, trivially-move-assignable, non-pointer type, any type that supports the Legion return-value serialization interface, or any of several standard containers of such types. If ATTRIBUTES specifies an MPI task, parameters need merely be movable.
LAUNCH_DOMAINThe launch domain object.
ATTRIBUTESThe task attributes mask.
ARGSThe user-specified task arguments, implicitly converted to the parameter types for TASK.
Note
Additional types may be supported by defining appropriate specializations of util::serial or util::serial_convert. Avoid passing large objects to tasks repeatedly; use global variables (and, perhaps, pass keys to select from them) or fields.

◆ finalize()

void flecsi::finalize ( )
inline

Perform FleCSI runtime finalization. If FleCSI was initialized with the dependent flag set to true, FleCSI will also finalize any runtimes on which it depends.

◆ get_privilege()

constexpr partition_privilege_t flecsi::get_privilege ( std::size_t  i,
std::size_t  pack 
)

Get a privilege out of a pack for the specified id.

Parameters
iprivilege index
packa privilege_pack value

◆ initialize()

int flecsi::initialize ( int  argc,
char **  argv,
bool  dependent = true 
)
inline

Perform FleCSI runtime initialization. If dependent is true, this call will also initialize any runtime on which FleCSI depends.

Parameters
argcnumber of command-line arguments to process
argvcommand-line arguments to process
dependentA boolean telling FleCSI whether or not to initialize runtimes on which it depends.
Returns
An integer indicating the initialization status. This may be interpreted as a flecsi::run::status enumeration, e.g., a value of 1 is equivalent to flecsi::run::status::help.

◆ option_value()

template<typename ValueType >
ValueType flecsi::option_value ( any const &  v)

Convert an option value into its underlying type.

Template Parameters
ValueTypeThe option underlying value type.

◆ privilege_count()

constexpr size_t flecsi::privilege_count ( std::size_t  PACK)

Return the number of privileges stored in a privilege pack.

Parameters
PACKa privilege_pack value

◆ process()

size_t flecsi::process ( )
inline

Return the current process id.

◆ processes()

size_t flecsi::processes ( )
inline

Return the number of processes.

◆ program()

std::string const& flecsi::program ( )
inline

Return the program name.

◆ reduce()

template<auto & F, const exec::launch_domain & LAUNCH_DOMAIN, class REDUCTION , size_t ATTRIBUTES, typename... ARGS>
decltype(auto) flecsi::reduce ( ARGS &&...  args)

Execute a reduction task.

Template Parameters
TASKThe user task.
LAUNCH_DOMAINThe launch domain.
REDUCTION_OPERATIONThe reduction operation type.
ATTRIBUTESThe task attributes mask.
ARGSThe user-specified task arguments.

◆ start()

int flecsi::start ( const std::function< int()> &  action)
inline

Perform FleCSI runtime start. This causes the runtime to begin execution of the top-level action.

Returns
An integer indicating the finalization status. This will either be 0 for successful completion, or an error code from flecsi::run::status.

◆ test()

template<auto & TASK, const exec::launch_domain & LAUNCH_DOMAIN = flecsi::index, size_t ATTRIBUTES = flecsi::loc | flecsi::leaf, typename... ARGS>
int flecsi::test ( ARGS &&...  args)

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.

Template Parameters
TASKThe user task. Its parameters may be of any default-constructible, trivially-move-assignable, non-pointer type, any type that supports the Legion return-value serialization interface, or any of several standard containers of such types. If ATTRIBUTES specifies an MPI task, parameters need merely be movable.
LAUNCH_DOMAINThe launch domain object.
ATTRIBUTESThe task attributes mask.
ARGSThe user-specified task arguments, implicitly converted to the parameter types for TASK.
Returns
zero on success, non-zero on failure.

◆ threads()

size_t flecsi::threads ( )
inline

Return the number of execution instances with which the runtime was invoked. In this context a thread is defined as an instance of execution, and does not imply any other properties. This interface can be used to determine the full subscription of the execution instances of the running process that invokded the FleCSI runtime.

◆ threads_per_process()

size_t flecsi::threads_per_process ( )
inline

Return the number of threads per process.

Variable Documentation

◆ privilege_pack

template<partition_privilege_t... PP>
constexpr size_t flecsi::privilege_pack
inline
Initial value:
= [] {
static_assert(((PP < 1 << privilege_bits) && ...));
std::size_t ret = 1;
((ret <<= privilege_bits, ret |= PP), ...);
return ret;
}()

Utility to allow general privilege components that will match the old style of specifying permissions, e.g., <EX, SH, GH> (The old approach was only valid for mesh type topologies, and didn't make sense for all topology types).

Template Parameters
PPprivileges