FleCSI Core API Version: 2.3.2
 
Loading...
Searching...
No Matches
Data Model

Defining topology instances and fields. More...

Topics

 Legion Data
 Owning wrappers for Legion objects.
 
 Launch maps
 Selecting topology colors to send to tasks.
 
 MPI Data
 Direct data storage.
 
 Topology implementation
 These types are movable but may not be copyable.
 

Classes

struct  accessor< L, T, Priv >
 A data accessor. More...
 
struct  accessor< dense, T, P >
 Accessor for ordinary fields. More...
 
struct  accessor< raw, DATA_TYPE, PRIVILEGES >
 Accessor for potentially uninitialized memory. More...
 
struct  accessor< single, DATA_TYPE, PRIVILEGES >
 Accessor for a single value. This class is supported for GPU execution. More...
 
struct  accessor< sparse, T, P >
 Accessor for sparse fields. More...
 
struct  coloring_slot< class >
 A mpi_coloring object, constructed on request. More...
 
struct  field< T, L >
 Helper type to define and access fields. More...
 
struct  field_info_t
 The field_info_t type provides a structure for capturing runtime field information. More...
 
struct  field_reference< class, layout, Topo, index_space >
 Identifies a field on a particular topology instance. More...
 
struct  multi< class >
 A sequence of accessors obtained from a launch::mapping. More...
 
struct  multi_reference< T, L, Topo, S >
 Identifies a field on a launch::mapping. More...
 
struct  mutator< layout, class, Privileges >
 A specialized accessor for changing the extent of dynamic layouts. More...
 
struct  mutator< particle, T, P >
 Mutator for particle fields. More...
 
struct  mutator< ragged, T, P >
 Mutator for ragged fields. More...
 
struct  mutator< sparse, T, P >
 Mutator for sparse fields. More...
 
struct  particle_accessor< class, Privileges, bool >
 Accessor for particle fields. More...
 
struct  ragged_accessor< class, Privileges, Privileges >
 Accessor for ragged fields. More...
 
struct  reduction_accessor< R, T >
 Accessor for computing reductions. More...
 
struct  topology_accessor< class, Privileges >
 Topology accessor type. More...
 
struct  topology_slot< Topo >
 A movable slot that holds a topology, constructed upon request. More...
 

Typedefs

template<const auto & F, Privileges P>
using scalar_access
 Metadata provided with this type is made available on the host if read-only even if fields are stored on a device.
 

Enumerations

enum  layout : size_t {
  raw , single , dense , ragged ,
  sparse , particle
}
 A type of logical data structure. More...
 
enum  partition_privilege_t : Privileges { na , ro , wo , rw }
 Access privileges for data passed to FleCSI tasks. More...
 

Functions

constexpr privilege get_privilege (PrivilegeCount i, Privileges pack)
 Get a privilege out of a pack for the specified id.
 
constexpr PrivilegeCount privilege_count (Privileges PACK)
 Return the number of privileges stored in a privilege pack.
 

Variables

util::counter< field_id_t(FLECSI_GENERATED_ID_MAX)> fid_counter (0)
 Unique counter for field ids.
 
topo::global::slot global_topology
 Default global topology instance with size 1.
 
template<privilege... PP>
constexpr Privileges privilege_pack
 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).
 
topo::index::slot process_topology
 Topology instance with one color per process.
 

Detailed Description

Defining topology instances and fields.

#include "flecsi/data.hh"

The inclusion of flecsi/topology.hh by this header is deprecated.

Typedef Documentation

◆ scalar_access

template<const auto & F, Privileges P>
using scalar_access

Metadata provided with this type is made available on the host if read-only even if fields are stored on a device.

Use *sa or sa-> to access it.

Template Parameters
Pproduces an ordinary accessor if writable

Enumeration Type Documentation

◆ layout

enum layout : size_t

A type of logical data structure.

The interface for each is provided by an accessor.

Enumerator
raw 

Uninitialized memory with no objects constructed or destroyed.

single 

Access to the single element of an array.

dense 

Ordinary array of objects.

ragged 

Array of resizable arrays of objects.

sparse 

Array of mappings from integers to objects.

particle 

Unordered elements are added/removed up to a maximum number.

◆ partition_privilege_t

enum partition_privilege_t : Privileges

Access privileges for data passed to FleCSI tasks.

Each field must be initialized with wo privileges (perhaps combined with na). Any use of such privileges produces default-initialized values.

Ghost data is updated only when read access to it is requested. Writes to shared data are never propagated to ghost data for which the same task has write access, as it is assumed to have updated them.

Enumerator
na 

no access: defer consistency update

ro 

read-only

wo 

write-only: consistency updates discarded

rw 

read-write

Function Documentation

◆ privilege_count()

PrivilegeCount privilege_count ( Privileges PACK)
constexpr

Return the number of privileges stored in a privilege pack.

Parameters
PACKa privilege_pack value

◆ get_privilege()

privilege get_privilege ( PrivilegeCount i,
Privileges pack )
constexpr

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

Parameters
iprivilege index
packa privilege_pack value

Variable Documentation

◆ global_topology

topo::global::slot global_topology

Default global topology instance with size 1.

Deprecated
Create instances as with any other topology.

◆ process_topology

topo::index::slot process_topology

Topology instance with one color per process.

Warning
The values are not bound to processes except with MPI tasks.
Deprecated
Create instances as with any other topology.

◆ fid_counter

util::counter< field_id_t(FLECSI_GENERATED_ID_MAX)> fid_counter(0) ( 0 )

Unique counter for field ids.

◆ privilege_pack

template<privilege... PP>
Privileges privilege_pack
constexpr

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