FreePOOMA  2.4.1
Files
Evaluator
Data object and container classes

The evaluators present different ways to operate on Arrays and Fields. More...

Collaboration diagram for Evaluator:

Files

file  CompressibleEngines.h
 

We define EngineFunctor<Engine,Tag> for tags that express the functionality that compressible bricks have.


file  CompressibleEval.h
 

These evaluators are used in the iterates that perform evaluation on expressions with CompressibleBricks.


file  EngineTraits.h
 

EvaluatorEngineTraits<EngineTag> associates evaluator types with engine tags.


file  Evaluator.h
 

Evaluator evaluates expressions by examining the engines that are participating in the expression and dispatching to custom code.


file  EvaluatorTags.h
 

Evaluator Tags are used for picking the appropriate evaluator given the engines in an expression.


file  ExpressionKernel.h
 

An ExpressionKernel encapsulates evaluating an expression on a domain.


file  InlineEvaluator.h
 

InlineEvaluator evaluates expressions by inlining a simple loop.


file  KernelTags.h
 

Kernel Tags are used for picking the appropriate Kernel given the engines in an expression.


file  LoopApply.h
 

LoopApplyEvaluator is a simple class that wraps a set of 7 functions that provide efficient loops over Interval<Dim> type domains and call operator() with the integers on a user provided functor.


file  MultiArgEvaluator.h
 

MultiArgEvaluator is an evaluator that takes a MultiArg object.


file  MultiArgKernel.h
 

MultiArgKernel is a generalized iterate object to hand off to smarts.


file  OpMask.h
 

These classes implement the two argument where.


file  PatchCode.h
 

PatchCode functionality for applying a functor to a patch.


file  PatchFunction.h
 

PatchFunction is mix-in class that encapsulates evaluation of patch-based functors in parallel.


file  PatchKernel.h
 

A PatchKernel encapsulates performing operations on a patch of an expression.


file  Reduction.h
 

Reduction performs global reductions on expressions by examining the engines that are participating in the expression and dispatching to custom code.


file  ReductionEvaluator.h
 

ReductionEvaluator<InlineKernelTag> reduces expressions by inlining a simple loop.


file  ReductionKernel.h
 

A ReductionKernel encapsulates reducing an expression on a domain.


file  RequestLocks.h
 

Classes and functors that are necessary to request locks on an expression.


file  ScalarCode.h
 

Undocumented.


file  ScalarCodeInfo.h
 

ScalarCodeInfo contains all the information necessary for evaluating a piece of scalar code on several arguments.


file  SimpleIntersector.h
 

Intersector that assumes matching layouts.


file  WhereProxy.h
 

WhereProxy is used to implement 2 argument where().



Detailed Description

The evaluators present different ways to operate on Arrays and Fields.

This includes Fortran-like manual looping over the patches of the data using the PatchFunction<> mechanism which supports multiple input data but only one output. (PatchFunction.h, PatchKernel.h)

Another way to operate is using the ScalarCode<> facility which presents something like a n-argument stencil operation with some of the arguments being the output. (ScalarCode.h, ScalarCodeInfo.h, MultiArgKernel.h, MultiArgEvaluator.h)

Evaluating a functor at a whole domain is done using the LoopApplyEvaluator. (LoopApply.h)

The most simple way is to use POOMA expressions who are evaluated via ExpressioKernel objects. (ExpressionKernel.h)

The internal evaluator objects are templated on the patch type which gets constructed from the expression node types using the EvaluatorCombine<> traits class and produce the tags RemoteMultiPatchEvaluatorTag, MultiPatchEvaluatorTag, RemoteSinglePatchEvaluatorTag and SinglePatchEvaluatorTag. The MainEvaluatorTag specialized class is the root of any evaluation.