1386 DefaultDevice default_device;
1393 static const bool is_col_major = Layout ==
ColMajor;
1397 const int inner_dim_idx = is_col_major ? 0 : NumDims - 1;
1398 IndexType output_inner_dim_size =
target.
dims[inner_dim_idx];
1404 IndexType num_squeezed_dims = 0;
1405 for (
Index i = 1;
i < NumDims; ++
i) {
1406 const Index dim = is_col_major ?
i : NumDims -
i - 1;
1409 if (output_inner_dim_size == target_stride) {
1411 num_squeezed_dims++;
1419 array<BlockIteratorState, NumDims> it;
1422 for (
Index i = num_squeezed_dims;
i < NumDims - 1; ++
i) {
1423 const Index dim = is_col_major ?
i + 1 : NumDims -
i - 2;
1428 it[idx].output_span = it[idx].output_stride * (it[idx].size - 1);
1434 IndexType input_offset = 0;
1438 for (IndexType
i = 0;
i < output_size;
i += output_inner_dim_size) {
1441 target.
data + output_offset, output_inner_dim_size,
eval, input_offset);
1444 input_offset += output_inner_dim_size;
1447 for (
int j = 0;
j < idx; ++
j) {
1448 if (++it[
j].count < it[
j].
size) {
1449 output_offset += it[
j].output_stride;
1453 output_offset -= it[
j].output_span;
int i
Definition: BiCGSTAB_step_by_step.cpp:9
#define eigen_assert(x)
Definition: Macros.h:910
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
static Target target(const Dimensions &target_dims, const Dimensions &target_strides, Scalar *target_data, IndexType target_offset=0)
Definition: TensorBlock.h:1371
TensorEvaluator< const TensorBlockExpr, DefaultDevice > TensorBlockEvaluator
Definition: TensorBlock.h:1316
@ ColMajor
Definition: Constants.h:318
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool dimensions_match(Dims1 dims1, Dims2 dims2)
Definition: TensorDimensions.h:322
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
internal::nested_eval< T, 1 >::type eval(const T &xpr)
Definition: sparse_permutations.cpp:47
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex TotalSize() const
Definition: TensorDimensions.h:167
static constexpr int Layout
Definition: TensorEvaluator.h:46
static EIGEN_ALWAYS_INLINE void Run(Scalar *target, IndexType count, const Evaluator &eval, IndexType eval_offset)
Definition: TensorBlock.h:1324
Dimensions strides
Definition: TensorBlock.h:1366
Dimensions dims
Definition: TensorBlock.h:1365
Scalar * data
Definition: TensorBlock.h:1367
IndexType offset
Definition: TensorBlock.h:1368
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2