150 const size_t combined_three_matrices_sizes =
152 (productsizes.k * productsizes.m + productsizes.k * productsizes.n + productsizes.m * productsizes.n);
157 const size_t unlikely_large_cache_size = 64 << 20;
161 const size_t matrix_pool_size = 1 + working_set_size / combined_three_matrices_sizes;
167 for (
size_t i = 0;
i < matrix_pool_size;
i++) {
175 int iters_at_a_time = 1;
176 float time_per_iter = 0.0f;
177 size_t matrix_index = 0;
179 double starttime =
timer.getCpuTime();
180 for (
int i = 0;
i < iters_at_a_time;
i++) {
181 dst[matrix_index].noalias() = lhs[matrix_index] * rhs[matrix_index];
183 if (matrix_index == matrix_pool_size) {
187 double endtime =
timer.getCpuTime();
189 const float timing = float(endtime - starttime);
192 time_per_iter = timing / iters_at_a_time;
196 iters_at_a_time *= 2;
203 gflops = 2
e-9 * productsizes.k * productsizes.m * productsizes.n / time_per_iter;
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Array< double, 1, 3 > e(1./3., 0.5, 2.)
size_t min_working_set_size
Definition: benchmark-blocking-sizes.cpp:44
MatrixType::Scalar Scalar
Definition: benchmark-blocking-sizes.cpp:53
bool eigen_use_specific_block_size
Definition: benchmark-blocking-sizes.cpp:18
int eigen_block_size_n
Definition: benchmark-blocking-sizes.cpp:19
int eigen_block_size_k
Definition: benchmark-blocking-sizes.cpp:19
const float min_accurate_time
Definition: benchmark-blocking-sizes.cpp:41
int eigen_block_size_m
Definition: benchmark-blocking-sizes.cpp:19
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
double Zero
Definition: pseudosolid_node_update_elements.cc:35
Definition: analyze-blocking-sizes.cpp:45