Thrill  0.1
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_typeget_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, priorityevictable_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

◆ block_scheduler_algorithm_type

using block_scheduler_algorithm_type = block_scheduler_algorithm<SwappableBlockType>
protected

Definition at line 912 of file block_scheduler.hpp.

◆ block_scheduler_type

using block_scheduler_type = block_scheduler<SwappableBlockType>
protected

Definition at line 911 of file block_scheduler.hpp.

◆ external_block_type

Definition at line 914 of file block_scheduler.hpp.

◆ internal_block_type

Definition at line 913 of file block_scheduler.hpp.

◆ prediction_sequence_type

◆ swappable_block_identifier_type

◆ time_type

Definition at line 916 of file block_scheduler.hpp.

Constructor & Destructor Documentation

◆ block_scheduler_algorithm_offline_lfd() [1/2]

Definition at line 1025 of file block_scheduler.hpp.

◆ block_scheduler_algorithm_offline_lfd() [2/2]

◆ ~block_scheduler_algorithm_offline_lfd()

Member Function Documentation

◆ acquire()

virtual internal_block_type& acquire ( const swappable_block_identifier_type  sbid,
const bool  uninitialized = false 
)
inlinevirtual

◆ deinitialize()

◆ evictable_blocks_empty()

virtual bool evictable_blocks_empty ( )
inlinevirtual

◆ evictable_blocks_pop()

◆ extract_external_block()

◆ get_free_internal_block()

◆ init()

◆ initialize()

virtual void initialize ( swappable_block_identifier_type  sbid,
external_block_type  eblock 
)
inlinevirtual

◆ release()

◆ return_free_internal_block()

void return_free_internal_block ( internal_block_type iblock)
inlineprotected

Definition at line 978 of file block_scheduler.hpp.

Member Data Documentation

◆ evictable_blocks

Holds swappable blocks, whose internal block can be freed, i.e. that are internal but unacquired.

Definition at line 957 of file block_scheduler.hpp.

◆ next_use

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.


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