From 05ee17eb41446866a072d24afe5c86ba4e7fc8bb Mon Sep 17 00:00:00 2001 From: Alycia Lisito <alycia.lisito@inria.fr> Date: Thu, 17 Feb 2022 08:50:17 +0100 Subject: [PATCH] testing: Fix mistakes in the standard testings --- testing/testing_zhemm.c | 13 ++++--------- testing/testing_zher2k.c | 14 +++++++++----- testing/testing_zherk.c | 6 +++--- testing/testing_zposv.c | 4 ++-- testing/testing_zpotrs.c | 2 +- testing/testing_zsymm.c | 19 +++++++------------ testing/testing_zsyr2k.c | 16 ++++++++++------ testing/testing_zsyrk.c | 2 +- testing/testing_ztrmm.c | 26 ++++++++------------------ testing/testing_ztrsm.c | 8 ++++---- 10 files changed, 49 insertions(+), 61 deletions(-) diff --git a/testing/testing_zhemm.c b/testing/testing_zhemm.c index b89b2bb3c..3fd659ffb 100644 --- a/testing/testing_zhemm.c +++ b/testing/testing_zhemm.c @@ -137,7 +137,7 @@ testing_zhemm_std( run_arg_list_t *args, int check ) double bump = testing_dalea(); /* Descriptors */ - int Am; + int An; CHAMELEON_Complex64_t *A, *B, *C, *Cinit; bump = run_arg_get_double( args, "bump", bump ); @@ -147,20 +147,15 @@ testing_zhemm_std( run_arg_list_t *args, int check ) CHAMELEON_Set( CHAMELEON_TILE_SIZE, nb ); /* Calculate the dimensions according to the side */ - if ( side == ChamLeft ) { - Am = M; - } - else { - Am = N; - } + An = ( side == ChamLeft ) ? M : N; /* Create the matrices */ - A = malloc( LDA*Am*sizeof(CHAMELEON_Complex64_t) ); + A = malloc( LDA*An*sizeof(CHAMELEON_Complex64_t) ); B = malloc( LDB*N *sizeof(CHAMELEON_Complex64_t) ); C = malloc( LDC*N *sizeof(CHAMELEON_Complex64_t) ); /* Fills the matrix with random values */ - CHAMELEON_zplghe( bump, uplo, N, A, LDA, seedA ); + CHAMELEON_zplghe( bump, uplo, An, A, LDA, seedA ); CHAMELEON_zplrnt( M, N, B, LDB, seedB ); CHAMELEON_zplrnt( M, N, C, LDC, seedC ); diff --git a/testing/testing_zher2k.c b/testing/testing_zher2k.c index 79509cd08..3cde6694a 100644 --- a/testing/testing_zher2k.c +++ b/testing/testing_zher2k.c @@ -139,7 +139,7 @@ testing_zher2k_std( run_arg_list_t *args, int check ) double bump = testing_dalea(); /* Descriptors */ - int Am, An; + int Am, An, Bm, Bn; CHAMELEON_Complex64_t *A, *B, *C, *Cinit; bump = run_arg_get_double( args, "bump", bump ); @@ -152,20 +152,24 @@ testing_zher2k_std( run_arg_list_t *args, int check ) if ( trans == ChamNoTrans ) { Am = N; An = K; + Bm = N; + Bn = K; } else { Am = K; An = N; + Bm = K; + Bn = N; } /* Create the matrices */ A = malloc( LDA*An*sizeof(CHAMELEON_Complex64_t) ); - B = malloc( LDB*An*sizeof(CHAMELEON_Complex64_t) ); + B = malloc( LDB*Bn*sizeof(CHAMELEON_Complex64_t) ); C = malloc( LDC*N *sizeof(CHAMELEON_Complex64_t) ); /* Fill the matrix with random values */ - CHAMELEON_zplrnt( Am, An, B, LDA, seedA ); - CHAMELEON_zplrnt( K, An, B, LDB, seedB ); + CHAMELEON_zplrnt( Am, An, A, LDA, seedA ); + CHAMELEON_zplrnt( Bm, Bn, B, LDB, seedB ); CHAMELEON_zplghe( bump, uplo, N, C, LDC, seedC ); /* Calculate the product */ @@ -179,7 +183,7 @@ testing_zher2k_std( run_arg_list_t *args, int check ) Cinit = malloc( LDC*N*sizeof(CHAMELEON_Complex64_t) ); CHAMELEON_zplghe( bump, uplo, N, Cinit, LDC, seedC ); - hres += check_zsyrk_std( args, ChamHermitian, uplo, trans, N, K, alpha, A, B, LDA, beta, Cinit, C, LDC ); + hres += check_zsyrk_std( args, ChamHermitian, uplo, trans, N, K, alpha, A, LDA, B, LDB, beta, Cinit, C, LDC ); free( Cinit ); } diff --git a/testing/testing_zherk.c b/testing/testing_zherk.c index 83ade364b..7cc8dbe29 100644 --- a/testing/testing_zherk.c +++ b/testing/testing_zherk.c @@ -162,14 +162,14 @@ testing_zherk_std( run_arg_list_t *args, int check ) testing_start( &test_data ); hres = CHAMELEON_zherk( uplo, trans, N, K, alpha, A, LDA, beta, C, LDC ); test_data.hres = hres; - testing_stop( &test_data, flops_zherk( K, N ) ); + testing_stop( &test_data, flops_zherk( N, K ) ); /* Checks the solution */ if ( check ) { Cinit = malloc( LDC*N*sizeof(CHAMELEON_Complex64_t) ); CHAMELEON_zplghe( bump, uplo, N, Cinit, LDC, seedC ); - hres += check_zsyrk_std( args, ChamHermitian, uplo, trans, N, K, alpha, A, NULL, LDA, beta, Cinit, C, LDC ); + hres += check_zsyrk_std( args, ChamHermitian, uplo, trans, N, K, alpha, A, LDA, NULL, LDA, beta, Cinit, C, LDC ); free( Cinit ); } @@ -199,7 +199,7 @@ testing_zherk_init( void ) test_zherk.output = zherk_output; test_zherk.outchk = zherk_outchk; test_zherk.fptr_desc = testing_zherk_desc; - test_zherk.fptr_std = NULL; + test_zherk.fptr_std = testing_zherk_std; test_zherk.next = NULL; testing_register( &test_zherk ); diff --git a/testing/testing_zposv.c b/testing/testing_zposv.c index 89eaf2c77..f193f45f2 100644 --- a/testing/testing_zposv.c +++ b/testing/testing_zposv.c @@ -127,7 +127,7 @@ testing_zposv_std( run_arg_list_t *args, int check ) CHAMELEON_Set( CHAMELEON_TILE_SIZE, nb ); /* Creates the matrices */ - A = malloc( LDA*N*sizeof(CHAMELEON_Complex64_t) ); + A = malloc( LDA*N *sizeof(CHAMELEON_Complex64_t) ); X = malloc( LDB*NRHS*sizeof(CHAMELEON_Complex64_t) ); /* Fills the matrix with random values */ @@ -148,7 +148,7 @@ testing_zposv_std( run_arg_list_t *args, int check ) /* Check the factorization */ CHAMELEON_zplghe( (double)N, uplo, N, A0, LDA, seedA ); - hres += check_zxxtrf_std( args, ChamHermitian, uplo, N, NRHS, A0, A, LDA ); + hres += check_zxxtrf_std( args, ChamHermitian, uplo, N, N, A0, A, LDA ); /* Check the solve */ CHAMELEON_zplrnt( N, NRHS, B, LDB, seedB ); diff --git a/testing/testing_zpotrs.c b/testing/testing_zpotrs.c index 5d6d95ec6..2130c2079 100644 --- a/testing/testing_zpotrs.c +++ b/testing/testing_zpotrs.c @@ -157,7 +157,7 @@ testing_t test_zpotrs; const char *zpotrs_params[] = { "mtxfmt", "nb", "uplo", "n", "nrhs", "lda", "ldb", "seedA", "seedB", NULL }; const char *zpotrs_output[] = { NULL }; -const char *zpotrs_outchk[] = { "RETURN", NULL }; +const char *zpotrs_outchk[] = { "||A||", "||A-fact(A)||", "||X||", "||B||", "||Ax-b||", "||Ax-b||/N/eps/(||A||||x||+||b||", "RETURN", NULL }; /** * @brief Testing registration function diff --git a/testing/testing_zsymm.c b/testing/testing_zsymm.c index f87066a87..5e2bb66ce 100644 --- a/testing/testing_zsymm.c +++ b/testing/testing_zsymm.c @@ -137,7 +137,7 @@ testing_zsymm_std( run_arg_list_t *args, int check ) double bump = testing_dalea(); /* Descriptors */ - int Am; + int An; CHAMELEON_Complex64_t *A, *B, *C, *Cinit; bump = run_arg_get_double( args, "bump", bump ); @@ -147,26 +147,21 @@ testing_zsymm_std( run_arg_list_t *args, int check ) CHAMELEON_Set( CHAMELEON_TILE_SIZE, nb ); /* Calculate the dimensions according to the side */ - if ( side == ChamLeft ) { - Am = M; - } - else { - Am = N; - } + An = ( side == ChamLeft ) ? M : N; /* Create the matrices */ - A = malloc( LDA*Am*sizeof(CHAMELEON_Complex64_t) ); - B = malloc( LDB*N*sizeof(CHAMELEON_Complex64_t) ); - C = malloc( LDC*N*sizeof(CHAMELEON_Complex64_t) ); + A = malloc( LDA*An*sizeof(CHAMELEON_Complex64_t) ); + B = malloc( LDB*N *sizeof(CHAMELEON_Complex64_t) ); + C = malloc( LDC*N *sizeof(CHAMELEON_Complex64_t) ); /* Fills the matrix with random values */ - CHAMELEON_zplgsy( bump, uplo, N, A, LDA, seedA ); + CHAMELEON_zplgsy( bump, uplo, An, A, LDA, seedA ); CHAMELEON_zplrnt( M, N, B, LDB, seedB ); CHAMELEON_zplrnt( M, N, C, LDC, seedC ); /* Calculates the product */ testing_start( &test_data ); - hres = CHAMELEON_zsymm( side, uplo, Am, N, alpha, A, LDA, B, LDB, beta, C, LDC ); + hres = CHAMELEON_zsymm( side, uplo, M, N, alpha, A, LDA, B, LDB, beta, C, LDC ); test_data.hres = hres; testing_stop( &test_data, flops_zsymm( side, M, N ) ); diff --git a/testing/testing_zsyr2k.c b/testing/testing_zsyr2k.c index 1db847448..4a30d9115 100644 --- a/testing/testing_zsyr2k.c +++ b/testing/testing_zsyr2k.c @@ -139,7 +139,7 @@ testing_zsyr2k_std( run_arg_list_t *args, int check ) double bump = testing_dalea(); /* Descriptors */ - int Am, An; + int Am, An, Bm, Bn; CHAMELEON_Complex64_t *A, *B, *C, *Cinit; bump = run_arg_get_double( args, "bump", bump ); @@ -152,34 +152,38 @@ testing_zsyr2k_std( run_arg_list_t *args, int check ) if ( trans == ChamNoTrans ) { Am = N; An = K; + Bm = N; + Bn = K; } else { Am = K; An = N; + Bm = K; + Bn = N; } /* Create the matrices */ A = malloc( LDA*An*sizeof(CHAMELEON_Complex64_t) ); - B = malloc( LDB*An*sizeof(CHAMELEON_Complex64_t) ); + B = malloc( LDB*Bn*sizeof(CHAMELEON_Complex64_t) ); C = malloc( LDC*N *sizeof(CHAMELEON_Complex64_t) ); /* Fill the matrix with random values */ CHAMELEON_zplrnt( Am, An, A, LDA, seedA ); - CHAMELEON_zplrnt( Am, An, B, LDB, seedB ); + CHAMELEON_zplrnt( Bm, Bn, B, LDB, seedB ); CHAMELEON_zplgsy( bump, uplo, N, C, LDC, seedC ); /* Calculate the product */ testing_start( &test_data ); hres = CHAMELEON_zsyr2k( uplo, trans, N, K, alpha, A, LDA, B, LDB, beta, C, LDC ); test_data.hres = hres; - testing_stop( &test_data, flops_zher2k( K, N ) ); + testing_stop( &test_data, flops_zher2k( N, K ) ); /* Check the solution */ if ( check ) { Cinit = malloc( LDC*N*sizeof(CHAMELEON_Complex64_t) ); CHAMELEON_zplgsy( bump, uplo, N, Cinit, LDC, seedC ); - hres += check_zsyrk_std( args, ChamSymmetric, uplo, trans, N, K, alpha, A, B, LDA, beta, Cinit, C, LDC ); + hres += check_zsyrk_std( args, ChamSymmetric, uplo, trans, N, K, alpha, A, LDA, B, LDB, beta, Cinit, C, LDC ); free( Cinit ); } @@ -196,7 +200,7 @@ const char *zsyr2k_params[] = { "mtxfmt", "nb", "trans", "uplo", "n", "k" "lda", "ldb", "ldc", "alpha", "beta", "seedA", "seedB", "seedC", "bump", NULL }; const char *zsyr2k_output[] = { NULL }; -const char *zsyr2k_outchk[] = { "RETURN", NULL }; +const char *zsyr2k_outchk[] = { "||A||", "||B||", "||C||", "||R||", "RETURN", NULL }; /** * @brief Testing registration function diff --git a/testing/testing_zsyrk.c b/testing/testing_zsyrk.c index 87be0bd64..ccf584bbe 100644 --- a/testing/testing_zsyrk.c +++ b/testing/testing_zsyrk.c @@ -168,7 +168,7 @@ testing_zsyrk_std( run_arg_list_t *args, int check ) Cinit = malloc( LDC*N*sizeof(CHAMELEON_Complex64_t) ); CHAMELEON_zplgsy( bump, uplo, N, Cinit, LDC, seedC ); - hres += check_zsyrk_std( args, ChamSymmetric, uplo, trans, N, K, alpha, A, NULL, LDA, beta, Cinit, C, LDC ); + hres += check_zsyrk_std( args, ChamSymmetric, uplo, trans, N, K, alpha, A, LDA, NULL, LDA, beta, Cinit, C, LDC ); free( Cinit ); } diff --git a/testing/testing_ztrmm.c b/testing/testing_ztrmm.c index 9809931fc..3cc1506d6 100644 --- a/testing/testing_ztrmm.c +++ b/testing/testing_ztrmm.c @@ -40,7 +40,7 @@ testing_ztrmm_desc( run_arg_list_t *args, int check ) cham_diag_t diag = run_arg_get_diag( args, "diag", ChamNonUnit ); int N = run_arg_get_int( args, "N", 1000 ); int M = run_arg_get_int( args, "M", N ); - int LDA = run_arg_get_int( args, "LDA", N ); + int LDA = run_arg_get_int( args, "LDA", ( side == ChamLeft ) ? M : N ); int LDB = run_arg_get_int( args, "LDB", M ); CHAMELEON_Complex64_t alpha = testing_zalea(); int seedA = run_arg_get_int( args, "seedA", random() ); @@ -56,12 +56,10 @@ testing_ztrmm_desc( run_arg_list_t *args, int check ) /* Calculates the dimensions according to the side */ if ( side == ChamLeft ) { - LDA = M; CHAMELEON_Desc_Create( &descA, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDA, M, 0, 0, M, M, P, Q ); } else { - LDA = N; CHAMELEON_Desc_Create( &descA, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, N, N, P, Q ); } @@ -120,14 +118,14 @@ testing_ztrmm_std( run_arg_list_t *args, int check ) cham_diag_t diag = run_arg_get_diag( args, "diag", ChamNonUnit ); int N = run_arg_get_int( args, "N", 1000 ); int M = run_arg_get_int( args, "M", N ); - int LDA = run_arg_get_int( args, "LDA", N ); + int LDA = run_arg_get_int( args, "LDA", ( side == ChamLeft ) ? M : N ); int LDB = run_arg_get_int( args, "LDB", M ); CHAMELEON_Complex64_t alpha = testing_zalea(); int seedA = run_arg_get_int( args, "seedA", random() ); int seedB = run_arg_get_int( args, "seedB", random() ); /* Descriptors */ - int An; + int An; CHAMELEON_Complex64_t *A, *B, *Binit; alpha = run_arg_get_complex64( args, "alpha", alpha ); @@ -135,19 +133,11 @@ testing_ztrmm_std( run_arg_list_t *args, int check ) CHAMELEON_Set( CHAMELEON_TILE_SIZE, nb ); /* Calculates the dimensions according to the side */ - if ( side == ChamLeft ) { - An = M; - LDA = M; - A = malloc( LDA*N *sizeof(CHAMELEON_Complex64_t) ); - } - else { - An = N; - LDA = N; - A = malloc( LDA*N *sizeof(CHAMELEON_Complex64_t) ); - } + An = ( side == ChamLeft ) ? M : N; /* Creates the matrices */ - B = malloc( LDB*N*sizeof(CHAMELEON_Complex64_t) ); + A = malloc( LDA*An*sizeof(CHAMELEON_Complex64_t) ); + B = malloc( LDB*N *sizeof(CHAMELEON_Complex64_t) ); /* Fills the matrix with random values */ CHAMELEON_zplrnt( An, An, A, LDA, seedA ); @@ -155,7 +145,7 @@ testing_ztrmm_std( run_arg_list_t *args, int check ) /* Calculates the product */ testing_start( &test_data ); - hres = CHAMELEON_ztrmm( side, uplo, trans, diag, N, M, alpha, A, LDA, B, LDB ); + hres = CHAMELEON_ztrmm( side, uplo, trans, diag, M, N, alpha, A, LDA, B, LDB ); test_data.hres = hres; testing_stop( &test_data, flops_ztrmm( side, N, M ) ); @@ -164,7 +154,7 @@ testing_ztrmm_std( run_arg_list_t *args, int check ) Binit = malloc( LDB*N*sizeof(CHAMELEON_Complex64_t) ); CHAMELEON_zplrnt( M, N, Binit, LDB, seedB ); - hres += check_ztrmm_std( args, CHECK_TRMM, side, uplo, trans, diag, N, M, alpha, A, LDA, B, Binit, LDB ); + hres += check_ztrmm_std( args, CHECK_TRMM, side, uplo, trans, diag, M, N, alpha, A, LDA, B, Binit, LDB ); free( Binit ); } diff --git a/testing/testing_ztrsm.c b/testing/testing_ztrsm.c index 89cd4f733..fb683176a 100644 --- a/testing/testing_ztrsm.c +++ b/testing/testing_ztrsm.c @@ -112,8 +112,8 @@ testing_ztrsm_std( run_arg_list_t *args, int check ) cham_diag_t diag = run_arg_get_diag( args, "diag", ChamNonUnit ); int N = run_arg_get_int( args, "N", 1000 ); int M = run_arg_get_int( args, "M", N ); - int Ak = ( side == ChamLeft ) ? M : N; - int LDA = run_arg_get_int( args, "LDA", Ak ); + int An = ( side == ChamLeft ) ? M : N; + int LDA = run_arg_get_int( args, "LDA", An ); int LDB = run_arg_get_int( args, "LDB", M ); CHAMELEON_Complex64_t alpha = testing_zalea(); int seedA = run_arg_get_int( args, "seedA", random() ); @@ -127,7 +127,7 @@ testing_ztrsm_std( run_arg_list_t *args, int check ) CHAMELEON_Set( CHAMELEON_TILE_SIZE, nb ); /* Creates the matrices */ - A = malloc( LDA*Ak*sizeof(CHAMELEON_Complex64_t) ); + A = malloc( LDA*An*sizeof(CHAMELEON_Complex64_t) ); B = malloc( LDB*N *sizeof(CHAMELEON_Complex64_t) ); /* Fills the matrix with random values */ @@ -137,7 +137,7 @@ testing_ztrsm_std( run_arg_list_t *args, int check ) /* Calculates the product */ testing_start( &test_data ); - hres = CHAMELEON_ztrsm( side, uplo, trans, diag, N, M, alpha, A, LDA, B, LDB ); + hres = CHAMELEON_ztrsm( side, uplo, trans, diag, M, N, alpha, A, LDA, B, LDB ); test_data.hres = hres; testing_stop( &test_data, flops_ztrsm( side, M, N ) ); -- GitLab