FreePOOMA
2.4.1
|
Kernel Tags are used for picking the appropriate Kernel given the engines in an expression. More...
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 > |
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: