diff options
author | Gael Guennebaud <g.gael@free.fr> | 2010-07-20 13:23:50 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2010-07-20 13:23:50 +0200 |
commit | d7fa09bf05e081649a1297cda7427df4434934d3 (patch) | |
tree | 5f68cc84c04778b52889735c15f43f563c9cfca8 /Eigen | |
parent | 4824ac136393b874567951c38cf19deb7a513c31 (diff) |
improve block-size heuristic
Diffstat (limited to 'Eigen')
-rw-r--r-- | Eigen/src/Core/products/GeneralBlockPanelKernel.h | 7 |
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 }; |