Thrill
0.1
|
Encapsulates asynchronous prefetching engine.
block_prefetcher
overlaps I/Os with consumption of read data. Utilizes optimal asynchronous prefetch scheduling (by Peter Sanders et.al.)
Definition at line 56 of file block_prefetcher.hpp.
#include <block_prefetcher.hpp>
Public Types | |
using | bid_iterator_type = BidIteratorType |
using | bid_type = typename block_type::bid_type |
using | block_type = BlockType |
Public Member Functions | |
block_prefetcher (bid_iterator_type _cons_begin, bid_iterator_type _cons_end, size_t *_pref_seq, size_t _prefetch_buf_size, completion_handler do_after_fetch=completion_handler()) | |
block_prefetcher (const block_prefetcher &)=delete | |
non-copyable: delete copy-constructor More... | |
~block_prefetcher () | |
Frees used memory. More... | |
bool | block_consumed (block_type *&buffer) |
bool | empty () const |
block_prefetcher & | operator= (const block_prefetcher &)=delete |
non-copyable: delete assignment operator More... | |
size_t | pos () const |
Index of the next element in the consume sequence. More... | |
block_type * | pull_block () |
Protected Member Functions | |
block_type * | wait (size_t iblock) |
Protected Attributes | |
onoff_switch * | completed |
bid_iterator_type | consume_seq_begin |
bid_iterator_type | consume_seq_end |
completion_handler | do_after_fetch |
size_t | nextconsume |
size_t | nextread |
const size_t | nreadblocks |
size_t * | pref_buffer |
size_t * | prefetch_seq |
bid_type * | read_bids |
block_type * | read_buffers |
request_ptr * | read_reqs |
size_t | seq_length |
Static Private Attributes | |
static constexpr bool | debug = false |
using bid_iterator_type = BidIteratorType |
Definition at line 62 of file block_prefetcher.hpp.
using bid_type = typename block_type::bid_type |
Definition at line 64 of file block_prefetcher.hpp.
using block_type = BlockType |
Definition at line 61 of file block_prefetcher.hpp.
|
inline |
Constructs an object and immediately starts prefetching.
_cons_begin | bid_iterator pointing to the bid of the first block to be consumed |
_cons_end | bid_iterator pointing to the bid of the ( last + 1 ) block of consumption sequence |
_pref_seq | gives the prefetch order, is a pointer to the integer array that contains the indices of the blocks in the consumption sequence |
_prefetch_buf_size | amount of prefetch buffers to use |
do_after_fetch | unknown |
Definition at line 110 of file block_prefetcher.hpp.
References set_switch_handler::set_switch_handler(), and TLX_LOG.
|
delete |
non-copyable: delete copy-constructor
|
inline |
Frees used memory.
Definition at line 221 of file block_prefetcher.hpp.
|
inline |
Exchanges buffers between prefetcher and application.
buffer | pointer to the consumed buffer. After call if return value is true buffer contains valid pointer to the next unconsumed prefetched buffer. |
buffer
must be value returned by pull_block()
or block_consumed()
methods false
if there are no blocks to prefetch left, true
if consumption sequence is not emptied Definition at line 172 of file block_prefetcher.hpp.
References set_switch_handler::set_switch_handler(), and TLX_LOG.
Referenced by buf_istream< BlockType, BidIteratorType >::operator++(), buf_istream_reverse< BlockType, BidIteratorType >::operator++(), buf_istream< BlockType, BidIteratorType >::operator>>(), and buf_istream_reverse< BlockType, BidIteratorType >::operator>>().
|
inline |
No more consumable blocks available, but can't delete the prefetcher, because not all blocks may have been returned, yet.
Definition at line 209 of file block_prefetcher.hpp.
|
delete |
non-copyable: delete assignment operator
|
inline |
Index of the next element in the consume sequence.
Definition at line 215 of file block_prefetcher.hpp.
|
inline |
Pulls next unconsumed block from the consumption sequence.
Definition at line 162 of file block_prefetcher.hpp.
References TLX_LOG.
Referenced by buf_istream< BlockType, BidIteratorType >::buf_istream().
|
inlineprotected |
Definition at line 87 of file block_prefetcher.hpp.
References TLX_LOG, onoff_switch::wait_for_on(), and stats::WAIT_OP_READ.
|
protected |
Definition at line 82 of file block_prefetcher.hpp.
|
protected |
Definition at line 67 of file block_prefetcher.hpp.
|
protected |
Definition at line 68 of file block_prefetcher.hpp.
|
staticprivate |
Definition at line 58 of file block_prefetcher.hpp.
|
protected |
Definition at line 85 of file block_prefetcher.hpp.
|
protected |
Definition at line 74 of file block_prefetcher.hpp.
|
protected |
Definition at line 73 of file block_prefetcher.hpp.
|
protected |
Definition at line 76 of file block_prefetcher.hpp.
|
protected |
Definition at line 83 of file block_prefetcher.hpp.
|
protected |
Definition at line 71 of file block_prefetcher.hpp.
|
protected |
Definition at line 80 of file block_prefetcher.hpp.
|
protected |
Definition at line 78 of file block_prefetcher.hpp.
|
protected |
Definition at line 79 of file block_prefetcher.hpp.
|
protected |
Definition at line 69 of file block_prefetcher.hpp.