aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/products
diff options
context:
space:
mode:
authorGravatar David Tellenbach <david.tellenbach@me.com>2020-09-30 01:26:07 +0200
committerGravatar David Tellenbach <david.tellenbach@me.com>2020-09-30 01:26:07 +0200
commit30960d485ec7e45b095d3ad206b2dbcc8bc835ba (patch)
tree4c68a390f02f8857410d2db9f4a13a027ef7c08e /Eigen/src/Core/products
parentf9d1500f748e9be83fc33b2b99a3c96dbe318ebc (diff)
Fix failure in GEBP kernel when compiling with OpenMP and FMA
Fixes #1995
Diffstat (limited to 'Eigen/src/Core/products')
-rw-r--r--Eigen/src/Core/products/GeneralBlockPanelKernel.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/Eigen/src/Core/products/GeneralBlockPanelKernel.h b/Eigen/src/Core/products/GeneralBlockPanelKernel.h
index e971b3339..216d1ad52 100644
--- a/Eigen/src/Core/products/GeneralBlockPanelKernel.h
+++ b/Eigen/src/Core/products/GeneralBlockPanelKernel.h
@@ -156,7 +156,8 @@ void evaluateProductBlockingSizesHeuristic(Index& k, Index& m, Index& n, Index n
// registers. However once the latency is hidden there is no point in
// increasing the value of k, so we'll cap it at 320 (value determined
// experimentally).
- const Index k_cache = (numext::mini<Index>)((l1-ksub)/kdiv, 320);
+ // To avoid that k vanishes, we make k_cache at least as big as kr
+ const Index k_cache = numext::maxi<Index>(kr, (numext::mini<Index>)((l1-ksub)/kdiv, 320));
if (k_cache < k) {
k = k_cache - (k_cache % kr);
eigen_internal_assert(k > 0);