Thrill  0.1
block_scheduler_algorithm_simulation< SwappableBlockType > Class Template Reference

Detailed Description

template<class SwappableBlockType>
class foxxll::block_scheduler_algorithm_simulation< SwappableBlockType >

Pseudo block scheduling algorithm only recording the request sequence.

Definition at line 759 of file block_scheduler.hpp.

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

#include <block_scheduler.hpp>

Public Member Functions

 block_scheduler_algorithm_simulation (block_scheduler_type &bs)
 
 block_scheduler_algorithm_simulation (block_scheduler_algorithm_type *old)
 
virtual ~block_scheduler_algorithm_simulation ()
 
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 void explicit_timestep ()
 
virtual external_block_type extract_external_block (swappable_block_identifier_type sbid)
 
virtual void initialize (swappable_block_identifier_type sbid, external_block_type)
 
virtual bool is_initialized (const swappable_block_identifier_type sbid) const
 
virtual bool is_simulating () const
 
virtual void release (swappable_block_identifier_type sbid, const bool dirty)
 
virtual void swappable_blocks_resize (swappable_block_identifier_type size)
 
- 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 const prediction_sequence_typeget_prediction_sequence () const
 
block_scheduler_algorithmoperator= (const block_scheduler_algorithm &)=delete
 non-copyable: delete assignment operator More...
 

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_element_type = typename block_scheduler_type::prediction_sequence_element
 
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

void init ()
 
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

internal_block_type dummy_block
 
std::stack< swappable_block_identifier_typeevictable_blocks
 Holds swappable blocks, whose internal block can be freed, i.e. that are internal but unacquired. More...
 
bool last_op_release
 
std::vector< size_t > reference_counts
 
time_type time_count
 
- 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 763 of file block_scheduler.hpp.

◆ block_scheduler_type

using block_scheduler_type = block_scheduler<SwappableBlockType>
protected

Definition at line 762 of file block_scheduler.hpp.

◆ external_block_type

Definition at line 765 of file block_scheduler.hpp.

◆ internal_block_type

Definition at line 764 of file block_scheduler.hpp.

◆ prediction_sequence_element_type

◆ swappable_block_identifier_type

◆ time_type

Definition at line 768 of file block_scheduler.hpp.

Constructor & Destructor Documentation

◆ block_scheduler_algorithm_simulation() [1/2]

Definition at line 797 of file block_scheduler.hpp.

◆ block_scheduler_algorithm_simulation() [2/2]

Definition at line 804 of file block_scheduler.hpp.

◆ ~block_scheduler_algorithm_simulation()

virtual ~block_scheduler_algorithm_simulation ( )
inlinevirtual

Definition at line 811 of file block_scheduler.hpp.

References TLX_LOG1.

Member Function Documentation

◆ acquire()

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

◆ deinitialize()

virtual void deinitialize ( swappable_block_identifier_type  sbid)
inlinevirtual

◆ evictable_blocks_empty()

virtual bool evictable_blocks_empty ( )
inlinevirtual

◆ evictable_blocks_pop()

virtual swappable_block_identifier_type evictable_blocks_pop ( )
inlinevirtual

◆ explicit_timestep()

virtual void explicit_timestep ( )
inlinevirtual

Reimplemented from block_scheduler_algorithm< SwappableBlockType >.

Definition at line 899 of file block_scheduler.hpp.

◆ extract_external_block()

virtual external_block_type extract_external_block ( swappable_block_identifier_type  sbid)
inlinevirtual

◆ init()

void init ( )
inlineprotected

◆ initialize()

virtual void initialize ( swappable_block_identifier_type  sbid,
external_block_type   
)
inlinevirtual

◆ is_initialized()

virtual bool is_initialized ( const swappable_block_identifier_type  sbid) const
inlinevirtual

Reimplemented from block_scheduler_algorithm< SwappableBlockType >.

Definition at line 894 of file block_scheduler.hpp.

◆ is_simulating()

virtual bool is_simulating ( ) const
inlinevirtual

Reimplemented from block_scheduler_algorithm< SwappableBlockType >.

Definition at line 902 of file block_scheduler.hpp.

◆ release()

virtual void release ( swappable_block_identifier_type  sbid,
const bool  dirty 
)
inlinevirtual

◆ return_free_internal_block()

void return_free_internal_block ( internal_block_type iblock)
inlineprotected

Definition at line 784 of file block_scheduler.hpp.

◆ swappable_blocks_resize()

virtual void swappable_blocks_resize ( swappable_block_identifier_type  size)
inlinevirtual

Reimplemented from block_scheduler_algorithm< SwappableBlockType >.

Definition at line 889 of file block_scheduler.hpp.

Member Data Documentation

◆ dummy_block

internal_block_type dummy_block
protected

Definition at line 782 of file block_scheduler.hpp.

◆ evictable_blocks

std::stack<swappable_block_identifier_type> evictable_blocks
protected

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

Definition at line 778 of file block_scheduler.hpp.

◆ last_op_release

bool last_op_release
protected

Definition at line 780 of file block_scheduler.hpp.

◆ reference_counts

std::vector<size_t> reference_counts
protected

Definition at line 781 of file block_scheduler.hpp.

◆ time_count

time_type time_count
protected

Definition at line 779 of file block_scheduler.hpp.


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