FreePOOMA  2.4.1
Classes
KernelTags.h File Reference

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

#include "Evaluator/CompressibleEngines.h"
#include "PETE/PETE.h"
Include dependency graph for KernelTags.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  ErrorKernelTag
struct  InlineKernelTag
struct  CompressibleKernelTag
struct  CompressibleViewKernelTag
struct  CompressibleKernel< lhsComp, rhsComp >
struct  CompressibleKernel< false, false >
struct  CompressibleKernel< false, true >
struct  CompressibleKernel< true, false >
struct  CompressibleKernel< true, true >
struct  KernelTag1< Expr >
struct  KernelTag< LHS, RHS >

Detailed Description

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

Each Kernel tag represents a set of engines that it is capable of dealing with.

The external interface for KernelTags is the traits

which yields an evaluator tag, given the Array type or the types for the left hand side and right hand side. To add new Kernels or new engines, specialize the KernelForEngine struct to give the Kernel tag for each engine, and specialize the NewKernel and KernelCombine struct to determine how to chose a new Kernel given two Kernels.

The implementation of this interface will probably change when other kernels are added. Currently we only have the basic inline kernel plus two that deal with compression, so we pick the kernel tag by querying Compressible about the left and right hand sides.

Currently there are only three Kernels:

The results for expressions with Bricks (B) and CompressibleBricks (C) are: