aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/bench_gemm.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-06-21 12:07:05 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-06-21 12:07:05 +0200
commit4cd38b333cb34ea5f8cbaf5a1e8471311f0cd1fa (patch)
tree449eb56a428ac810f4ffcd90624af9a0ed317bb3 /bench/bench_gemm.cpp
parente54635da11f3c7c3daf2a06fbe64928d60aa900e (diff)
make bench_gemm print out the queried cache sizes
Diffstat (limited to 'bench/bench_gemm.cpp')
-rw-r--r--bench/bench_gemm.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/bench/bench_gemm.cpp b/bench/bench_gemm.cpp
index 7b12736da..ee34e6ddc 100644
--- a/bench/bench_gemm.cpp
+++ b/bench/bench_gemm.cpp
@@ -57,6 +57,7 @@ void blas_gemm(const MatrixXd& a, const MatrixXd& b, MatrixXd& c)
#endif
+template<typename M>
void gemm(const M& a, const M& b, M& c)
{
c.noalias() += a * b;
@@ -64,6 +65,9 @@ void gemm(const M& a, const M& b, M& c)
int main(int argc, char ** argv)
{
+ std::cout << "L1 cache size = " << ei_queryL1CacheSize()/1024 << " KB\n";
+ std::cout << "L2/L3 cache size = " << ei_queryTopLevelCacheSize()/1024 << " KB\n";
+
int rep = 1; // number of repetitions per try
int tries = 5; // number of tries, we keep the best
@@ -90,11 +94,6 @@ int main(int argc, char ** argv)
if(cache_size>0)
setCpuCacheSizes(cache_size,32*cache_size);
- std::cout << "Matrix size = " << s << "\n";
- std::ptrdiff_t cm, cn, ck;
- getBlockingSizes<Scalar>(ck, cm, cn);
- std::cout << "blocking size = " << cm << " x " << ck << "\n";
-
int m = s;
int n = s;
int p = s;
@@ -102,6 +101,11 @@ int main(int argc, char ** argv)
M b(n,p); b.setRandom();
M c(m,p); c.setOnes();
+ std::cout << "Matrix sizes = " << m << "x" << p << " * " << p << "x" << n << "\n";
+ std::ptrdiff_t cm, cn, ck;
+ getBlockingSizes<Scalar>(ck, cm, cn);
+ std::cout << "blocking size = " << cm << " x " << ck << "\n";
+
M r = c;
// check the parallel product is correct