|
CnC
|
Classes | |
| class | step_collection |
| A step collection is logical set of step instances. More... | |
| class | tag_collection |
| A tag collection is a set of tags of the same type. It is used to prescribe steps. By default, tags are not stored. More... | |
| class | item_collection |
| An item collection is a mapping from tags to items. More... | |
| class | graph |
| Base class for defining and using CnC (sub-)graphs. More... | |
| class | context |
| CnC context bringing together collections (for steps, items and tags). More... | |
| struct | debug |
| Debugging interface providing tracing and timing capabilities. More... | |
| class | tuner_base |
| struct | step_tuner |
| Default (NOP) implementations of the step_tuner interface. More... | |
| struct | pfor_tuner |
| Default (NOP) implementations of the pfor_tuner interface. More... | |
| class | cancel_tuner |
| Step tuner with convenient cancelation capabilities. More... | |
| struct | item_tuner |
| Default implementations of the item-tuner interface for item-collections. More... | |
| struct | hashmap_tuner |
| The tuner base for hashmap-based item-tuners. More... | |
| struct | vector_tuner |
| The tuner base for vector-based item-tuners. More... | |
| struct | tag_tuner |
| Default implementations of the tag-tuner interface for tag-collections. More... | |
| struct | preserve_tuner |
| struct | dist_cnc_init |
| class | explicitly_serializable |
| Specifies serialization category: explicit serialization via a "serialize" function. More... | |
| class | bitwise_serializable |
| simple structs/classes are bitwise serializable. More... | |
| class | chunk |
| Serialization of arrays with and without automatic memory handling. More... | |
| class | serializer |
| Handles serilialization of data-objects. More... | |
| class | default_partitioner |
| Interface for partitioners: configuring how ranges are partitioned. More... | |
| class | tag_partitioner |
Enumerations | |
| enum | { COMPUTE_ON_LOCAL = -2, COMPUTE_ON_ROUND_ROBIN = -3, COMPUTE_ON_ALL = -4, COMPUTE_ON_ALL_OTHERS = -5, PRODUCER_UNKNOWN = -6, PRODUCER_LOCAL = -7, CONSUMER_UNKNOWN = -8, CONSUMER_LOCAL = -9, CONSUMER_ALL = -10, CONSUMER_ALL_OTHERS = -11, NO_GETCOUNT = Internal::item_properties::NO_GET_COUNT, AFFINITY_HERE = Internal::scheduler_i::AFFINITY_HERE } |
Functions | |
| template<class Index , class Functor , class Tuner > | |
| void | parallel_for (Index first, Index last, Index incr, const Functor &f, const Tuner &tuner) |
| Execute f( i ) for every i in {first <= i=first+step*x < last and 0 <= x}. | |
| template<typename Ctxt , typename TagA , typename TunerA , typename TagB , typename TunerB , typename TagC , typename TunerC > | |
| graph * | make_join_graph (CnC::context< Ctxt > &ctxt, const std::string &name, CnC::tag_collection< TagA, TunerA > &a, CnC::tag_collection< TagB, TunerB > &b, CnC::tag_collection< TagC, TunerC > &c) |
| template<typename Ctxt , typename ITag , typename IType , typename ITuner , typename CType , typename CTuner , typename OTag , typename OTuner , typename ReduceOp , typename Select > | |
| graph * | make_reduce_graph (CnC::context< Ctxt > &ctxt, const std::string &name, CnC::item_collection< ITag, IType, ITuner > &in, CnC::item_collection< OTag, CType, CTuner > &cnt, CnC::item_collection< OTag, IType, OTuner > &out, const ReduceOp &op, const IType &idty, const Select &sel) |
| template<class T > | |
| explicitly_serializable | serializer_category (const T *) |
| CNC_BITWISE_SERIALIZABLE (bool) | |
| bool is bitwise serializable | |
| CNC_BITWISE_SERIALIZABLE (char) | |
| char is bitwise serializable | |
| CNC_BITWISE_SERIALIZABLE (signed char) | |
| signed char is bitwise serializable | |
| CNC_BITWISE_SERIALIZABLE (unsigned char) | |
| unsigend char is bitwise serializable | |
| CNC_BITWISE_SERIALIZABLE (short) | |
| short is bitwise serializable | |
| CNC_BITWISE_SERIALIZABLE (int) | |
| int is bitwise serializable | |
| CNC_BITWISE_SERIALIZABLE (long) | |
| long is bitwise serializable | |
| CNC_BITWISE_SERIALIZABLE (unsigned long long) | |
| unsigned long long is bitwise serializable | |
| CNC_BITWISE_SERIALIZABLE (float) | |
| float is bitwise serializable | |
| CNC_BITWISE_SERIALIZABLE (double) | |
| double is bitwise serializable | |
| CNC_BITWISE_SERIALIZABLE (long double) | |
Variables | |
| const int | CNC_Success = 0 |
| Steps return CNC_Success if execution was successful. | |
| const int | CNC_Failure = 1 |
| Steps return CNC_Failure if execution failed. | |
CnC API.
| anonymous enum |
Definition at line 60 of file default_tuner.h.
{
COMPUTE_ON_LOCAL = -2, ///< let tuner::compute_on return COMPUTE_ON_LOCAL if the step should be executed locally
COMPUTE_ON_ROUND_ROBIN = -3, ///< let tuner::compute_on return COMPUTE_ON_ROUND_ROBIN to let the scheduler distribute it in a round-robin fashion
COMPUTE_ON_ALL = -4, ///< let tuner::compute_on return COMPUTE_ON_ALL if the step should be executed on all processes, as well as locally
COMPUTE_ON_ALL_OTHERS = -5, ///< let tuner::compute_on return COMPUTE_ON_ALL_OTHERS if the step should be executed on all processes, but not locally
PRODUCER_UNKNOWN = -6, ///< producer process of dependent item is unknown
PRODUCER_LOCAL = -7, ///< producer process of dependent item is local process
CONSUMER_UNKNOWN = -8, ///< consumer process of given item is unkown
CONSUMER_LOCAL = -9, ///< consumer process of given item is the local process
CONSUMER_ALL = -10, ///< all processes consume given item
CONSUMER_ALL_OTHERS = -11, ///< all processes but this consume given item
NO_GETCOUNT = Internal::item_properties::NO_GET_COUNT, ///< no get-count specified
AFFINITY_HERE = Internal::scheduler_i::AFFINITY_HERE ///< default affinity to current thread
};
| graph* CnC::make_join_graph | ( | CnC::context< Ctxt > & | ctxt, |
| const std::string & | name, | ||
| CnC::tag_collection< TagA, TunerA > & | a, | ||
| CnC::tag_collection< TagB, TunerB > & | b, | ||
| CnC::tag_collection< TagC, TunerC > & | c | ||
| ) |
Returns a graph that joins 2 tag-collections into a third one. Continuously produces the join product of the 2 input tag-collections and puts it into the output tag-collection.
Accepts any types; only requires that a an output tag-type provides a constructor which accepts (taga, tagb) to construct a joined tag from tag a and b.
On distributed memory duplicate output tags might be produced. To avoid duplicate step execution use tag-preservation on the output tag-collection (CnC::preserve_tuner) and suitable distribution functions on the prescribed step-collection (CnC::step_tuner).
| ctxt | the context to which the graph belongs |
| name | the name of this join graph instance |
| a | first input collection |
| b | second input collection |
| c | output collection |
Definition at line 64 of file join.h.
{
return new join< TagA, TunerA, TagB, TunerB, TagC, TunerC >( ctxt, name, a, b, c );
}
| void CnC::parallel_for | ( | Index | first, |
| Index | last, | ||
| Index | incr, | ||
| const Functor & | f, | ||
| const Tuner & | tuner | ||
| ) |
Execute f( i ) for every i in {first <= i=first+step*x < last and 0 <= x}.
For different values of i, function execution might occur in parallel. Returns functor object ocne all iterations have been executed. Type Index must support operator+. Executes on the local process only. No distribution to other processes supported.
| first | starting index of parallel iteration |
| last | iteration stops before reaching last |
| incr | increment index by this value in each iteration |
| f | function to be executed |
| tuner | defaults to pfor_tuner<> |
1.7.6.1