STXXL  1.4-dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType > Class Template Reference

Detailed Description

template<class SwappableBlockType>
class stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >

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

Definition at line 881 of file block_scheduler.h.

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

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 stxxl::block_scheduler_algorithm< SwappableBlockType >
 block_scheduler_algorithm (block_scheduler_type &bs)
 
 block_scheduler_algorithm (block_scheduler_algorithm *old)
 
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
 
virtual void swappable_blocks_resize (swappable_block_identifier_type)
 

Protected Types

typedef
block_scheduler_algorithm
< SwappableBlockType > 
block_scheduler_algorithm_type
 
typedef block_scheduler
< SwappableBlockType > 
block_scheduler_type
 
typedef
block_scheduler_type::external_block_type 
external_block_type
 
typedef
block_scheduler_type::internal_block_type 
internal_block_type
 
typedef
block_scheduler_type::prediction_sequence_type 
prediction_sequence_type
 
typedef
block_scheduler_type::swappable_block_identifier_type 
swappable_block_identifier_type
 
typedef
block_scheduler_algorithm_type::time_type 
time_type
 
- Protected Types inherited from stxxl::block_scheduler_algorithm< SwappableBlockType >
typedef block_scheduler
< SwappableBlockType > 
block_scheduler_type
 
typedef
block_scheduler_type::external_block_type 
external_block_type
 
typedef
block_scheduler_type::internal_block_type 
internal_block_type
 
typedef
block_scheduler_type::prediction_sequence_type 
prediction_sequence_type
 
typedef
block_scheduler_type::swappable_block_identifier_type 
swappable_block_identifier_type
 
typedef
block_scheduler_type::time_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 stxxl::block_scheduler_algorithm< SwappableBlockType >
block_scheduler_algorithmget_algorithm_from_block_scheduler ()
 
internal_block_typeget_free_internal_block_from_block_scheduler ()
 Get an internal_block from the block_scheduler. More...
 
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 stxxl::block_scheduler_algorithm< SwappableBlockType >
prediction_sequence_type prediction_sequence
 
std::vector< SwappableBlockType > & swappable_blocks
 

Additional Inherited Members

- Public Attributes inherited from stxxl::block_scheduler_algorithm< SwappableBlockType >
block_scheduler_typebs
 

Member Typedef Documentation

template<class SwappableBlockType >
typedef block_scheduler_algorithm<SwappableBlockType> stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::block_scheduler_algorithm_type
protected

Definition at line 885 of file block_scheduler.h.

template<class SwappableBlockType >
typedef block_scheduler<SwappableBlockType> stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::block_scheduler_type
protected

Definition at line 884 of file block_scheduler.h.

template<class SwappableBlockType >
typedef block_scheduler_type::external_block_type stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::external_block_type
protected

Definition at line 887 of file block_scheduler.h.

template<class SwappableBlockType >
typedef block_scheduler_type::internal_block_type stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::internal_block_type
protected

Definition at line 886 of file block_scheduler.h.

template<class SwappableBlockType >
typedef block_scheduler_type::prediction_sequence_type stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::prediction_sequence_type
protected

Definition at line 890 of file block_scheduler.h.

Definition at line 888 of file block_scheduler.h.

template<class SwappableBlockType >
typedef block_scheduler_algorithm_type::time_type stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::time_type
protected

Definition at line 889 of file block_scheduler.h.

Constructor & Destructor Documentation

template<class SwappableBlockType >
stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::block_scheduler_algorithm_offline_lfd ( block_scheduler_type bs)
inline

Definition at line 998 of file block_scheduler.h.

template<class SwappableBlockType >
stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::block_scheduler_algorithm_offline_lfd ( block_scheduler_algorithm_type old)
inline

Definition at line 1003 of file block_scheduler.h.

template<class SwappableBlockType >
virtual stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::~block_scheduler_algorithm_offline_lfd ( )
inlinevirtual

Definition at line 1007 of file block_scheduler.h.

References STXXL_ERRMSG.

Member Function Documentation

template<class SwappableBlockType >
virtual internal_block_type& stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::acquire ( const swappable_block_identifier_type  sbid,
const bool  uninitialized = false 
)
inlinevirtual
template<class SwappableBlockType >
virtual void stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::deinitialize ( swappable_block_identifier_type  sbid)
inlinevirtual
template<class SwappableBlockType >
virtual bool stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::evictable_blocks_empty ( )
inlinevirtual
template<class SwappableBlockType >
virtual swappable_block_identifier_type stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::evictable_blocks_pop ( )
inlinevirtual
template<class SwappableBlockType >
virtual external_block_type stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::extract_external_block ( swappable_block_identifier_type  sbid)
inlinevirtual
template<class SwappableBlockType >
internal_block_type* stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::get_free_internal_block ( )
inlineprotected

Definition at line 941 of file block_scheduler.h.

template<class SwappableBlockType >
void stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::init ( block_scheduler_algorithm_type old_algo)
inlineprotected
template<class SwappableBlockType >
virtual void stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::initialize ( swappable_block_identifier_type  sbid,
external_block_type  eblock 
)
inlinevirtual
template<class SwappableBlockType >
virtual void stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::release ( swappable_block_identifier_type  sbid,
const bool  dirty 
)
inlinevirtual
template<class SwappableBlockType >
void stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::return_free_internal_block ( internal_block_type iblock)
inlineprotected

Definition at line 951 of file block_scheduler.h.

Member Data Documentation

template<class SwappableBlockType >
addressable_priority_queue<swappable_block_identifier_type, priority> stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::evictable_blocks
protected

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

Definition at line 930 of file block_scheduler.h.

template<class SwappableBlockType >
std::deque<std::pair<bool, time_type> > stxxl::block_scheduler_algorithm_offline_lfd< SwappableBlockType >::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 939 of file block_scheduler.h.


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