From 6042155a4b8d8fad3e5bacdb8fa3fe2f072b80fe Mon Sep 17 00:00:00 2001 From: Pjotr Prins Date: Wed, 6 Dec 2017 08:49:48 +0000 Subject: Integer overflow checking for matrix dgemm and adding path for OpenBlas include files --- src/fastblas.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/fastblas.cpp') diff --git a/src/fastblas.cpp b/src/fastblas.cpp index 20456ef..7b10852 100644 --- a/src/fastblas.cpp +++ b/src/fastblas.cpp @@ -124,6 +124,21 @@ void fast_cblas_dgemm(const enum CBLAS_ORDER Order, } #endif // NDEBUG + // Check for (integer) overflows + enforce(M>0); + enforce(N>0); + enforce(K>0); + + blasint mi = M; + blasint ni = N; + blasint ki = K; + auto x1 = mi * ki; + enforce_msg(x1 / mi == ki, "matrix integer overflow - please use long int"); + auto x2 = ni * ki; + enforce_msg(x2 / ni == ki, "matrix integer overflow - please use long int"); + auto x3 = mi * ni; + enforce_msg(x3 / mi == ni, "matrix integer overflow - please use long int"); + cblas_dgemm(Order,TransA,TransB,M,N,K,alpha,A,lda,B,ldb,beta,C,ldc); #ifndef NDEBUG -- cgit v1.2.3