diff options
author | Benoit Jacob <benoitjacob@google.com> | 2015-02-25 12:37:14 -0500 |
---|---|---|
committer | Benoit Jacob <benoitjacob@google.com> | 2015-02-25 12:37:14 -0500 |
commit | 692136350becc4e0b4dce077c2f1e201f18af62d (patch) | |
tree | 482d659c5f66a50c0d3b85a04da332fa9fe8e0d6 /Eigen | |
parent | 531fa9de77764831a6c1eae2ea7c9b02851fe1e6 (diff) |
So I extensively measured the impact of the offset in this prefetch. I tried offset values from 0 to 128 (on this float* pointer, so implicitly times 4 bytes).
On x86, I tested a Sandy Bridge with AVX with 12M cache and a Haswell with AVX+FMA with 6M cache on MatrixXf sizes up to 2400.
I could not see any significant impact of this offset.
On Nexus 5, the offset has a slight effect: values around 32 (times sizeof float) are worst. Anything else is the same: the current 64 (8*pk), or... 0.
So let's just go with 0!
Note that we needed a fix anyway for not accounting for the value of RhsProgress. 0 nicely avoids the issue altogether!
Diffstat (limited to 'Eigen')
-rw-r--r-- | Eigen/src/Core/products/GeneralBlockPanelKernel.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Eigen/src/Core/products/GeneralBlockPanelKernel.h b/Eigen/src/Core/products/GeneralBlockPanelKernel.h index 93bd6ab53..0890bc690 100644 --- a/Eigen/src/Core/products/GeneralBlockPanelKernel.h +++ b/Eigen/src/Core/products/GeneralBlockPanelKernel.h @@ -878,7 +878,7 @@ void gebp_kernel<LhsScalar,RhsScalar,Index,DataMapper,mr,nr,ConjugateLhs,Conjuga EIGEN_ASM_COMMENT("end step of gebp micro kernel 3pX4"); \ } while(false) - internal::prefetch(blB + 8 * pk); /* Bug 953 */ + internal::prefetch(blB); EIGEN_GEBP_ONESTEP(0); EIGEN_GEBP_ONESTEP(1); EIGEN_GEBP_ONESTEP(2); |