From 413814fe70608a1b73e5a3528758c323622af07e Mon Sep 17 00:00:00 2001 From: Dipal M Zambare Date: Wed, 19 May 2021 00:07:39 +0530 Subject: [PATCH] Fixed crash issue in bench utility for gemv API - incx and incy was not considered while allocating memory for x and y vectors. - Updated test data set AMD-Internal: [CPUPL-1578] Change-Id: I374a75aaa66f951f0f8353434d94c135d09b2f05 --- bench/bench_gemv.c | 38 ++++++++++++++++++----- bench/inputgemv.txt | 75 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 104 insertions(+), 9 deletions(-) diff --git a/bench/bench_gemv.c b/bench/bench_gemv.c index e9f468159..acc459800 100755 --- a/bench/bench_gemv.c +++ b/bench/bench_gemv.c @@ -156,7 +156,7 @@ int main( int argc, char** argv ) // // Input No Transpose With Transpose // - // A mxn nxm * + // A mxn mxn * // x nx1 mx1 // y mx1 nx1 // @@ -168,17 +168,39 @@ int main( int argc, char** argv ) bli_obj_create(dt, m, n, 1, lda, &a); if (transa == BLIS_NO_TRANSPOSE) { - bli_obj_create(dt, n, 1, 0, 0, &x); - bli_obj_create(dt, m, 1, 0, 0, &y); - bli_obj_create(dt, m, 1, 0, 0, &y_save); + // For non transpose operation + // Vector x has n entries and vector y as m entries + // + // However, the actual buffer size needs to consider + // the strids as well + // + // buffer size for x = (1+(n-1)*abs(incx)) + // buffer size for y = (1+(m-1)*abs(incy)) + // + // We achieve this by passing incx and incy as row-strides + // to bli_obj_create function. + bli_obj_create(dt, n, 1, incx, 1, &x); + bli_obj_create(dt, m, 1, incy, 1, &y); + bli_obj_create(dt, m, 1, incy, 1, &y_save); } else { - bli_obj_create(dt, m, 1, 0, 0, &x); - bli_obj_create(dt, n, 1, 0, 0, &y); - bli_obj_create(dt, n, 1, 0, 0, &y_save); + // For transpose operation + // Vector x has m entries and vector y as n entries + // + // However, the actual buffer size needs to consider + // the strids as well + // + // buffer size for x = (1+(m-1)*abs(incx)) + // buffer size for y = (1+(n-1)*abs(incy)) + // + // We achieve this by passing incx and incy as row-strides + // to bli_obj_create function. + bli_obj_create(dt, m, 1, incx, 1, &x); + bli_obj_create(dt, n, 1, incy, 1, &y); + bli_obj_create(dt, n, 1, incy, 1, &y_save); } - + #ifdef AOCL_MATRIX_INITIALISATION bli_randm( &a ); bli_randm( &x ); diff --git a/bench/inputgemv.txt b/bench/inputgemv.txt index 4e5c115fc..559ca204c 100644 --- a/bench/inputgemv.txt +++ b/bench/inputgemv.txt @@ -19,4 +19,77 @@ dgemv_:173: D T 1000 7 -1.000000 0.000000 30000 1 1.000000 0.000000 1 dgemv_:173: D T 10000 15 -1.000000 0.000000 30000 1 1.000000 0.000000 1 dgemv_:173: D T 1000 7 -1.000000 0.000000 10000 1 1.000000 0.000000 10000 dgemv_:173: D T 1000 7 -1.000000 0.000000 30000 1 1.000000 0.000000 30000 -dgemv_:173: D T 10000 15 -1.000000 0.000000 30000 1 1.000000 0.000000 30000 \ No newline at end of file +dgemv_:173: D T 10000 15 -1.000000 0.000000 30000 1 1.000000 0.000000 30000 +dgemv_:173: D N 1 2 -1 0 20 1 1 0 1 +dgemv_:173: D N 1 3 -1 0 20 1 1 0 1 +dgemv_:173: D N 1 4 -1 0 20 1 1 0 1 +dgemv_:173: D N 1 5 -1 0 20 1 1 0 1 +dgemv_:173: D N 2 1 -1 0 20 1 1 0 1 +dgemv_:173: D N 2 2 -1 0 20 1 1 0 1 +dgemv_:173: D N 2 3 -1 0 20 1 1 0 1 +dgemv_:173: D N 2 4 -1 0 20 1 1 0 1 +dgemv_:173: D N 3 1 -1 0 20 1 1 0 1 +dgemv_:173: D N 3 1 1 0 3 1 1 0 1 +dgemv_:173: D N 3 2 -1 0 20 1 1 0 1 +dgemv_:173: D N 3 2 1 0 3 1 0 0 1 +dgemv_:173: D N 3 2 1 0 3 1 1 0 1 +dgemv_:173: D N 3 3 -1 0 20 1 1 0 1 +dgemv_:173: D N 4 1 -1 0 20 1 1 0 1 +dgemv_:173: D N 4 2 -1 0 20 1 1 0 1 +dgemv_:173: D N 5 1 -1 0 20 1 1 0 1 +dgemv_:173: D N 324 25 1 0 324 2 1 0 2 +dgemv_:173: D N 1454 18 1 0 1454 1 0 0 1 +dgemv_:173: D N 1455 18 1 0 1455 1 0 0 1 +dgemv_:173: D N 1457 18 1 0 1457 1 0 0 1 +dgemv_:173: D N 1458 18 1 0 1458 1 0 0 1 +dgemv_:173: D N 1459 18 1 0 1459 1 0 0 1 +dgemv_:173: D N 1460 18 1 0 1460 1 0 0 1 +dgemv_:173: D N 1461 18 1 0 1461 1 0 0 1 +dgemv_:173: D N 1463 18 1 0 1463 1 0 0 1 +dgemv_:173: D N 1467 18 1 0 1467 1 0 0 1 +dgemv_:173: D N 1468 18 1 0 1468 1 0 0 1 +dgemv_:173: D N 1471 18 1 0 1471 1 0 0 1 +dgemv_:173: D N 1473 18 1 0 1473 1 0 0 1 +dgemv_:173: D N 1479 18 1 0 1479 1 0 0 1 +dgemv_:173: D N 1481 18 1 0 1481 1 0 0 1 +dgemv_:173: D N 1483 18 1 0 1483 1 0 0 1 +dgemv_:173: D N 1484 18 1 0 1484 1 0 0 1 +dgemv_:173: D N 1485 18 1 0 1485 1 0 0 1 +dgemv_:173: D N 1487 18 1 0 1487 1 0 0 1 +dgemv_:173: D N 1496 18 1 0 1496 1 0 0 1 +dgemv_:173: D T 1 2 -1 0 20 20 1 0 20 +dgemv_:173: D T 1 3 -1 0 20 20 1 0 20 +dgemv_:173: D T 1 4 -1 0 20 20 1 0 20 +dgemv_:173: D T 1 5 -1 0 20 20 1 0 20 +dgemv_:173: D T 2 1 -1 0 20 20 1 0 20 +dgemv_:173: D T 2 1 1 0 3 1 0 0 1 +dgemv_:173: D T 2 2 -1 0 20 20 1 0 20 +dgemv_:173: D T 2 2 1 0 3 1 0 0 1 +dgemv_:173: D T 2 3 -1 0 20 20 1 0 20 +dgemv_:173: D T 2 4 -1 0 20 20 1 0 20 +dgemv_:173: D T 3 1 -1 0 20 20 1 0 20 +dgemv_:173: D T 3 2 -1 0 20 20 1 0 20 +dgemv_:173: D T 3 3 -1 0 20 20 1 0 20 +dgemv_:173: D T 4 1 -1 0 20 20 1 0 20 +dgemv_:173: D T 4 2 -1 0 20 20 1 0 20 +dgemv_:173: D T 5 1 -1 0 20 20 1 0 20 +dgemv_:173: D T 324 25 1 0 324 2 1 0 2 +dgemv_:173: D T 1454 18 1 0 1454 1 0 0 1 +dgemv_:173: D T 1455 18 1 0 1455 1 0 0 1 +dgemv_:173: D T 1457 18 1 0 1457 1 0 0 1 +dgemv_:173: D T 1458 18 1 0 1458 1 0 0 1 +dgemv_:173: D T 1459 18 1 0 1459 1 0 0 1 +dgemv_:173: D T 1460 18 1 0 1460 1 0 0 1 +dgemv_:173: D T 1461 18 1 0 1461 1 0 0 1 +dgemv_:173: D T 1463 18 1 0 1463 1 0 0 1 +dgemv_:173: D T 1467 18 1 0 1467 1 0 0 1 +dgemv_:173: D T 1468 18 1 0 1468 1 0 0 1 +dgemv_:173: D T 1471 18 1 0 1471 1 0 0 1 +dgemv_:173: D T 1473 18 1 0 1473 1 0 0 1 +dgemv_:173: D T 1479 18 1 0 1479 1 0 0 1 +dgemv_:173: D T 1481 18 1 0 1481 1 0 0 1 +dgemv_:173: D T 1483 18 1 0 1483 1 0 0 1 +dgemv_:173: D T 1484 18 1 0 1484 1 0 0 1 +dgemv_:173: D T 1485 18 1 0 1485 1 0 0 1 +dgemv_:173: D T 1487 18 1 0 1487 1 0 0 1 +dgemv_:173: D T 1496 18 1 0 1496 1 0 0 1