aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-07-20 13:23:50 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-07-20 13:23:50 +0200
commitd7fa09bf05e081649a1297cda7427df4434934d3 (patch)
tree5f68cc84c04778b52889735c15f43f563c9cfca8 /Eigen
parent4824ac136393b874567951c38cf19deb7a513c31 (diff)
improve block-size heuristic
Diffstat (limited to 'Eigen')
-rw-r--r--Eigen/src/Core/products/GeneralBlockPanelKernel.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/Eigen/src/Core/products/GeneralBlockPanelKernel.h b/Eigen/src/Core/products/GeneralBlockPanelKernel.h
index b794e6ac5..e3b9d25ef 100644
--- a/Eigen/src/Core/products/GeneralBlockPanelKernel.h
+++ b/Eigen/src/Core/products/GeneralBlockPanelKernel.h
@@ -112,13 +112,14 @@ void computeProductBlockingSizes(std::ptrdiff_t& k, std::ptrdiff_t& m, std::ptrd
// mc x kc blocks A' on the lhs. A' has to fit into L2 cache. Moreover, B' is processed
// per kc x nr vertical small panels where nr is the blocking size along the n dimension
// at the register level. For vectorization purpose, these small vertical panels are unpacked,
- // i.e., each coefficient is replicated to fit a packet. This small vertical panel has to
+ // e.g., each coefficient is replicated to fit a packet. This small vertical panel has to
// stay in L1 cache.
std::ptrdiff_t l1, l2;
+ typedef ei_gebp_traits<LhsScalar,RhsScalar> Traits;
enum {
- kdiv = KcFactor * 2 * ei_gebp_traits<LhsScalar,RhsScalar>::nr
- * ei_packet_traits<RhsScalar>::size * sizeof(RhsScalar),
+ kdiv = KcFactor * 2 * Traits::nr
+ * Traits::RhsProgress * sizeof(RhsScalar),
mr = ei_gebp_traits<LhsScalar,RhsScalar>::mr,
mr_mask = (0xffffffff/mr)*mr
};