Thrill  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
block_scheduler_algorithm_offline_lfd< SwappableBlockType > Class Template Reference

Detailed Description

template<class SwappableBlockType>
class foxxll::block_scheduler_algorithm_offline_lfd< SwappableBlockType >

Block scheduling algorithm caching via the longest forward distance policy (offline).

Definition at line 908 of file block_scheduler.hpp.

+ Inheritance diagram for block_scheduler_algorithm_offline_lfd< SwappableBlockType >:
+ Collaboration diagram for block_scheduler_algorithm_offline_lfd< SwappableBlockType >:

#include <block_scheduler.hpp>

Classes

class  priority
 

Public Member Functions

 block_scheduler_algorithm_offline_lfd (block_scheduler_type &bs)
 
 block_scheduler_algorithm_offline_lfd (block_scheduler_algorithm_type *old)
 
virtual ~block_scheduler_algorithm_offline_lfd ()
 
virtual internal_block_typeacquire (const swappable_block_identifier_type sbid, const bool uninitialized=false)
 
virtual void deinitialize (swappable_block_identifier_type sbid)
 
virtual bool evictable_blocks_empty ()
 
virtual
swappable_block_identifier_type 
evictable_blocks_pop ()
 
virtual external_block_type extract_external_block (swappable_block_identifier_type sbid)
 
virtual void initialize (swappable_block_identifier_type sbid, external_block_type eblock)
 
virtual void release (swappable_block_identifier_type sbid, const bool dirty)
 
- Public Member Functions inherited from block_scheduler_algorithm< SwappableBlockType >
 block_scheduler_algorithm (block_scheduler_type &bs)
 
 block_scheduler_algorithm (block_scheduler_algorithm *old)
 
 block_scheduler_algorithm (const block_scheduler_algorithm &)=delete
 non-copyable: delete copy-constructor More...
 
virtual ~block_scheduler_algorithm ()
 
virtual void explicit_timestep ()
 
virtual const
prediction_sequence_type
get_prediction_sequence () const
 
virtual bool is_initialized (const swappable_block_identifier_type sbid) const
 
virtual bool is_simulating () const
 
block_scheduler_algorithmoperator= (const block_scheduler_algorithm &)=delete
 non-copyable: delete assignment operator More...
 
virtual void swappable_blocks_resize (swappable_block_identifier_type)
 

Protected Types

using block_scheduler_algorithm_type = block_scheduler_algorithm< SwappableBlockType >
 
using block_scheduler_type = block_scheduler< SwappableBlockType >
 
using external_block_type = typename block_scheduler_type::external_block_type
 
using internal_block_type = typename block_scheduler_type::internal_block_type
 
using prediction_sequence_type = typename block_scheduler_type::prediction_sequence_type
 
using swappable_block_identifier_type = typename block_scheduler_type::swappable_block_identifier_type
 
using time_type = typename block_scheduler_algorithm_type::time_type
 
- Protected Types inherited from block_scheduler_algorithm< SwappableBlockType >
using block_scheduler_type = block_scheduler< SwappableBlockType >
 
using external_block_type = typename block_scheduler_type::external_block_type
 
using internal_block_type = typename block_scheduler_type::internal_block_type
 
using prediction_sequence_type = typename block_scheduler_type::prediction_sequence_type
 
using swappable_block_identifier_type = typename block_scheduler_type::swappable_block_identifier_type
 
using time_type = typename block_scheduler_type::time_type
 

Protected Member Functions

internal_block_typeget_free_internal_block ()
 
void init (block_scheduler_algorithm_type *old_algo)
 
void return_free_internal_block (internal_block_type *iblock)
 
- Protected Member Functions inherited from block_scheduler_algorithm< SwappableBlockType >
block_scheduler_algorithmget_algorithm_from_block_scheduler ()
 
internal_block_typeget_free_internal_block_from_block_scheduler ()
 
void return_free_internal_block_to_block_scheduler (internal_block_type *iblock)
 Return an internal_block to the block_scheduler. More...
 

Protected Attributes

addressable_priority_queue
< swappable_block_identifier_type,
priority
evictable_blocks
 Holds swappable blocks, whose internal block can be freed, i.e. that are internal but unacquired. More...
 
std::deque< std::pair< bool,
time_type > > 
next_use
 Stores for the sequence of releases extracted from the prediction_sequence: (true, timestamp of the blocks next acquire) if it is acquired next (false, 0) if it is deinitialized next (false, 1) if it is not accessed any more (false, 2) if it is extracted next (false, 3) if it is initialized next. More...
 
- Protected Attributes inherited from block_scheduler_algorithm< SwappableBlockType >
prediction_sequence_type prediction_sequence
 
std::vector< SwappableBlockType > & swappable_blocks
 

Additional Inherited Members

- Public Attributes inherited from block_scheduler_algorithm< SwappableBlockType >
block_scheduler_typebs
 

Member Typedef Documentation

using block_scheduler_algorithm_type = block_scheduler_algorithm<SwappableBlockType>
protected

Definition at line 912 of file block_scheduler.hpp.

using block_scheduler_type = block_scheduler<SwappableBlockType>
protected

Definition at line 911 of file block_scheduler.hpp.

Definition at line 914 of file block_scheduler.hpp.

Definition at line 913 of file block_scheduler.hpp.

Definition at line 916 of file block_scheduler.hpp.

Constructor & Destructor Documentation

Member Function Documentation

Member Data Documentation

std::deque<std::pair<bool, time_type> > next_use
protected

Stores for the sequence of releases extracted from the prediction_sequence: (true, timestamp of the blocks next acquire) if it is acquired next (false, 0) if it is deinitialized next (false, 1) if it is not accessed any more (false, 2) if it is extracted next (false, 3) if it is initialized next.

Definition at line 966 of file block_scheduler.hpp.

Referenced by block_scheduler_algorithm_offline_lfd< SwappableBlockType >::init(), and block_scheduler_algorithm_offline_lfd< SwappableBlockType >::release().


The documentation for this class was generated from the following file: