mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-03-07 18:27:40 +08:00
improve block-size heuristic
This commit is contained in:
parent
4824ac1363
commit
d7fa09bf05
@ -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
|
// 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
|
// 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,
|
// 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.
|
// stay in L1 cache.
|
||||||
std::ptrdiff_t l1, l2;
|
std::ptrdiff_t l1, l2;
|
||||||
|
|
||||||
|
typedef ei_gebp_traits<LhsScalar,RhsScalar> Traits;
|
||||||
enum {
|
enum {
|
||||||
kdiv = KcFactor * 2 * ei_gebp_traits<LhsScalar,RhsScalar>::nr
|
kdiv = KcFactor * 2 * Traits::nr
|
||||||
* ei_packet_traits<RhsScalar>::size * sizeof(RhsScalar),
|
* Traits::RhsProgress * sizeof(RhsScalar),
|
||||||
mr = ei_gebp_traits<LhsScalar,RhsScalar>::mr,
|
mr = ei_gebp_traits<LhsScalar,RhsScalar>::mr,
|
||||||
mr_mask = (0xffffffff/mr)*mr
|
mr_mask = (0xffffffff/mr)*mr
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user