From ea20b50e635d5f0664b64a198a899b3c367ee133 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=9F=E5=92=8C=E6=9D=BE?= <32100330+Darkness303@users.noreply.github.com> Date: Thu, 27 Feb 2020 20:43:28 +0800 Subject: [PATCH] Solve the problem of core dumped in large-scale benchmark tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit E.g : when running test calse such as below in benchmark: ./zgemm3m.goto 100000 100000 100000 From : 100000 To : 100000 Step = 100000 Trans = 'N' Inc_x = 1 Inc_y = 1 Loops = 1 SIZE Flops 100000 : Segmentation fault (core dumped) Because i+j*m has exceeded the maximum range of int --- benchmark/gemm3m.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/benchmark/gemm3m.c b/benchmark/gemm3m.c index d39543585..f4048c436 100644 --- a/benchmark/gemm3m.c +++ b/benchmark/gemm3m.c @@ -181,9 +181,9 @@ int main(int argc, char *argv[]){ for(j = 0; j < m; j++){ for(i = 0; i < m * COMPSIZE; i++){ - a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; - b[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; - c[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; + a[(long)i + (long)j * (long)m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; + b[(long)i + (long)j * (long)m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; + c[(long)i + (long)j * (long)m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; } }