Galois
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent > Struct Template Reference

Approximate priority scheduling. More...

#include <Obim.h>

Inheritance diagram for galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >:

Classes

struct  with_back_scan_prevention
 
struct  with_barrier
 
struct  with_block_period
 
struct  with_container
 
struct  with_descending
 
struct  with_indexer
 
struct  with_monotonic
 

Public Types

template<typename _T >
using retype = OrderedByIntegerMetric< Indexer, typename Container::template retype< _T >, BlockPeriod, BSP, _T, typename std::result_of< Indexer(_T)>::type, UseBarrier, UseMonotonic, UseDescending, Concurrent >
 
template<bool _b>
using rethread = OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, _b >
 
typedef T value_type
 
typedef Index index_type
 

Public Member Functions

 masterVersion (0)
 
 indexer (x)
 
 ~OrderedByIntegerMetric ()
 
void push (const value_type &val)
 
template<typename Iter >
void push (Iter b, Iter e)
 
template<typename RangeTy >
void push_initial (const RangeTy &range)
 
galois::optional< value_typepop ()
 
template<bool Barrier = UseBarrier>
auto empty () -> typename std::enable_if< Barrier, bool >::type
 

Public Attributes

 __pad0__: data(this->earliest)
 

Detailed Description

template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
struct galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >

Approximate priority scheduling.

Indexer is a default-constructable class whose instances conform to R r = indexer(item) where R is some type with a total order defined by operator< and operator== and item is an element from the Galois set iterator.

An example:

struct Item { int index; };
struct Indexer {
int operator()(Item i) const { return i.index; }
};
galois::for_each<WL>(galois::iterate(items), Fn);
Template Parameters
IndexerIndexer class
ContainerScheduler for each bucket
BlockPeriodCheck for higher priority work every 2^BlockPeriod iterations
BSPUse back-scan prevention
UseBarrierEliminate priority inversions by placing a barrier between priority levels
UseMonotonicAssume that an activity at priority p will not schedule work at priority p or any priority p1 where p1 < p.
UseDescendingUse descending order instead
Examples:
lonestar/tutorial_examples/SSSPPushSimple.cpp.

Member Typedef Documentation

template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
typedef Index galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >::index_type
template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
template<bool _b>
using galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >::rethread = OrderedByIntegerMetric<Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, _b>
template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
template<typename _T >
using galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >::retype = OrderedByIntegerMetric< Indexer, typename Container::template retype<_T>, BlockPeriod, BSP, _T, typename std::result_of<Indexer(_T)>::type, UseBarrier, UseMonotonic, UseDescending, Concurrent>
template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
typedef T galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >::value_type

Constructor & Destructor Documentation

template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >::~OrderedByIntegerMetric ( )
inline

Member Function Documentation

template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
template<bool Barrier = UseBarrier>
auto galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >::empty ( void  ) -> typename std::enable_if<Barrier, bool>::type
inline
template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >::indexer ( )
inline
template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >::masterVersion ( )
template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
galois::optional<value_type> galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >::pop ( void  )
inline
template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
void galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >::push ( const value_type val)
inline
template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
template<typename Iter >
void galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >::push ( Iter  b,
Iter  e 
)
inline
template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
template<typename RangeTy >
void galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >::push_initial ( const RangeTy &  range)
inline

Member Data Documentation

template<class Indexer = DummyIndexer<int>, typename Container = PerSocketChunkFIFO<>, unsigned BlockPeriod = 0, bool BSP = true, typename T = int, typename Index = int, bool UseBarrier = false, bool UseMonotonic = false, bool UseDescending = false, bool Concurrent = true>
galois::worklists::OrderedByIntegerMetric< Indexer, Container, BlockPeriod, BSP, T, Index, UseBarrier, UseMonotonic, UseDescending, Concurrent >::__pad0__

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