gtsam
3rdparty
Eigen
bench
basicbenchmark.h
Go to the documentation of this file.
1
2
#ifndef EIGEN_BENCH_BASICBENCH_H
3
#define EIGEN_BENCH_BASICBENCH_H
4
5
enum
{
LazyEval
,
EarlyEval
,
OmpEval
};
6
7
template
<
int
Mode,
typename
MatrixType>
8
void
benchBasic_loop
(
const
MatrixType
&
I
,
MatrixType
&
m
,
int
iterations)
__attribute__
((noinline));
9
10
template
<
int
Mode,
typename
MatrixType>
11
void
benchBasic_loop
(
const
MatrixType
&
I
,
MatrixType
&
m
,
int
iterations)
12
{
13
for
(
int
a
= 0;
a
< iterations;
a
++)
14
{
15
if
(Mode==
LazyEval
)
16
{
17
asm
(
"#begin_bench_loop LazyEval"
);
18
if
(MatrixType::SizeAtCompileTime!=
Eigen::Dynamic
)
asm
(
"#fixedsize"
);
19
m
= (
I
+ 0.00005 * (
m
+
m
.lazyProduct(
m
))).eval();
20
}
21
else
if
(Mode==
OmpEval
)
22
{
23
asm
(
"#begin_bench_loop OmpEval"
);
24
if
(MatrixType::SizeAtCompileTime!=
Eigen::Dynamic
)
asm
(
"#fixedsize"
);
25
m
= (
I
+ 0.00005 * (
m
+
m
.lazyProduct(
m
))).eval();
26
}
27
else
28
{
29
asm
(
"#begin_bench_loop EarlyEval"
);
30
if
(MatrixType::SizeAtCompileTime!=
Eigen::Dynamic
)
asm
(
"#fixedsize"
);
31
m
=
I
+ 0.00005 * (
m
+
m
*
m
);
32
}
33
asm
(
"#end_bench_loop"
);
34
}
35
}
36
37
template
<
int
Mode,
typename
MatrixType>
38
double
benchBasic
(
const
MatrixType
&
mat
,
int
size
,
int
tries)
__attribute__
((noinline));
39
40
template
<
int
Mode,
typename
MatrixType>
41
double
benchBasic
(
const
MatrixType
&
mat
,
int
iterations,
int
tries)
42
{
43
const
int
rows
=
mat
.rows();
44
const
int
cols
=
mat
.cols();
45
46
MatrixType
I
(
rows
,
cols
);
47
MatrixType
m
(
rows
,
cols
);
48
49
initMatrix_identity
(
I
);
50
51
Eigen::BenchTimer
timer
;
52
for
(uint
t
=0;
t
<tries; ++
t
)
53
{
54
initMatrix_random
(
m
);
55
timer
.start();
56
benchBasic_loop<Mode>(
I
,
m
, iterations);
57
timer
.stop();
58
cerr <<
m
;
59
}
60
return
timer
.value();
61
};
62
63
#endif // EIGEN_BENCH_BASICBENCH_H
MatrixType
MatrixXf MatrixType
Definition:
benchmark-blocking-sizes.cpp:52
timer
static BenchTimer timer
Definition:
benchmark-blocking-sizes.cpp:31
OmpEval
@ OmpEval
Definition:
basicbenchmark.h:5
Eigen::internal::__attribute__
svint32_t PacketXi __attribute__((arm_sve_vector_bits(EIGEN_ARM64_SVE_VL)))
Definition:
SVE/PacketMath.h:33
mat
MatrixXf mat
Definition:
Tutorial_AdvancedInitialization_CommaTemporary.cpp:1
LazyEval
@ LazyEval
Definition:
basicbenchmark.h:5
rows
int rows
Definition:
Tutorial_commainit_02.cpp:1
size
Scalar Scalar int size
Definition:
benchVecAdd.cpp:17
EarlyEval
@ EarlyEval
Definition:
basicbenchmark.h:5
I
#define I
Definition:
main.h:112
initMatrix_identity
void initMatrix_identity(MatrixType &mat) __attribute__((noinline))
Definition:
BenchUtil.h:28
Eigen::Dynamic
const int Dynamic
Definition:
Constants.h:22
Eigen::BenchTimer
Definition:
BenchTimer.h:59
m
Matrix3f m
Definition:
AngleAxis_mimic_euler.cpp:1
a
ArrayXXi a
Definition:
Array_initializer_list_23_cxx11.cpp:1
initMatrix_random
void initMatrix_random(MatrixType &mat) __attribute__((noinline))
Definition:
BenchUtil.h:22
cols
int cols
Definition:
Tutorial_commainit_02.cpp:1
align_3::t
Point2 t(10, 10)
benchBasic_loop
void benchBasic_loop(const MatrixType &I, MatrixType &m, int iterations) __attribute__((noinline))
Definition:
basicbenchmark.h:11
benchBasic
double benchBasic(const MatrixType &mat, int size, int tries) __attribute__((noinline))
Definition:
basicbenchmark.h:41
gtsam
Author(s):
autogenerated on Sat Nov 16 2024 04:01:53