summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2017-06-18 20:51:11 +0200
committerCedric Nugteren <web@cedricnugteren.nl>2017-06-18 20:51:11 +0200
commit3070b502b5d63ce8c9770ca68ff88a3afa750a0d (patch)
treeb64370ceabfc019d87dff44df186706f30fbf840 /src
parent33ed1e5a06461ca4e4ec4a1c02b9a8b19432c5d2 (diff)
Fixed an overflow bug on 32-bit systems when chosing a GEMM kernel
Diffstat (limited to 'src')
-rw-r--r--src/routines/level3/xgemm.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/routines/level3/xgemm.cpp b/src/routines/level3/xgemm.cpp
index 658b22d0..30e5999c 100644
--- a/src/routines/level3/xgemm.cpp
+++ b/src/routines/level3/xgemm.cpp
@@ -102,7 +102,9 @@ void Xgemm<T>::DoGemm(const Layout layout,
TestMatrixC(c_one, c_two, c_buffer, c_offset, c_ld);
// Selects which version of GEMM to run
- const auto do_gemm_direct = (m * n * k < db_["XGEMM_MIN_INDIRECT_SIZE"]);
+ const auto m_n_k = static_cast<unsigned long>(m) * static_cast<unsigned long>(n) *
+ static_cast<unsigned long>(k);
+ const auto do_gemm_direct = (m_n_k < static_cast<unsigned long>(db_["XGEMM_MIN_INDIRECT_SIZE"]));
if (do_gemm_direct) { // for small sizes (single kernel)
GemmDirect(m, n, k, alpha,
a_buffer, a_offset, a_ld, b_buffer, b_offset, b_ld, beta,