Provides basic functionality to forward computation (via a generic functor) to a location determined by the distributed registration of key values. The class handles heterogeneous work requests and supports relaxed consistency, placing no synchronization requirements on the registration of key and functor forwarding requests employing that key.
More...
|
| directory (bool b_enable_buffering) |
|
| directory (typename base_t::mapper_t mapper, typename base_t::registry_t registry=typename base_t::registry_t()) |
| Constructor specifying custom mapper and registry. Used by container framework. More...
|
|
bool | has_perfect_mapper (void) const |
|
mapper_t const & | key_mapper (void) const |
|
mapper_t & | key_mapper (void) |
|
bool | empty (void) const |
| Returns true if there are no entries in directory's registry on this location.
|
|
void | reset (void) |
| Clear all local registrations and pending messages in directory. Used by clear() methods of container distributions.
|
|
bool | try_register_key_local (Key const &key) |
| Attempt registration from the managing location. Return true if successful (i.e., not already registered).
|
|
void | register_key (Key const &key) |
| Associate key in directory's registry with the location invoking this method. More...
|
|
void | register_keys (std::pair< Key, Key > const &keys) |
|
template<typename Functor > |
void | register_apply (Key const &key, Functor &&f) |
| Associate key in directory's registry with location invoking this method. Registration location is implicitly set to be caller of this method. More...
|
|
template<typename Functor > |
void | register_apply (Key const &key, Functor &&f, location_type location) |
| Associate key in directory's registry with location invoking this method. More...
|
|
void | unregister_key (Key const &key) |
| Unregister key in directory's registry.
|
|
template<typename Functor > |
void | unregister_apply (Key const &key, Functor &&f) |
| Unregister key and apply a function object f at location where directory's registry manages key . More...
|
|
template<typename Functor > |
void | invoke_where (Functor &&f, Key const &key) |
| Invoke function object at the location where key is currently registered. More...
|
|
template<typename Functor > |
void | try_invoke_where (Functor &&f, Key const &key) |
| Invoke function object at the location where key is currently registered if the key is registered. More...
|
|
template<typename Functor > |
void | unordered_invoke_where (Functor &&f, Key const &key) |
| Invoke function object at the location where key is currently registered, disregarding RMI causal ordering. More...
|
|
locality_info | locality (Key const &key) |
| Provide locality information about a key managed by the directory. More...
|
|
runtime::location_md const & | get_location_md (void) const noexcept |
| Returns the location metadata of the location this object registered in.
|
|
runtime::location_md & | get_location_md (void) noexcept |
| Returns the location metadata of the location this object registered in. noexcept More...
|
|
|
rmi_handle::const_reference const & | get_rmi_handle (void) const noexcept |
| Returns the associated rmi_handle.
|
|
rmi_handle::reference const & | get_rmi_handle (void) noexcept |
| Returns the associated rmi_handle.
|
|
size_type | get_location_id (void) const noexcept |
| Returns the location id of the local sub-object.
|
|
size_type | get_num_locations (void) const noexcept |
| Returns the number of locations of the gang of this p_object.
|
|
void | advance_epoch (void) |
| Advances the epoch of the object. More...
|
|
void | unlock (void) |
| Used by lock_guard functionality in method of derived classes to request atomicity with respect to incoming RMIs. More...
|
|
void | lock (void) |
| Used by lock_guard functionality in method of derived classes to request atomicity with respect to incoming RMIs. More...
|
|
bool | try_lock (void) |
| Attempt to maintain atomicity with respect to incoming RMIs. More...
|
|
|
template<typename Functor > |
void | execute (Functor &&f) |
| Internal method, target of RMI called via migrate_impl to invoke functor f at new registration location, post registry update. More...
|
|
template<typename Directory , typename... PMFArgs, typename... Args> |
void | invoke_at_manager (Key const &key, void(Directory::*const pmf)(PMFArgs...), Args &&... args) |
| Forwards functor and arguments to location managing key . The location managing the key will invoke the method with the supplied arguments. More...
|
|
template<typename Directory , typename... PMFArgs, typename... Args> |
void | invoke_at_manager (Key const &key, void(Directory::*const pmf)(PMFArgs...) const, Args &&... args) const |
| Forwards const functor and arguments to location managing key . The location managing the key will invoke the method with the supplied arguments. More...
|
|
template<typename Trans , typename Directory , typename... PMFArgs, typename... Args> |
void | invoke_at_manager_impl (Key const &key, void(Directory::*const pmf)(PMFArgs...), Args &&... args) |
| Implementation of. More...
|
|
template<typename Trans , typename Directory , typename... PMFArgs, typename... Args> |
void | invoke_at_manager_impl (Key const &key, void(Directory::*const pmf)(PMFArgs...) const, Args &&... args) const |
| Implementation of. More...
|
|
void | flush_pending (const location_type loc, Key const &key, queue_t &pending) |
| Forward all buffered requests for key to location loc . More...
|
|
template<typename Functor , typename Trans = transmitter_type> |
void | request_forward (Key const &key, Functor &&f) |
| Internal method used to facilitate invocation of f on location where key is currently registered. Called via RMI on directory location where key is managed. More...
|
|
template<typename Functor > |
void | try_request_forward (Key const &key, Functor &&f) |
| Internal method used to facilitate invocation of f on location where key is currently registered. If key is not registered, the request is dropped; otherwise, it is called via RMI on directory location where key is managed. This is directed at situations where it is legal for a key to not exist, i.e. erasing non-existent keys in the unordered set container. More...
|
|
template<typename Key, typename Transmitter = use_default, typename Mapper = use_default, typename Registry = use_default, bool EnableMigration = false>
class stapl::directory< Key, Transmitter, Mapper, Registry, EnableMigration >
Provides basic functionality to forward computation (via a generic functor) to a location determined by the distributed registration of key values. The class handles heterogeneous work requests and supports relaxed consistency, placing no synchronization requirements on the registration of key and functor forwarding requests employing that key.
- Template Parameters
-
Key | Key types tracked by this directory. |
Transmitter | Type Encapsulting underlying ARMI primitives for communication. |
Mapper | Functor type that maps keys to location that manages them. |
Registry | Holds key to location mapping. |
Primary template used for directories without internal migration support (i.e., containers where it is handled externally for now).
template<typename Key, typename Transmitter, typename Mapper, typename Registry, bool EnableMigration>
template<typename Functor , typename Trans = transmitter_type>
Internal method used to facilitate invocation of f
on location where key
is currently registered. Called via RMI on directory location where key
is managed.
- Parameters
-
key | Key whose registered location determines where f should be executed. |
f | Functor to invoke (unary, key passed as parameter). |
Called by invoke_where and execute (the latter when migration enabled).
template<typename Key, typename Transmitter, typename Mapper, typename Registry, bool EnableMigration>
template<typename Functor >
Internal method used to facilitate invocation of f
on location where key
is currently registered. If key
is not registered, the request is dropped; otherwise, it is called via RMI on directory location where key
is managed. This is directed at situations where it is legal for a key to not exist, i.e. erasing non-existent keys in the unordered set container.
- Parameters
-
key | Key whose registered location determines where f should be executed. |
f | Functor to invoke (unary, key passed as parameter). |
Called by invoke_where and execute (the latter when migration enabled).