From 235e83aba608cf3d94b033bfbf551f8c136a3fab Mon Sep 17 00:00:00 2001 From: Rasmus Munk Larsen Date: Thu, 14 Apr 2016 13:57:35 -0700 Subject: Eigen cost model part 1. This implements a basic recursive framework to estimate the cost of evaluating tensor expressions. --- unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h') diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h b/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h index b7c13f67f..ccaa757d1 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h @@ -594,6 +594,8 @@ template <> class UniformRandomGenerator > { template struct functor_traits > { enum { + // Rough estimate. + Cost = 100 * NumTraits::MulCost, PacketAccess = UniformRandomGenerator::PacketAccess }; }; @@ -774,6 +776,8 @@ template class NormalRandomGenerator { template struct functor_traits > { enum { + // Rough estimate. + Cost = 100 * NumTraits::MulCost, PacketAccess = NormalRandomGenerator::PacketAccess }; }; @@ -807,6 +811,15 @@ class GaussianGenerator { array m_two_sigmas; }; +template +struct functor_traits > { + enum { + Cost = NumDims * (2 * NumTraits::AddCost + NumTraits::MulCost + + functor_traits >::Cost) + + functor_traits >::Cost, + PacketAccess = GaussianGenerator::PacketAccess + }; +}; } // end namespace internal } // end namespace Eigen -- cgit v1.2.3