Galois
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy > Class Template Reference

#include <Executor_ForEach.h>

Classes

struct  RunQueueState
 
struct  T1
 
struct  T2
 
struct  ThreadLocalBasics
 
struct  ThreadLocalData
 

Public Member Functions

 ForEachExecutor (FunctionTy f, const ArgsTy &args)
 

Static Public Attributes

static constexpr bool needStats = galois::internal::NeedStats<ArgsTy>::value
 
static constexpr bool needsPush = !has_trait<no_pushes_tag, ArgsTy>()
 
static constexpr bool needsAborts = !has_trait<no_conflicts_tag, ArgsTy>()
 
static constexpr bool needsPia = has_trait<per_iter_alloc_tag, ArgsTy>()
 
static constexpr bool needsBreak = has_trait<parallel_break_tag, ArgsTy>()
 
static constexpr bool MORE_STATS
 

Protected Types

typedef WorkListTy::value_type value_type
 
using LoopStat = LoopStatistics< needStats >
 

Protected Member Functions

void commitIteration (ThreadLocalData &tld)
 
template<typename Item >
GALOIS_ATTRIBUTE_NOINLINE void abortIteration (const Item &item, ThreadLocalData &tld)
 
void doProcess (value_type &val, ThreadLocalData &tld)
 
bool runQueueSimple (ThreadLocalData &tld)
 
template<unsigned int limit, typename WL >
void runQueueDispatch (ThreadLocalData &tld, WL &lwl, RunQueueState< WL > &s)
 
template<unsigned int limit, typename WL >
bool runQueue (ThreadLocalData &tld, WL &lwl)
 
GALOIS_ATTRIBUTE_NOINLINE bool handleAborts (ThreadLocalData &tld)
 
void fastPushBack (typename UserContextAccess< value_type >::PushBufferTy &x)
 
bool checkEmpty (WorkListTy &, ThreadLocalData &,...)
 
template<typename WL >
auto checkEmpty (WL &wl, ThreadLocalData &, int) -> decltype(wl.empty(), bool())
 
template<bool couldAbort, bool isLeader>
void go ()
 
template<typename... WArgsTy>
 ForEachExecutor (T2, FunctionTy f, const ArgsTy &args, WArgsTy...wargs)
 
template<typename WArgsTy , size_t... Is>
 ForEachExecutor (T1, FunctionTy f, const ArgsTy &args, const WArgsTy &wlargs, std::index_sequence< Is...>)
 
template<typename WArgsTy >
 ForEachExecutor (T1, FunctionTy f, const ArgsTy &args, const WArgsTy &, std::index_sequence<>)
 

Protected Attributes

AbortHandler< value_typeaborted
 
substrate::TerminationDetectionterm
 
substrate::Barrierbarrier
 
WorkListTy wl
 
FunctionTy origFunction
 
const char * loopname
 
bool broke
 
PerThreadTimer< MORE_STATSinitTime
 
PerThreadTimer< MORE_STATSexecTime
 

Member Typedef Documentation

template<class WorkListTy , class FunctionTy , typename ArgsTy >
using galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::LoopStat = LoopStatistics<needStats>
protected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
typedef WorkListTy::value_type galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::value_type
protected

Constructor & Destructor Documentation

template<class WorkListTy , class FunctionTy , typename ArgsTy >
template<typename... WArgsTy>
galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::ForEachExecutor ( T2  ,
FunctionTy  f,
const ArgsTy &  args,
WArgsTy...  wargs 
)
inlineprotected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
template<typename WArgsTy , size_t... Is>
galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::ForEachExecutor ( T1  ,
FunctionTy  f,
const ArgsTy &  args,
const WArgsTy &  wlargs,
std::index_sequence< Is...>   
)
inlineprotected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
template<typename WArgsTy >
galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::ForEachExecutor ( T1  ,
FunctionTy  f,
const ArgsTy &  args,
const WArgsTy &  ,
std::index_sequence<>   
)
inlineprotected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::ForEachExecutor ( FunctionTy  f,
const ArgsTy &  args 
)
inline

Member Function Documentation

template<class WorkListTy , class FunctionTy , typename ArgsTy >
template<typename Item >
GALOIS_ATTRIBUTE_NOINLINE void galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::abortIteration ( const Item &  item,
ThreadLocalData tld 
)
inlineprotected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
bool galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::checkEmpty ( WorkListTy ,
ThreadLocalData ,
  ... 
)
inlineprotected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
template<typename WL >
auto galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::checkEmpty ( WL &  wl,
ThreadLocalData ,
int   
) -> decltype(wl.empty(), bool())
inlineprotected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
void galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::commitIteration ( ThreadLocalData tld)
inlineprotected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
void galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::doProcess ( value_type val,
ThreadLocalData tld 
)
inlineprotected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
void galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::fastPushBack ( typename UserContextAccess< value_type >::PushBufferTy &  x)
inlineprotected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
template<bool couldAbort, bool isLeader>
void galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::go ( )
inlineprotected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
GALOIS_ATTRIBUTE_NOINLINE bool galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::handleAborts ( ThreadLocalData tld)
inlineprotected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
template<unsigned int limit, typename WL >
bool galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::runQueue ( ThreadLocalData tld,
WL &  lwl 
)
inlineprotected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
template<unsigned int limit, typename WL >
void galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::runQueueDispatch ( ThreadLocalData tld,
WL &  lwl,
RunQueueState< WL > &  s 
)
inlineprotected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
bool galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::runQueueSimple ( ThreadLocalData tld)
inlineprotected

Member Data Documentation

template<class WorkListTy , class FunctionTy , typename ArgsTy >
AbortHandler<value_type> galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::aborted
protected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
substrate::Barrier& galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::barrier
protected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
bool galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::broke
protected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
PerThreadTimer<MORE_STATS> galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::execTime
protected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
PerThreadTimer<MORE_STATS> galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::initTime
protected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
const char* galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::loopname
protected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
constexpr bool galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::MORE_STATS
static
Initial value:
=
needStats && has_trait<more_stats_tag, ArgsTy>()
template<class WorkListTy , class FunctionTy , typename ArgsTy >
constexpr bool galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::needsAborts = !has_trait<no_conflicts_tag, ArgsTy>()
static
template<class WorkListTy , class FunctionTy , typename ArgsTy >
constexpr bool galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::needsBreak = has_trait<parallel_break_tag, ArgsTy>()
static
template<class WorkListTy , class FunctionTy , typename ArgsTy >
constexpr bool galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::needsPia = has_trait<per_iter_alloc_tag, ArgsTy>()
static
template<class WorkListTy , class FunctionTy , typename ArgsTy >
constexpr bool galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::needsPush = !has_trait<no_pushes_tag, ArgsTy>()
static
template<class WorkListTy , class FunctionTy , typename ArgsTy >
constexpr bool galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::needStats = galois::internal::NeedStats<ArgsTy>::value
static
template<class WorkListTy , class FunctionTy , typename ArgsTy >
FunctionTy galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::origFunction
protected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
substrate::TerminationDetection& galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::term
protected
template<class WorkListTy , class FunctionTy , typename ArgsTy >
WorkListTy galois::runtime::ForEachExecutor< WorkListTy, FunctionTy, ArgsTy >::wl
protected

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