From e8392fedb8ebb0b29a48821fe898ad3dc57261d2 Mon Sep 17 00:00:00 2001 From: Eleni Vlachopoulou Date: Tue, 11 Apr 2023 20:01:21 +0530 Subject: [PATCH] GTestSuite fix on trsm tests. - Fixing thresholds to be more appropriate. - Updating the way random entries of A and B are generated so that A is diagonally dominant and the algorithm doesn't diverge. AMD-Internal: [CPUPL-2732] Change-Id: I6d5691d744ecc623f66c45e94461bd88625d7179 --- gtestsuite/testsuite/level3/trsm/ctrsm_generic.cpp | 6 +++--- gtestsuite/testsuite/level3/trsm/dtrsm_generic.cpp | 2 +- gtestsuite/testsuite/level3/trsm/strsm_generic.cpp | 2 +- gtestsuite/testsuite/level3/trsm/test_trsm.h | 12 ++++++++++-- gtestsuite/testsuite/level3/trsm/ztrsm_generic.cpp | 2 +- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/gtestsuite/testsuite/level3/trsm/ctrsm_generic.cpp b/gtestsuite/testsuite/level3/trsm/ctrsm_generic.cpp index 0b8c35776..b0efde03e 100644 --- a/gtestsuite/testsuite/level3/trsm/ctrsm_generic.cpp +++ b/gtestsuite/testsuite/level3/trsm/ctrsm_generic.cpp @@ -80,7 +80,7 @@ TEST_P(ctrsmTest, RandomData) { char datatype = std::get<10>(GetParam()); // Set the threshold for the errors: - double thresh = 15*n*m*testinghelpers::getEpsilon(); + double thresh = std::max(m, n)*testinghelpers::getEpsilon(); //---------------------------------------------------------- // Call test body using these parameters @@ -139,8 +139,8 @@ INSTANTIATE_TEST_SUITE_P( ::testing::Values('u','l'), // uplo u:upper, l:lower ::testing::Values('n','c','t'), // transa ::testing::Values('n','u'), // diaga , n=nonunit u=unit - ::testing::Range(gtint_t(10), gtint_t(11), 10), // m - ::testing::Range(gtint_t(10), gtint_t(11), 10), // n + ::testing::Range(gtint_t(10), gtint_t(31), 10), // m + ::testing::Range(gtint_t(10), gtint_t(31), 10), // n ::testing::Values(scomplex{2.0,-1.0}), // alpha ::testing::Values(gtint_t(0), gtint_t(3)), // increment to the leading dim of a ::testing::Values(gtint_t(0), gtint_t(4)), // increment to the leading dim of b diff --git a/gtestsuite/testsuite/level3/trsm/dtrsm_generic.cpp b/gtestsuite/testsuite/level3/trsm/dtrsm_generic.cpp index d15af9390..457828227 100644 --- a/gtestsuite/testsuite/level3/trsm/dtrsm_generic.cpp +++ b/gtestsuite/testsuite/level3/trsm/dtrsm_generic.cpp @@ -80,7 +80,7 @@ TEST_P(dtrsmTest, RandomData) { char datatype = std::get<10>(GetParam()); // Set the threshold for the errors: - double thresh = 20*n*m*testinghelpers::getEpsilon(); + double thresh = std::max(m, n)*testinghelpers::getEpsilon(); //---------------------------------------------------------- // Call test body using these parameters diff --git a/gtestsuite/testsuite/level3/trsm/strsm_generic.cpp b/gtestsuite/testsuite/level3/trsm/strsm_generic.cpp index 88c11b647..f4aadc4e3 100644 --- a/gtestsuite/testsuite/level3/trsm/strsm_generic.cpp +++ b/gtestsuite/testsuite/level3/trsm/strsm_generic.cpp @@ -80,7 +80,7 @@ TEST_P(strsmTest, RandomData) { char datatype = std::get<10>(GetParam()); // Set the threshold for the errors: - double thresh = 15*n*m*testinghelpers::getEpsilon(); + double thresh = std::max(m, n)*testinghelpers::getEpsilon(); //---------------------------------------------------------- // Call test body using these parameters diff --git a/gtestsuite/testsuite/level3/trsm/test_trsm.h b/gtestsuite/testsuite/level3/trsm/test_trsm.h index a42be916b..2cb13be5d 100644 --- a/gtestsuite/testsuite/level3/trsm/test_trsm.h +++ b/gtestsuite/testsuite/level3/trsm/test_trsm.h @@ -54,9 +54,17 @@ void test_trsm( char storage, char side, char uploa, char transa, //---------------------------------------------------------- // Initialize matrics with random values. //---------------------------------------------------------- - std::vector a = testinghelpers::get_random_matrix(2, 18, storage, transa, mn, mn, lda, datatype); - std::vector b = testinghelpers::get_random_matrix(5, 12, storage, 'n', m, n, ldb, datatype); + gtint_t lower = (diaga = 'n')||(diaga = 'N') ? 3 : 0; + gtint_t upper = (diaga = 'n')||(diaga = 'N') ? 10 : 1; + std::vector a = testinghelpers::get_random_matrix(lower, upper, storage, transa, mn, mn, lda, datatype); + std::vector b = testinghelpers::get_random_matrix(3, 10, storage, 'n', m, n, ldb, datatype); + // Making A diagonally dominant so that the condition number is good and + // the algorithm doesn't diverge. + for (gtint_t i=0; i b_ref(b); diff --git a/gtestsuite/testsuite/level3/trsm/ztrsm_generic.cpp b/gtestsuite/testsuite/level3/trsm/ztrsm_generic.cpp index 8d16cbfd4..e0c1b4155 100644 --- a/gtestsuite/testsuite/level3/trsm/ztrsm_generic.cpp +++ b/gtestsuite/testsuite/level3/trsm/ztrsm_generic.cpp @@ -80,7 +80,7 @@ TEST_P(ztrsmTest, RandomData) { char datatype = std::get<10>(GetParam()); // Set the threshold for the errors: - double thresh = 15*n*m*testinghelpers::getEpsilon(); + double thresh = std::max(m, n)*testinghelpers::getEpsilon(); //---------------------------------------------------------- // Call test body using these parameters