From c55ecfd82062c1cd6b1e1d6c53319e99d65d3b0f Mon Sep 17 00:00:00 2001 From: Luke Iwanski Date: Wed, 21 Dec 2016 15:42:51 +0000 Subject: Fix for auto appearing in functor template argument. --- unsupported/Eigen/CXX11/src/Tensor/TensorSyclRun.h | 42 +++++++++++----------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorSyclRun.h b/unsupported/Eigen/CXX11/src/Tensor/TensorSyclRun.h index 11e4ddc56..32930be26 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorSyclRun.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorSyclRun.h @@ -26,25 +26,25 @@ namespace Eigen { namespace TensorSycl { +template struct ExecExprFunctorKernel{ + typedef typename internal::createPlaceHolderExpression::Type PlaceHolderExpr; - template struct ExecExprFunctorKernel{ - typedef typename internal::createPlaceHolderExpression::Type PlaceHolderExpr; + typedef typename Expr::Index Index; + FunctorExpr functors; + TupleType tuple_of_accessors; + Index range; + ExecExprFunctorKernel(Index range_, FunctorExpr functors_, TupleType tuple_of_accessors_) + : functors(functors_), tuple_of_accessors(tuple_of_accessors_), range(range_){} + void operator()(cl::sycl::nd_item<1> itemID) { + typedef typename internal::ConvertToDeviceExpression::Type DevExpr; + auto device_expr =internal::createDeviceExpression(functors, tuple_of_accessors); + auto device_evaluator = Eigen::TensorEvaluator(device_expr.expr, Eigen::DefaultDevice()); + typename DevExpr::Index gId = static_cast(itemID.get_global_linear_id()); + if (gId < range) + device_evaluator.evalScalar(gId); + } +}; - typedef typename Expr::Index Index; - FunctorExpr functors; - TupleType tuple_of_accessors; - Index range; - ExecExprFunctorKernel(Index range_, FunctorExpr functors_, TupleType tuple_of_accessors_) - : functors(functors_), tuple_of_accessors(tuple_of_accessors_), range(range_){} - void operator()(cl::sycl::nd_item<1> itemID) { - typedef typename internal::ConvertToDeviceExpression::Type DevExpr; - auto device_expr =internal::createDeviceExpression(functors, tuple_of_accessors); - auto device_evaluator = Eigen::TensorEvaluator(device_expr.expr, Eigen::DefaultDevice()); - typename DevExpr::Index gId = static_cast(itemID.get_global_linear_id()); - if (gId < range) - device_evaluator.evalScalar(gId); - } - }; /// The run function in tensor sycl convert the expression tree to a buffer /// based expression tree; /// creates the expression tree for the device with accessor to buffers; @@ -54,12 +54,12 @@ void run(Expr &expr, Dev &dev) { Eigen::TensorEvaluator evaluator(expr, dev); const bool needs_assign = evaluator.evalSubExprsIfNeeded(NULL); if (needs_assign) { - auto functors = internal::extractFunctors(evaluator); - typedef decltype(functors) FunctorExpr; + typedef decltype(internal::extractFunctors(evaluator)) FunctorExpr; + FunctorExpr functors = internal::extractFunctors(evaluator); dev.sycl_queue().submit([&](cl::sycl::handler &cgh) { // create a tuple of accessors from Evaluator - auto tuple_of_accessors = internal::createTupleOfAccessors(cgh, evaluator); - typedef decltype(tuple_of_accessors) TupleType; + typedef decltype(internal::createTupleOfAccessors(cgh, evaluator)) TupleType; + TupleType tuple_of_accessors = internal::createTupleOfAccessors(cgh, evaluator); typename Expr::Index range, GRange, tileSize; dev.parallel_for_setup(static_cast(evaluator.dimensions().TotalSize()), tileSize, range, GRange); -- cgit v1.2.3