10 #ifndef EIGEN_VISITOR_H
11 #define EIGEN_VISITOR_H
20 template <
typename Visitor,
typename Derived,
int UnrollCount,
22 bool ShortCircuitEvaluation =
false>
25 template <
typename Visitor,
bool ShortCircuitEvaluation = false>
30 template <
typename Visitor>
34 return visitor.done();
39 template <
typename Visitor,
typename Derived,
int UnrollCount,
bool Vectorize,
bool ShortCircuitEvaluation>
44 static constexpr
bool RowMajor = Derived::IsRowMajor;
45 static constexpr
int RowsAtCompileTime = Derived::RowsAtCompileTime;
46 static constexpr
int ColsAtCompileTime = Derived::ColsAtCompileTime;
50 constexpr
int InnerSizeAtCompileTime =
RowMajor ? ColsAtCompileTime : RowsAtCompileTime;
51 if (InnerSizeAtCompileTime < PacketSize)
return false;
52 return Vectorize && (InnerSizeAtCompileTime - (
K % InnerSizeAtCompileTime) >= PacketSize);
55 template <
int K = 0,
bool Empty = (K == UnrollCount), std::enable_if_t<Empty,
bool> = true>
58 template <
int K = 0,
bool Empty = (
K == UnrollCount),
bool Initialize = (
K == 0),
bool DoVectorOp = CanVectorize(
K),
59 std::enable_if_t<!Empty && Initialize && !DoVectorOp, bool> =
true>
65 template <
int K = 0,
bool Empty = (
K == UnrollCount),
bool Initialize = (
K == 0),
bool DoVectorOp = CanVectorize(
K),
66 std::enable_if_t<!Empty && !Initialize && !DoVectorOp, bool> =
true>
68 static constexpr
int R =
RowMajor ? (
K / ColsAtCompileTime) : (
K % RowsAtCompileTime);
69 static constexpr
int C =
RowMajor ? (
K % ColsAtCompileTime) : (
K / RowsAtCompileTime);
71 run<K + 1>(
mat, visitor);
74 template <
int K = 0,
bool Empty = (
K == UnrollCount),
bool Initialize = (
K == 0),
bool DoVectorOp = CanVectorize(
K),
75 std::enable_if_t<!Empty && Initialize && DoVectorOp, bool> =
true>
78 visitor.initpacket(
P, 0, 0);
79 run<PacketSize>(
mat, visitor);
82 template <
int K = 0,
bool Empty = (
K == UnrollCount),
bool Initialize = (
K == 0),
bool DoVectorOp = CanVectorize(
K),
83 std::enable_if_t<!Empty && !Initialize && DoVectorOp, bool> =
true>
85 static constexpr
int R =
RowMajor ? (
K / ColsAtCompileTime) : (
K % RowsAtCompileTime);
86 static constexpr
int C =
RowMajor ? (
K % ColsAtCompileTime) : (
K / RowsAtCompileTime);
88 visitor.packet(
P,
R,
C);
89 run<K + PacketSize>(
mat, visitor);
94 template <
typename Visitor,
typename Derived,
int UnrollCount,
bool Vectorize,
bool ShortCircuitEvaluation>
95 struct visitor_impl<Visitor, Derived, UnrollCount, Vectorize, true, ShortCircuitEvaluation> {
101 static constexpr
bool CanVectorize(
int K) {
return Vectorize && ((UnrollCount -
K) >= PacketSize); }
104 template <
int K = 0,
bool Empty = (K == UnrollCount), std::enable_if_t<Empty,
bool> = true>
108 template <
int K = 0,
bool Empty = (
K == UnrollCount),
bool Initialize = (
K == 0),
bool DoVectorOp = CanVectorize(
K),
109 std::enable_if_t<!Empty && Initialize && !DoVectorOp, bool> =
true>
112 run<1>(
mat, visitor);
116 template <
int K = 0,
bool Empty = (
K == UnrollCount),
bool Initialize = (
K == 0),
bool DoVectorOp = CanVectorize(
K),
117 std::enable_if_t<!Empty && !Initialize && !DoVectorOp, bool> =
true>
120 run<K + 1>(
mat, visitor);
124 template <
int K = 0,
bool Empty = (
K == UnrollCount),
bool Initialize = (
K == 0),
bool DoVectorOp = CanVectorize(
K),
125 std::enable_if_t<!Empty && Initialize && DoVectorOp, bool> =
true>
128 visitor.initpacket(
P, 0);
129 run<PacketSize>(
mat, visitor);
133 template <
int K = 0,
bool Empty = (
K == UnrollCount),
bool Initialize = (
K == 0),
bool DoVectorOp = CanVectorize(
K),
134 std::enable_if_t<!Empty && !Initialize && DoVectorOp, bool> =
true>
137 visitor.packet(
P,
K);
138 run<K + PacketSize>(
mat, visitor);
143 template <
typename Visitor,
typename Derived,
bool ShortCircuitEvaluation>
146 static constexpr
bool RowMajor = Derived::IsRowMajor;
151 if (innerSize == 0 || outerSize == 0)
return;
153 visitor.init(
mat.
coeff(0, 0), 0, 0);
155 for (
Index i = 1;
i < innerSize; ++
i) {
162 for (
Index j = 1;
j < outerSize;
j++) {
163 for (
Index i = 0;
i < innerSize; ++
i) {
174 template <
typename Visitor,
typename Derived,
bool ShortCircuitEvaluation>
180 static constexpr
bool RowMajor = Derived::IsRowMajor;
185 if (innerSize == 0 || outerSize == 0)
return;
188 if (innerSize < PacketSize) {
189 visitor.init(
mat.
coeff(0, 0), 0, 0);
193 visitor.initpacket(
p, 0, 0);
197 for (;
i + PacketSize - 1 < innerSize;
i += PacketSize) {
201 visitor.packet(
p,
r,
c);
204 for (;
i < innerSize; ++
i) {
211 for (
Index j = 1;
j < outerSize;
j++) {
213 for (;
i + PacketSize - 1 < innerSize;
i += PacketSize) {
217 visitor.packet(
p,
r,
c);
220 for (;
i < innerSize; ++
i) {
231 template <
typename Visitor,
typename Derived,
bool ShortCircuitEvaluation>
237 if (
size == 0)
return;
248 template <
typename Visitor,
typename Derived,
bool ShortCircuitEvaluation>
257 if (
size == 0)
return;
259 if (
size < PacketSize) {
264 visitor.initpacket(
p,
k);
268 for (;
k + PacketSize - 1 <
size;
k += PacketSize) {
270 visitor.packet(
p,
k);
281 template <
typename XprType>
291 static constexpr
bool IsRowMajor =
static_cast<bool>(XprType::IsRowMajor);
306 template <
typename Packet,
int Alignment = Unaligned>
312 template <
typename Packet,
int Alignment = XprAlignment>
314 return m_evaluator.template packet<Alignment, Packet>(index);
322 template <
typename Derived,
typename Visitor,
bool ShortCircuitEvaulation>
380 template <
typename Derived>
381 template <
typename Visitor>
392 template <
typename Derived>
406 template <
typename Scalar,
int NaNPropagation,
bool is_min = true>
413 template <
typename Scalar,
int NaNPropagation>
422 template <
typename Derived,
bool is_min,
int NaNPropagation,
444 this->
row = Derived::IsRowMajor ?
i :
i + max_idx;
445 this->
col = Derived::IsRowMajor ?
j + max_idx :
j;
454 this->
row = Derived::IsRowMajor ?
i :
i + max_idx;
455 this->
col = Derived::IsRowMajor ?
j + max_idx :
j;
461 template <
typename Derived,
bool is_min>
483 this->
row = Derived::IsRowMajor ?
i :
i + max_idx;
484 this->
col = Derived::IsRowMajor ?
j + max_idx :
j;
501 this->
row = Derived::IsRowMajor ?
i :
i + max_idx;
502 this->
col = Derived::IsRowMajor ?
j + max_idx :
j;
508 template <
typename Derived,
bool is_min,
int NaNPropagation>
532 this->
row = Derived::IsRowMajor ?
i :
i + max_idx;
533 this->
col = Derived::IsRowMajor ?
j + max_idx :
j;
545 this->
row = Derived::IsRowMajor ?
i :
i + max_idx;
546 this->
col = Derived::IsRowMajor ?
j + max_idx :
j;
550 template <
typename Derived,
bool is_min,
int NaNPropagation>
556 template <
typename Scalar>
572 template <
typename Scalar>
577 template <
typename Scalar>
595 template <
typename Scalar>
600 template <
typename Scalar>
610 return static_cast<Index>(num_true);
625 template <
typename Scalar>
648 template <
typename Derived>
649 template <
int NaNPropagation,
typename IndexType>
651 IndexType* colId)
const {
655 this->visit(minVisitor);
656 *rowId = minVisitor.
row;
657 if (colId) *colId = minVisitor.
col;
658 return minVisitor.
res;
672 template <
typename Derived>
673 template <
int NaNPropagation,
typename IndexType>
679 this->visit(minVisitor);
680 *index = IndexType((RowsAtCompileTime == 1) ? minVisitor.
col : minVisitor.
row);
681 return minVisitor.
res;
695 template <
typename Derived>
696 template <
int NaNPropagation,
typename IndexType>
698 IndexType* colPtr)
const {
702 this->visit(maxVisitor);
703 *rowPtr = maxVisitor.
row;
704 if (colPtr) *colPtr = maxVisitor.
col;
705 return maxVisitor.
res;
719 template <
typename Derived>
720 template <
int NaNPropagation,
typename IndexType>
726 this->visit(maxVisitor);
727 *index = (RowsAtCompileTime == 1) ? maxVisitor.
col : maxVisitor.
row;
728 return maxVisitor.
res;
738 template <
typename Derived>
751 template <
typename Derived>
764 template <
typename Derived>
773 template <
typename Derived>
775 return derived().cwiseTypedNotEqual(derived()).any();
782 template <
typename Derived>
784 return derived().array().isFiniteTyped().all();
int i
Definition: BiCGSTAB_step_by_step.cpp:9
#define EIGEN_NOEXCEPT
Definition: Macros.h:1267
#define EIGEN_CONSTEXPR
Definition: Macros.h:758
#define EIGEN_PREDICT_FALSE(x)
Definition: Macros.h:1179
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define eigen_assert(x)
Definition: Macros.h:910
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
#define EIGEN_UNROLLING_LIMIT
Definition: Settings.h:23
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE)
Definition: StaticAssert.h:36
@ R
Definition: StatisticsVector.h:21
float * p
Definition: Tutorial_Map_using.cpp:9
int rows
Definition: Tutorial_commainit_02.cpp:1
int cols
Definition: Tutorial_commainit_02.cpp:1
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
Scalar * b
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
Generic expression where a coefficient-wise binary operator is applied to two expressions.
Definition: CwiseBinaryOp.h:79
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: CwiseBinaryOp.h:116
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: CwiseBinaryOp.h:111
Base class for all dense matrices, vectors, and arrays.
Definition: DenseBase.h:44
EIGEN_DEVICE_FUNC bool all() const
Definition: Visitor.h:739
EIGEN_DEVICE_FUNC bool allFinite() const
Definition: Visitor.h:783
EIGEN_DEVICE_FUNC bool hasNaN() const
Definition: Visitor.h:774
EIGEN_DEVICE_FUNC internal::traits< Derived >::Scalar maxCoeff() const
internal::traits< Derived >::Scalar Scalar
Definition: DenseBase.h:62
EIGEN_DEVICE_FUNC void visit(Visitor &func) const
Definition: Visitor.h:382
EIGEN_DEVICE_FUNC internal::traits< Derived >::Scalar minCoeff() const
EIGEN_DEVICE_FUNC bool any() const
Definition: Visitor.h:752
EIGEN_DEVICE_FUNC Index count() const
Definition: Visitor.h:765
Index size() const
Definition: SparseMatrixBase.h:187
const Derived & derived() const
Definition: SparseMatrixBase.h:144
Scalar coeff(Index row, Index col) const
Definition: SparseMatrix.h:211
Index cols() const
Definition: SparseMatrix.h:161
Index rows() const
Definition: SparseMatrix.h:159
Definition: Visitor.h:282
static constexpr bool PacketAccess
Definition: Visitor.h:289
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
Definition: Visitor.h:311
evaluator< XprType > Evaluator
Definition: Visitor.h:284
XprType::Scalar Scalar
Definition: Visitor.h:285
static constexpr bool LinearAccess
Definition: Visitor.h:290
static constexpr int ColsAtCompileTime
Definition: Visitor.h:293
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packet(Index row, Index col) const
Definition: Visitor.h:307
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index size() const EIGEN_NOEXCEPT
Definition: Visitor.h:301
EIGEN_DEVICE_FUNC visitor_evaluator(const XprType &xpr)
Definition: Visitor.h:297
static constexpr int RowsAtCompileTime
Definition: Visitor.h:292
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: Visitor.h:299
std::remove_const_t< typename XprType::CoeffReturnType > CoeffReturnType
Definition: Visitor.h:287
static constexpr bool IsRowMajor
Definition: Visitor.h:291
const XprType & m_xpr
Definition: Visitor.h:319
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: Visitor.h:300
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const
Definition: Visitor.h:303
static constexpr int CoeffReadCost
Definition: Visitor.h:295
Evaluator m_evaluator
Definition: Visitor.h:318
static constexpr int XprAlignment
Definition: Visitor.h:294
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packet(Index index) const
Definition: Visitor.h:313
typename packet_traits< Scalar >::type Packet
Definition: Visitor.h:286
Data class to send an empty class over MPI.
Definition: MpiDataClass.h:110
Definition: matrices.h:74
@ PropagateNumbers
Definition: Constants.h:344
@ RowMajor
Definition: Constants.h:320
const unsigned int PacketAccessBit
Definition: Constants.h:97
const unsigned int LinearAccessBit
Definition: Constants.h:133
const Scalar * a
Definition: level2_cplx_impl.h:32
char char char int int * k
Definition: level2_impl.h:374
EIGEN_STRONG_INLINE Packet8f pzero(const Packet8f &)
Definition: AVX/PacketMath.h:774
EIGEN_STRONG_INLINE bool predux_any(const Packet4f &x)
Definition: AltiVec/PacketMath.h:2751
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type predux_max(const Packet &a)
Definition: GenericPacketMath.h:1258
EIGEN_DEVICE_FUNC Packet pnot(const Packet &a)
Definition: GenericPacketMath.h:572
EIGEN_STRONG_INLINE Packet2cf preverse(const Packet2cf &a)
Definition: AltiVec/Complex.h:303
EIGEN_STRONG_INLINE Packet8h ptrue(const Packet8h &a)
Definition: AVX/PacketMath.h:2263
EIGEN_STRONG_INLINE Packet8h pandnot(const Packet8h &a, const Packet8h &b)
Definition: AVX/PacketMath.h:2323
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type predux(const Packet &a)
Definition: GenericPacketMath.h:1232
EIGEN_STRONG_INLINE Packet2cf pcmp_eq(const Packet2cf &a, const Packet2cf &b)
Definition: AltiVec/Complex.h:353
EIGEN_STRONG_INLINE Packet8h pand(const Packet8h &a, const Packet8h &b)
Definition: AVX/PacketMath.h:2319
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool() isnan(const Eigen::bfloat16 &h)
Definition: BFloat16.h:742
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
squared absolute value
Definition: GlobalFunctions.h:87
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
const int Dynamic
Definition: Constants.h:25
double P
Uniform pressure.
Definition: TwenteMeshGluing.cpp:77
double K
Wave number.
Definition: sphere_scattering.cc:115
int c
Definition: calibrate.py:100
Definition: Eigen_Colamd.h:49
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:217
Definition: Visitor.h:557
EIGEN_DEVICE_FUNC void operator()(const Scalar &value, Index, Index)
Definition: Visitor.h:565
EIGEN_DEVICE_FUNC void init(const Scalar &value, Index, Index)
Definition: Visitor.h:560
EIGEN_DEVICE_FUNC void initpacket(const Packet &p, Index)
Definition: Visitor.h:564
EIGEN_DEVICE_FUNC void init(const Scalar &value, Index)
Definition: Visitor.h:561
EIGEN_DEVICE_FUNC void packet(const Packet &p, Index, Index)
Definition: Visitor.h:567
typename packet_traits< Scalar >::type Packet
Definition: Visitor.h:559
EIGEN_DEVICE_FUNC void packet(const Packet &p, Index)
Definition: Visitor.h:568
EIGEN_DEVICE_FUNC bool all_predux(const Packet &p) const
Definition: Visitor.h:562
EIGEN_DEVICE_FUNC void initpacket(const Packet &p, Index, Index)
Definition: Visitor.h:563
bool res
Definition: Visitor.h:570
EIGEN_DEVICE_FUNC void operator()(const Scalar &value, Index)
Definition: Visitor.h:566
EIGEN_DEVICE_FUNC bool done() const
Definition: Visitor.h:569
Definition: Visitor.h:578
EIGEN_DEVICE_FUNC bool done() const
Definition: Visitor.h:592
EIGEN_DEVICE_FUNC bool any_predux(const Packet &p) const
Definition: Visitor.h:583
EIGEN_DEVICE_FUNC void operator()(const Scalar &value, Index, Index)
Definition: Visitor.h:588
typename packet_traits< Scalar >::type Packet
Definition: Visitor.h:580
EIGEN_DEVICE_FUNC void init(const Scalar &value, Index, Index)
Definition: Visitor.h:581
EIGEN_DEVICE_FUNC void initpacket(const Packet &p, Index, Index)
Definition: Visitor.h:586
bool res
Definition: Visitor.h:593
EIGEN_DEVICE_FUNC void operator()(const Scalar &value, Index)
Definition: Visitor.h:589
EIGEN_DEVICE_FUNC void packet(const Packet &p, Index, Index)
Definition: Visitor.h:590
EIGEN_DEVICE_FUNC void init(const Scalar &value, Index)
Definition: Visitor.h:582
EIGEN_DEVICE_FUNC void initpacket(const Packet &p, Index)
Definition: Visitor.h:587
EIGEN_DEVICE_FUNC void packet(const Packet &p, Index)
Definition: Visitor.h:591
Base class to implement min and max visitors.
Definition: Visitor.h:393
EIGEN_DEVICE_FUNC void init(const Scalar &value, Index i, Index j)
Definition: Visitor.h:399
EIGEN_DEVICE_FUNC coeff_visitor()
Definition: Visitor.h:395
Scalar res
Definition: Visitor.h:398
Index col
Definition: Visitor.h:397
Index row
Definition: Visitor.h:397
Derived::Scalar Scalar
Definition: Visitor.h:396
Definition: Visitor.h:601
typename packet_traits< Scalar >::type Packet
Definition: Visitor.h:603
EIGEN_DEVICE_FUNC void operator()(const Scalar &value, Index, Index)
Definition: Visitor.h:614
EIGEN_DEVICE_FUNC void init(const Scalar &value, Index)
Definition: Visitor.h:605
EIGEN_DEVICE_FUNC void init(const Scalar &value, Index, Index)
Definition: Visitor.h:604
EIGEN_DEVICE_FUNC void operator()(const Scalar &value, Index)
Definition: Visitor.h:617
EIGEN_DEVICE_FUNC void packet(const Packet &p, Index, Index)
Definition: Visitor.h:620
Index result_type
Definition: Visitor.h:602
EIGEN_DEVICE_FUNC void initpacket(const Packet &p, Index, Index)
Definition: Visitor.h:612
Index res
Definition: Visitor.h:622
EIGEN_DEVICE_FUNC Index count_redux(const Packet &p) const
Definition: Visitor.h:606
EIGEN_DEVICE_FUNC void packet(const Packet &p, Index)
Definition: Visitor.h:621
EIGEN_DEVICE_FUNC void initpacket(const Packet &p, Index)
Definition: Visitor.h:613
typename Derived::Scalar Scalar
Definition: Visitor.h:552
Definition: XprHelper.h:205
@ PacketAccess
Definition: XprHelper.h:206
@ Cost
Definition: XprHelper.h:206
typename packet_traits< Scalar >::type Packet
Definition: Visitor.h:511
Derived::Scalar Scalar
Definition: Visitor.h:510
EIGEN_DEVICE_FUNC void packet(const Packet &p, Index i, Index j)
Definition: Visitor.h:522
EIGEN_DEVICE_FUNC void initpacket(const Packet &p, Index i, Index j)
Definition: Visitor.h:536
EIGEN_DEVICE_FUNC void operator()(const Scalar &value, Index i, Index j)
Definition: Visitor.h:514
Derived::Scalar Scalar
Definition: Visitor.h:463
EIGEN_DEVICE_FUNC void operator()(const Scalar &value, Index i, Index j)
Definition: Visitor.h:467
typename packet_traits< Scalar >::type Packet
Definition: Visitor.h:464
EIGEN_DEVICE_FUNC void packet(const Packet &p, Index i, Index j)
Definition: Visitor.h:474
Definition: Visitor.h:424
typename packet_traits< Scalar >::type Packet
Definition: Visitor.h:426
EIGEN_DEVICE_FUNC void packet(const Packet &p, Index i, Index j)
Definition: Visitor.h:437
typename Derived::Scalar Scalar
Definition: Visitor.h:425
EIGEN_DEVICE_FUNC void initpacket(const Packet &p, Index i, Index j)
Definition: Visitor.h:448
static constexpr Index PacketSize
Definition: Visitor.h:428
EIGEN_DEVICE_FUNC void operator()(const Scalar &value, Index i, Index j)
Definition: Visitor.h:430
static EIGEN_DEVICE_FUNC Scalar predux(const Packet &p)
Definition: Visitor.h:417
static EIGEN_DEVICE_FUNC bool compare(Scalar a, Scalar b)
Definition: Visitor.h:416
packet_traits< Scalar >::type Packet
Definition: Visitor.h:415
Definition: Visitor.h:407
static EIGEN_DEVICE_FUNC bool compare(Scalar a, Scalar b)
Definition: Visitor.h:409
static EIGEN_DEVICE_FUNC Scalar predux(const Packet &p)
Definition: Visitor.h:410
packet_traits< Scalar >::type Packet
Definition: Visitor.h:408
Definition: GenericPacketMath.h:108
@ size
Definition: GenericPacketMath.h:113
static EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool run(const Visitor &visitor)
Definition: Visitor.h:33
static EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool run(const Visitor &)
Definition: Visitor.h:28
Definition: ForwardDeclarations.h:21
Definition: Visitor.h:323
static constexpr bool Unroll
Definition: Visitor.h:348
static constexpr int PacketSize
Definition: Visitor.h:338
static constexpr int ColsAtCompileTime
Definition: Visitor.h:330
static constexpr int UnrollCost
Definition: Visitor.h:347
static constexpr int ScalarOps
Definition: Visitor.h:343
static constexpr bool Vectorize
Definition: Visitor.h:336
static constexpr int OuterSizeAtCompileTime
Definition: Visitor.h:332
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(const DenseBase< Derived > &mat, Visitor &visitor)
Definition: Visitor.h:353
typename DenseBase< Derived >::Scalar Scalar
Definition: Visitor.h:325
static constexpr bool LinearAccess
Definition: Visitor.h:334
static constexpr int RowsAtCompileTime
Definition: Visitor.h:329
static constexpr int TotalOps
Definition: Visitor.h:345
static constexpr int InnerSizeAtCompileTime
Definition: Visitor.h:331
static constexpr int UnrollCount
Definition: Visitor.h:349
static constexpr int SizeAtCompileTime
Definition: Visitor.h:328
static constexpr int VectorOps
Definition: Visitor.h:339
static constexpr bool IsRowMajor
Definition: Visitor.h:327
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(const Derived &mat, Visitor &visitor)
Definition: Visitor.h:148
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(const Derived &mat, Visitor &visitor)
Definition: Visitor.h:235
typename packet_traits< Scalar >::type Packet
Definition: Visitor.h:177
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(const Derived &mat, Visitor &visitor)
Definition: Visitor.h:182
typename Derived::Scalar Scalar
Definition: Visitor.h:176
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(const Derived &mat, Visitor &visitor)
Definition: Visitor.h:255
typename Derived::Scalar Scalar
Definition: Visitor.h:250
typename packet_traits< Scalar >::type Packet
Definition: Visitor.h:251
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(const Derived &mat, Visitor &visitor)
Definition: Visitor.h:110
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(const Derived &, Visitor &)
Definition: Visitor.h:105
typename Derived::Scalar Scalar
Definition: Visitor.h:97
typename packet_traits< Scalar >::type Packet
Definition: Visitor.h:98
static constexpr bool CanVectorize(int K)
Definition: Visitor.h:101
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(const Derived &, Visitor &)
Definition: Visitor.h:56
typename packet_traits< Scalar >::type Packet
Definition: Visitor.h:43
static constexpr bool CanVectorize(int K)
Definition: Visitor.h:49
typename Derived::Scalar Scalar
Definition: Visitor.h:42
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(const Derived &mat, Visitor &visitor)
Definition: Visitor.h:60
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2
void run(const string &dir_name, LinearSolver *linear_solver_pt, const unsigned nel_1d, bool mess_up_order)
Definition: two_d_poisson_compare_solvers.cc:317