From d7fa09bf05e081649a1297cda7427df4434934d3 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 20 Jul 2010 13:23:50 +0200 Subject: [PATCH] improve block-size heuristic --- Eigen/src/Core/products/GeneralBlockPanelKernel.h | 7 ++++--- 1 file 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 Traits; enum { - kdiv = KcFactor * 2 * ei_gebp_traits::nr - * ei_packet_traits::size * sizeof(RhsScalar), + kdiv = KcFactor * 2 * Traits::nr + * Traits::RhsProgress * sizeof(RhsScalar), mr = ei_gebp_traits::mr, mr_mask = (0xffffffff/mr)*mr };