diff --git a/doc/user/chapters/installing.org b/doc/user/chapters/installing.org index 4640ded4dd70e44dd94dfdf4c931c96ffc6a0318..5e2edd43bf946151d0c15b29c6a0dcc8557e669c 100644 --- a/doc/user/chapters/installing.org +++ b/doc/user/chapters/installing.org @@ -320,7 +320,7 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and * *CMAKE_INSTALL_PREFIX=path/to/your/install/dir*: where headers, libraries, executables, etc, will be copied when invoking make install - * *BUILD_SHARED_LIBS=ON|OFF*: indicate wether or not CMake has to + * *BUILD_SHARED_LIBS=ON|OFF*: indicates whether or not CMake has to build Chameleon static (~OFF~) or shared (~ON~) libraries. * *CMAKE_C_COMPILER=gcc|icc|...*: to choose the C compilers if several exist in the environment diff --git a/testing/input/geadd.in b/testing/input/geadd.in index 8e6fe98f11e7ec97f464df6a4cbb76f114f22daa..9c15fe75bba07c4526b5ef04428001f2e7bca13d 100644 --- a/testing/input/geadd.in +++ b/testing/input/geadd.in @@ -8,7 +8,7 @@ # N: Number of columns of matrix B # LDA: Leading dimension of matrix A # LDB: Leading dimension of matrix B -# trans: Wether the matrix A is not tranposed, transposed or conjugate transposed (0: not transposed, 1: transposed, 2: conjugate transposed) +# trans: Whether the matrix A is not tranposed, transposed or conjugate transposed (0: not transposed, 1: transposed, 2: conjugate transposed) # alpha: Scalar alpha # beta: Scalar beta diff --git a/testing/input/gels.in b/testing/input/gels.in index 93e08d2ddaa1ade9ca2a721b9b1898b1e9ea05b6..b365e0359603f9736c4c957a00bab385f1d24ac1 100644 --- a/testing/input/gels.in +++ b/testing/input/gels.in @@ -9,7 +9,7 @@ # K: Number of columns of matrix A and rows of Matrix B # LDA: Leading dimension of matrix A # LDB: Leading dimension of matrix B -# trans: Wether the system involves A (ChamNoTrans) or A^H *ChamTransConj) +# trans: Whether the system involves A (ChamNoTrans) or A^H *ChamTransConj) # RH: Size of each subdomain when using RH op = gels diff --git a/testing/input/gels_hqr.in b/testing/input/gels_hqr.in index c64f87f4e26c86c18a4b6779281a789d90c48635..0cd04553e488bdf588ff708e2bc0fd287855bc49 100644 --- a/testing/input/gels_hqr.in +++ b/testing/input/gels_hqr.in @@ -9,7 +9,7 @@ # K: Number of columns of matrix A and rows of Matrix B # LDA: Leading dimension of matrix A # LDB: Leading dimension of matrix B -# trans: Wether the system involves A (ChamNoTrans) or A^H *ChamTransConj). Currently only ChamNoTrans is supported. +# trans: Whether the system involves A (ChamNoTrans) or A^H *ChamTransConj). Currently only ChamNoTrans is supported. # qra: Size of TS domain # qrp: Size of high level tree for distributed mode # llvl: Tree used for low level reduction insides nodes diff --git a/testing/input/gemm.in b/testing/input/gemm.in index ae01aee4dc82bcba9d6ebc60584d296dadb4a9e2..f8e2a5b10b91a75a6fd9cc8691660ecf760057c3 100644 --- a/testing/input/gemm.in +++ b/testing/input/gemm.in @@ -10,8 +10,8 @@ # LDA: Leading dimension of matrix A # LDB: Leading dimension of matrix B # LDC: Leading dimension of matrix C -# transA: Wether the matrix A is not tranposed, transposed or conjugate transposed (0: not transposed, 1: transposed, 2: conjugate transposed) -# transB: Wether the matrix B is not tranposed, transposed or conjugate transposed (0: not transposed, 1: transposed, 2: conjugate transposed) +# transA: Whether the matrix A is not tranposed, transposed or conjugate transposed (0: not transposed, 1: transposed, 2: conjugate transposed) +# transB: Whether the matrix B is not tranposed, transposed or conjugate transposed (0: not transposed, 1: transposed, 2: conjugate transposed) # alpha: Scalar alpha # beta: Scalar beta diff --git a/testing/input/tradd.in b/testing/input/tradd.in index a574f03519847cf4183b360ba06e743d2c243492..37ea4599f506f8e4a7104428ee0dec7265ee1351 100644 --- a/testing/input/tradd.in +++ b/testing/input/tradd.in @@ -8,7 +8,7 @@ # N: Number of columns of matrix B # LDA: Leading dimension of matrix A # LDB: Leading dimension of matrix B -# trans: Wether the matrix A is not tranposed, transposed or conjugate transposed (0: not transposed, 1: transposed, 2: conjugate transposed) +# trans: Whether the matrix A is not tranposed, transposed or conjugate transposed (0: not transposed, 1: transposed, 2: conjugate transposed) # uplo: matrix parte to be considered (0: Upper, 1: Lower) # alpha: Scalar alpha # beta: Scalar beta diff --git a/testing/testing_zcheck.c b/testing/testing_zcheck.c index d7d9aff0687586c59d82c0dd0ab67737e07e0fc5..73afb27bc84a25d82b34a155ebb2df8d59cd5068 100644 --- a/testing/testing_zcheck.c +++ b/testing/testing_zcheck.c @@ -53,13 +53,13 @@ ******************************************************************************* * * @param[in] uplo - * Wether it is a upper triangular matrix, a lower triangular matrix or a general matrix. + * Whether it is a upper triangular matrix, a lower triangular matrix or a general matrix. * * @param[in] descA - * The first matrix descriptor. + * The descriptor of the matrix A. * - * @param[in] descA2 - * The second matrix descriptor. + * @param[in] descB + * The descriptor of the matrix B. * * @retval 0 successfull comparison * @@ -138,6 +138,46 @@ int check_zmatrices( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA, return info_solution; } +/** + ******************************************************************************** + * + * @ingroup testing + * + * @brief Compares two core function computed norms. + * + ******************************************************************************* + * + * @param[in] matrix_type + * Whether it is a general, triangular, hermitian or symmetric matrix. + * + * @param[in] norm_type + * Whether the norm is a Max, One, Inf or Frobenius norm. + * + * @param[in] uplo + * Whether it is a upper triangular matrix, a lower triangular matrix or a general matrix. + * + * @param[in] diag + * Whether it is a unitary diagonal matrix or not. + * + * @param[in] norm_cham + * The computed norm. + * + * @param[in] M + * The number of rows of the matrix A. + * + * @param[in] N + * The number of columns of the matrix A. + * + * @param[in] A + * The matrix A. + * + * @param[in] LDA + * The leading dimension of the matrix A. + * + * @retval 0 successfull comparison + * + ******************************************************************************* + */ int check_znorm_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_normtype_t norm_type, cham_uplo_t uplo, cham_diag_t diag, double norm_cham, int M, int N, CHAMELEON_Complex64_t *A, int LDA ) { @@ -164,7 +204,7 @@ int check_znorm_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_norm norm_lapack = LAPACKE_zlantr_work( LAPACK_COL_MAJOR, chameleon_lapack_const(norm_type), chameleon_lapack_const(uplo), chameleon_lapack_const(diag), M, N, A, LDA, work ); break; default: - fprintf(stderr, "check_znorm: mtxtype(%d) unsupported\n", matrix_type ); + fprintf(stderr, "check_znorm: matrix_type(%d) unsupported\n", matrix_type ); free( work ); return 1; } @@ -212,27 +252,27 @@ int check_znorm_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_norm * * @ingroup testing * - * @brief Compares the Chameleon computed norm with a Lapack computed one. + * @brief Compares the Chameleon computed norm with a core function computed one. * ******************************************************************************* * * @param[in] matrix_type - * Wether it is a general, triangular or symmetric matrix. + * Whether it is a general, triangular, hermitian or symmetric matrix. * * @param[in] norm_type - * Wether it should compare a Max, One, Inf or Frobenius norm. + * Whether the norm is a Max, One, Inf or Frobenius norm. * * @param[in] uplo - * Wether it is a upper triangular matrix, a lower triangular matrix or a general matrix. + * Whether it is a upper triangular matrix, a lower triangular matrix or a general matrix. * * @param[in] diag - * Wether it is a unitary diagonal matrix or not. + * Whether it is a unitary diagonal matrix or not. * * @param[in] norm_cham * The Chameleon computed norm. * * @param[in] descA - * The matrix descriptor. + * The descriptor of the matrix A. * * @retval 0 successfull comparison * @@ -277,34 +317,31 @@ int check_znorm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_normtype ******************************************************************************* * * @param[in] uplo - * Wether it is a upper triangular matrix, a lower triangular matrix or - * a general matrix. + * Whether it is a upper triangular matrix, a lower triangular matrix or a general matrix. * * @param[in] trans - * Wether the first matrix is transposed, conjugate transposed or not - * transposed. - * - * @param[in] descA - * The descriptor of the matrix A. + * Whether the first matrix is transposed, conjugate transposed or not transposed. * * @param[in] alpha * The scalar alpha. * - * @param[in] descBref - * The descriptor of the matrix B. + * @param[in] descA + * The descriptor of the matrix A. * * @param[in] beta * The scalar beta. * + * @param[in] descBref + * The descriptor of the matrix Bref. + * * @param[in] descBcham - * The matrix descriptor of the Chameleon computed result A+B. + * The descriptor of the matrix of the Chameleon computed result A+B. * * @retval 0 successfull comparison * ******************************************************************************* */ -int check_zsum ( run_arg_list_t *args, cham_uplo_t uplo, cham_trans_t trans, - CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, +int check_zsum ( run_arg_list_t *args, cham_uplo_t uplo, cham_trans_t trans, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAMELEON_Complex64_t beta, CHAM_desc_t *descBref, CHAM_desc_t *descBcham ) { int info_solution = 0; @@ -409,16 +446,16 @@ int check_zsum ( run_arg_list_t *args, cham_uplo_t uplo, cham_trans_t trans, ******************************************************************************* * * @param[in] uplo - * Wether it is a upper triangular matrix, a lower triangular matrix or a general matrix. + * Whether it is a upper triangular matrix, a lower triangular matrix or a general matrix. * * @param[in] alpha * The scalar alpha. * * @param[in] descA1 - * The original matrix descriptor. + * The descriptor of the matrix A1. * * @param[in] descA2 - * The scaled matrix descriptor. + * The descriptor of the scaled matrix A1. * * @retval 0 successfull comparison * @@ -462,6 +499,61 @@ int check_zscale( run_arg_list_t *args, cham_uplo_t uplo, CHAMELEON_Complex64_t return info_solution; } +/** + ******************************************************************************** + * + * @ingroup testing + * + * @brief Compares two core function computed products. + * + ******************************************************************************* + * + * @param[in] transA + * Whether the first product element is transposed, conjugate transposed or not transposed. + * + * @param[in] transB + * Whether the second product element is transposed, conjugate transposed or not transposed. + * + * @param[in] alpha + * The scalar alpha. + * + * @param[in] M + * The number of rows of the matrices A and C. + * + * @param[in] N + * The number of columns of the matrices B and C. + * + * @param[in] K + * The number of columns of the matrix A and the umber of rows of the matrxi B. + * + * @param[in] A + * The matrix A. + * + * @param[in] LDA + * The leading dimension of the matrix A. + * + * @param[in] B + * The matrix B. + * + * @param[in] LDB + * The leading dimension of the matrix B. + * + * @param[in] beta + * The scalar beta. + * + * @param[in] Cref + * The matrix Cref. + * + * @param[in] C + * The matrix of the computed result alpha*A*B+beta*C. + * + * @param[in] LDC + * The leading dimension of the matrices C and Cref. + * + * @retval 0 successfull comparison + * + ******************************************************************************* + */ int check_zgemm_std( run_arg_list_t *args, cham_trans_t transA, cham_trans_t transB, CHAMELEON_Complex64_t alpha, int M, int N, int K, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *Cref, CHAMELEON_Complex64_t *C, int LDC ) { @@ -526,10 +618,10 @@ int check_zgemm_std( run_arg_list_t *args, cham_trans_t transA, cham_trans_t tra ******************************************************************************* * * @param[in] transA - * Wether the first product element is transposed, conjugate transposed or not transposed. + * Whether the first product element is transposed, conjugate transposed or not transposed. * * @param[in] transB - * Wether the second product element is transposed, conjugate transposed or not transposed. + * Whether the second product element is transposed, conjugate transposed or not transposed. * * @param[in] alpha * The scalar alpha. @@ -537,17 +629,17 @@ int check_zgemm_std( run_arg_list_t *args, cham_trans_t transA, cham_trans_t tra * @param[in] descA * The descriptor of the matrix A. * - * @param[in] descBref + * @param[in] descB * The descriptor of the matrix B. * * @param[in] beta * The scalar beta. * * @param[in] descCref - * The descriptor of the matrix C. + * The descriptor of the matrix Cref. * * @param[in] descC - * The matrix descriptor of the Chameleon computed result alpha*A*B+beta*C. + * The descriptor of the matrix of the Chameleon computed result alpha*A*B+beta*C. * * @retval 0 successfull comparison * @@ -616,6 +708,61 @@ int check_zgemm( run_arg_list_t *args, cham_trans_t transA, cham_trans_t transB, return info_solution; } +/** + ******************************************************************************** + * + * @ingroup testing + * + * @brief Compares two core function computed symmetric products. + * + ******************************************************************************* + * + * @param[in] matrix_type + * Whether it is a general, triangular, hermitian or symmetric matrix. + * + * @param[in] side + * Whether the symmetric matrix A appears on the left or right in the operation. + * + * @param[in] uplo + * Whether it is a upper triangular matrix, a lower triangular matrix or a general matrix. + * + * @param[in] M + * The order of the matrix A and number of rows of the matrices B and C. + * + * @param[in] N + * The number of columns of the matrices B and C. + * + * @param[in] alpha + * The scalar alpha. + * + * @param[in] A + * The symmetric matrix A. + * + * @param[in] LDA + * The leading dimension of the matrix A. + * + * @param[in] B + * The matrix B. + * + * @param[in] LDB + * The leading dimension of the matrix B. + * + * @param[in] beta + * The scalar beta. + * + * @param[in] Cref + * The matrix Cref. + * + * @param[in] C + * The matrix of the computed result alpha*A*B+beta*C or alpha*B*A+beta*C. + * + * @param[in] LDC + * The leading dimension of the matrices C and Cref. + * + * @retval 0 successfull comparison + * + ******************************************************************************* + */ int check_zsymm_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side_t side, cham_uplo_t uplo, int M, int N, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *Cref, CHAMELEON_Complex64_t *C, int LDC ) @@ -688,7 +835,7 @@ int check_zsymm_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side info_solution = 1; } else { - info_solution = 0 ; + info_solution = 0; } (void)Clapacknorm; @@ -703,33 +850,36 @@ int check_zsymm_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side * * @ingroup testing * - * @brief Compares a Chameleon computed hermitian product with a core function computed one. + * @brief Compares a Chameleon computed symmetric product with a core function computed one. * ******************************************************************************* * + * @param[in] matrix_type + * Whether it is a general, triangular, hermitian or symmetric matrix. + * * @param[in] side - * Wether the hermitian matrix A appears on the left or right in the operation. + * Whether the symmetric matrix A appears on the left or right in the operation. * * @param[in] uplo - * Wether it is a upper triangular matrix, a lower triangular matrix or a general matrix. + * Whether it is a upper triangular matrix, a lower triangular matrix or a general matrix. * * @param[in] alpha * The scalar alpha. * * @param[in] descA - * The descriptor of the hermitian matrix A. + * The descriptor of the symmetric matrix A. * * @param[in] descB - * The descriptor of the hermitian matrix B. + * The descriptor of the matrix B. * * @param[in] beta * The scalar beta. * * @param[in] descCref - * The descriptor of the hermitian matrix C. + * The descriptor of the matrix Cref. * * @param[in] descC - * The matrix descriptor of the Chameleon computed result alpha*A*B+beta*C or alpha*B*A+beta*C. + * The descriptor of the matrix of the Chameleon computed result alpha*A*B+beta*C or alpha*B*A+beta*C. * * @retval 0 successfull comparison * @@ -791,6 +941,61 @@ int check_zsymm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side_t s return info_solution; } +/** + ******************************************************************************** + * + * @ingroup testing + * + * @brief Compares two core function computed matrices rank k operations. + * + ******************************************************************************* + * + * @param[in] matrix_type + * Whether it is a general, triangular, hermitian or symmetric matrix. + * + * @param[in] uplo + * Whether it is a upper triangular matrix, a lower triangular matrix or a general matrix. + * + * @param[in] trans + * Whether the first product element is transposed, conjugate transposed or not transposed. + * + * @param[in] N + * The order of the matrix C and number of rows of the matrices A and B. + * + * @param[in] K + * The number of columns of the matrices A and B. + * + * @param[in] alpha + * The scalar alpha. + * + * @param[in] A + * The matrix A. + * + * @param[in] LDA + * The leading dimension of the matrix A. + * + * @param[in] B + * The matrix B - only used for her2k and syr2k. + * + * @param[in] LDB + * The leading dimension of the matrix B. + * + * @param[in] beta + * The scalar beta. + * + * @param[in] Cref + * The symmetric matrix Cref. + * + * @param[in] C + * The symmetric matrix of the computed result. + * + * @param[in] LDC + * The leading dimension of the matrices Cref and C. + * + * @retval 0 successfull comparison + * + ******************************************************************************* + */ int check_zsyrk_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo, cham_trans_t trans, int N, int K, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, CHAMELEON_Complex64_t *B, int LDA, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *Cref, CHAMELEON_Complex64_t *C, int LDC ) @@ -902,11 +1107,14 @@ int check_zsyrk_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo * ******************************************************************************* * + * @param[in] matrix_type + * Whether it is a general, triangular, hermitian or symmetric matrix. + * * @param[in] uplo - * Wether it is a upper triangular matrix, a lower triangular matrix or a general matrix. + * Whether it is a upper triangular matrix, a lower triangular matrix or a general matrix. * * @param[in] trans - * Wether the first product element is transposed, conjugate transposed or not transposed. + * Whether the first product element is transposed, conjugate transposed or not transposed. * * @param[in] alpha * The scalar alpha. @@ -915,16 +1123,16 @@ int check_zsyrk_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo * The descriptor of the matrix A. * * @param[in] descB - * The descriptor of the matrix B - only used for her2k and sy2k. + * The descriptor of the matrix B - only used for her2k and syr2k. * * @param[in] beta * The scalar beta. * * @param[in] descCref - * The descriptor of the matrix C. + * The descriptor of the symmetric matrix C. * * @param[in] descC - * The matrix descriptor of the Chameleon computed result. + * The descriptor of the symmetric matrix of the Chameleon computed result. * * @retval 0 successfull comparison * @@ -992,12 +1200,64 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u return info_solution; } +/** + ******************************************************************************** + * + * @ingroup testing + * + * @brief Compares two core function computed matrix triangular product. + * + ******************************************************************************* + * + * @param[in] check_func + * Whether it is a triangular product or a triangular linear solution. + * + * @param[in] side + * Whether A appears on the left or on the right of the product. + * + * @param[in] uplo + * Whether A is a upper triangular matrix or a lower triangular matrix. + * + * @param[in] trans + * Whether A is transposed, conjugate transposed or not transposed. + * + * @param[in] diag + * Whether A is a unitary diagonal matrix or not. + * + * @param[in] M + * The number of rows of the matrix B and the order of the matrix A if side is left. + * + * @param[in] N + * The number of columns of the matrix B and the order of the matrix A if side is right. + * + * @param[in] alpha + * The scalar alpha. + * + * @param[in] A + * The matrix A. + * + * @param[in] LDA + * The leading dimension of the matrix A. + * + * @param[in] Bref + * The matrix Bref. + * + * @param[in] B + * The matrix of the computed result. + * + * @param[in] LDB + * The leading dimension of the matrices Bref and B. + * + * @retval 0 successfull comparison + * + ******************************************************************************* + */ int check_ztrmm_std( run_arg_list_t *args, int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_t trans, cham_diag_t diag, int M, int N, - CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, CHAMELEON_Complex64_t *Bref, int LDB ) + CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *Bref, CHAMELEON_Complex64_t *B, int LDB ) { int info_solution = 0; int An = M; - double Anorm, Bnorm, Brefnorm, Rnorm, result; + double Anorm, Bnorm, Rnorm, result; CHAMELEON_Complex64_t mzone = -1.0; char normTypeA, normTypeB; double *work; @@ -1014,7 +1274,7 @@ int check_ztrmm_std( run_arg_list_t *args, int check_func, cham_side_t side, cha LDA = M; } else { - normTypeA = '0'; + normTypeA = 'O'; if ( trans != ChamNoTrans ) { normTypeA = 'I'; } @@ -1029,24 +1289,23 @@ int check_ztrmm_std( run_arg_list_t *args, int check_func, cham_side_t side, cha An, An, A, LDA, work ); free( work ); - Brefnorm = LAPACKE_zlange( LAPACK_COL_MAJOR, normTypeB, M, N, Bref, LDB ); Bnorm = LAPACKE_zlange( LAPACK_COL_MAJOR, normTypeB, M, N, B, LDB ); /* Makes the multiplication with the core function */ if (check_func == CHECK_TRMM) { cblas_ztrmm(CblasColMajor, (CBLAS_SIDE)side, (CBLAS_UPLO)uplo, (CBLAS_TRANSPOSE)trans, - (CBLAS_DIAG)diag, M, N, CBLAS_SADDR(alpha), A, LDA, Bref, LDB); + (CBLAS_DIAG)diag, M, N, CBLAS_SADDR(alpha), A, LDA, B, LDB); } else { cblas_ztrsm(CblasColMajor, (CBLAS_SIDE)side, (CBLAS_UPLO)uplo, (CBLAS_TRANSPOSE)trans, - (CBLAS_DIAG)diag, M, N, CBLAS_SADDR(alpha), A, LDA, Bref, LDB); + (CBLAS_DIAG)diag, M, N, CBLAS_SADDR(alpha), A, LDA, B, LDB); } /* Computes the norm with the core function's result */ - cblas_zaxpy( LDB * N, CBLAS_SADDR(mzone), B, 1, Bref, 1 ); - Rnorm = LAPACKE_zlange_work( LAPACK_COL_MAJOR, 'M', M, N, Bref, LDB, NULL ); + cblas_zaxpy( LDB * N, CBLAS_SADDR(mzone), Bref, 1, B, 1 ); + Rnorm = LAPACKE_zlange_work( LAPACK_COL_MAJOR, 'M', M, N, B, LDB, NULL ); - result = Rnorm / ((Anorm + Brefnorm) * An * eps); + result = Rnorm / ((Anorm + Bnorm) * An * eps); /* Verifies if the result is inside a threshold */ if ( isnan(Rnorm) || isinf(Rnorm) || isnan(result) || isinf(result) || (result > 10.0) ) { @@ -1071,19 +1330,19 @@ int check_ztrmm_std( run_arg_list_t *args, int check_func, cham_side_t side, cha ******************************************************************************* * * @param[in] check_func - * Wether it is a triangular product or a triangular linear solution. + * Whether it is a triangular product or a triangular linear solution. * * @param[in] side * Whether A appears on the left or on the right of the product. * * @param[in] uplo - * Wether A is a upper triangular matrix or a lower triangular matrix. + * Whether A is a upper triangular matrix or a lower triangular matrix. * * @param[in] trans - * Wether A is transposed, conjugate transposed or not transposed. + * Whether A is transposed, conjugate transposed or not transposed. * * @param[in] diag - * Wether A is a unitary diagonal matrix or not. + * Whether A is a unitary diagonal matrix or not. * * @param[in] alpha * The scalar alpha. @@ -1091,25 +1350,22 @@ int check_ztrmm_std( run_arg_list_t *args, int check_func, cham_side_t side, cha * @param[in] descA * The descriptor of the matrix A. * - * @param[in] descB - * The descriptor of the matrix B. - * - * @param[in] beta - * The scalar beta. - * * @param[in] descBref - * The descriptor of the Chameleon computed result. + * The descriptor of the matrix Bref. + * + * @param[in] descB + * The descriptor of the matrix of the Chameleon computed result. * * @retval 0 successfull comparison * ******************************************************************************* */ int check_ztrmm( run_arg_list_t *args, int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_t trans, cham_diag_t diag, - CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descB, CHAM_desc_t *descBref ) + CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descBref, CHAM_desc_t *descB ) { int info_solution = 0; - int M = descB->m; - int N = descB->n; + int M = descBref->m; + int N = descBref->n; int An, LDA, LDB = M; int rank = CHAMELEON_Comm_rank(); CHAMELEON_Complex64_t *A = NULL; @@ -1138,7 +1394,7 @@ int check_ztrmm( run_arg_list_t *args, int check_func, cham_side_t side, cham_up if ( rank == 0 ) { - info_solution = check_ztrmm_std( args, check_func, side, uplo, trans, diag, M, N, alpha, A, LDA, B, Bref, LDB ); + info_solution = check_ztrmm_std( args, check_func, side, uplo, trans, diag, M, N, alpha, A, LDA, Bref, B, LDB ); free(A); free(B); @@ -1164,13 +1420,13 @@ int check_ztrmm( run_arg_list_t *args, int check_func, cham_side_t side, cham_up ******************************************************************************* * * @param[in] uplo - * Wether the upper or lower triangle of A is stored. + * Whether the upper or lower triangle of A is stored. * - * @param[in] descA1 + * @param[in] descA * The descriptor of the A matrix. * - * @param[in] descA2 - * The descriptor of the Chameleon computed result matrix. + * @param[in] descAAt + * The descriptor of the matrix of the Chameleon computed result. * * @retval 0 successfull comparison * @@ -1240,20 +1496,23 @@ int check_zlauum( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA, CH * ******************************************************************************* * + * @param[in] matrix_type + * Whether it is a general, triangular, hermitian or symmetric matrix. + * * @param[in] uplo - * Wether it is a upper triangular matrix or a lower triangular matrix. + * Whether it is a upper triangular matrix or a lower triangular matrix. * * @param[in] descA - * The descriptor of the original matrix. + * The descriptor of the symmetric matrix A. * - * @param[in] descB - * The descriptor of the Chameleon factorized matrix. + * @param[in] descLU + * The descriptor of the matrix of the Chameleon factorisation of the matrix A. * * @retval 0 successfull comparison * ******************************************************************************* */ -int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, +int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo, CHAM_desc_t *descA, CHAM_desc_t *descLU ) { int info_local, info_global; @@ -1275,7 +1534,7 @@ int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo switch ( uplo ) { case ChamUpper: #if defined(PRECISION_z) || defined(PRECISION_c) - transL = (mtxtype == ChamHermitian) ? ChamConjTrans : ChamTrans; + transL = ( matrix_type == ChamHermitian ) ? ChamConjTrans : ChamTrans; #else transL = ChamTrans; #endif @@ -1284,7 +1543,7 @@ int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo break; case ChamLower: #if defined(PRECISION_z) || defined(PRECISION_c) - transU = (mtxtype == ChamHermitian) ? ChamConjTrans : ChamTrans; + transU = ( matrix_type == ChamHermitian ) ? ChamConjTrans : ChamTrans; #else transU = ChamTrans; #endif @@ -1298,7 +1557,7 @@ int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo CHAMELEON_zlacpy_Tile( ChamUpper, descLU, descU ); } - switch ( mtxtype ) { + switch ( matrix_type ) { case ChamGeneral: { CHAM_desc_t *subL, *subU; subL = chameleon_desc_submatrix( descL, 0, 0, M, chameleon_min(M, N) ); @@ -1328,7 +1587,7 @@ int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo break; default: - fprintf(stderr, "check_zxxtrf: mtxtype(%d) unsupported\n", mtxtype ); + fprintf(stderr, "check_zxxtrf: matrix_type(%d) unsupported\n", matrix_type ); return 1; } @@ -1357,7 +1616,41 @@ int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo return info_global; } -int check_zxxtrf_std( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, int M, int N, +/** + ******************************************************************************** + * + * @ingroup testing + * + * @brief Checks if a core function computed factorization is correct. + * + ******************************************************************************* + * + * @param[in] matrix_type + * Whether it is a general, triangular, hermitian or symmetric matrix. + * + * @param[in] uplo + * Whether it is a upper triangular matrix or a lower triangular matrix. + * + * @param[in] M + * The number of rows of the matrices A and LU. + * + * @param[in] N + * The number of columns of the matrices A and LU. + * + * @param[in] A + * The symmetric matrix A. + * + * @param[in] LU + * The matrix with the computed factorisation of the matrix A. + * + * @param[in] LDA + * The leading dimension of the matrices A and LU. + * + * @retval 0 successfull comparison + * + ******************************************************************************* + */ +int check_zxxtrf_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo, int M, int N, CHAMELEON_Complex64_t *A, CHAMELEON_Complex64_t *LU, int LDA ) { int info_global; @@ -1375,7 +1668,7 @@ int check_zxxtrf_std( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t CHAMELEON_zLap2Desc( uplo, A, LDA, descA ); CHAMELEON_zLap2Desc( uplo, LU, LDA, descLU ); - info_global = check_zxxtrf( args, mtxtype, uplo, descA, descLU ); + info_global = check_zxxtrf( args, matrix_type, uplo, descA, descLU ); CHAMELEON_Desc_Destroy( &descA ); CHAMELEON_Desc_Destroy( &descLU ); @@ -1393,27 +1686,29 @@ int check_zxxtrf_std( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t * ******************************************************************************* * - * @param[in] mtxtype - * + * @param[in] matrix_type + * Whether it is a general, triangular, hermitian or symmetric matrix. + * * @param[in] trans - * Wether the A matrix is non transposed, tranposed or conjugate transposed. + * Whether the A matrix is non transposed, tranposed or conjugate transposed. * * @param[in] uplo - * + * Whether it is a upper triangular matrix or a lower triangular matrix. + * * @param[in] descA - * The descriptor of the A matrix. + * The descriptor of the symmetric matrix A. * * @param[in] descX - * The descriptor of the X matrix. + * The descriptor of the matrix X. * * @param[inout] descB - * The descriptor of the B = A*X matrix. On exit, it contains the remainder from A*x-B. + * The descriptor of the matrix B = A*X. On exit, it contains the remainder from A*x-B. * * @retval 0 successfull comparison * ******************************************************************************* */ -int check_zsolve( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_trans_t trans, cham_uplo_t uplo, +int check_zsolve( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_trans_t trans, cham_uplo_t uplo, CHAM_desc_t *descA, CHAM_desc_t *descX, CHAM_desc_t *descB ) { int info_local, info_global; @@ -1427,7 +1722,7 @@ int check_zsolve( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_trans_t tra Bnorm = CHAMELEON_zlange_Tile( ChamOneNorm, descB ); Xnorm = CHAMELEON_zlange_Tile( ChamOneNorm, descX ); - switch ( mtxtype ) { + switch ( matrix_type ) { case ChamGeneral: Anorm = CHAMELEON_zlange_Tile( norm, descA ); CHAMELEON_zgemm_Tile( trans, ChamNoTrans, -1., descA, descX, 1., descB ); @@ -1446,7 +1741,7 @@ int check_zsolve( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_trans_t tra break; default: - fprintf(stderr, "check_zsolve: mtxtype(%d) unsupported\n", mtxtype ); + fprintf(stderr, "check_zsolve: matrix_type(%d) unsupported\n", matrix_type ); return 1; } @@ -1478,7 +1773,50 @@ int check_zsolve( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_trans_t tra return info_global; } -int check_zsolve_std( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_trans_t trans, cham_uplo_t uplo, int N, int NRHS, +/** + ******************************************************************************** + * + * @ingroup testing + * + * @brief Checks if the linear solution of op(A) * x = b is correct. + * + ******************************************************************************* + * + * @param[in] matrix_type + * Whether it is a general, triangular, hermitian or symmetric matrix. + * + * @param[in] trans + * Whether the A matrix is non transposed, tranposed or conjugate transposed. + * + * @param[in] uplo + * Whether it is a upper triangular matrix or a lower triangular matrix. + * + * @param[in] N + * The order of the matrix A and the number of rows of the matrices X and B. + * + * @param[in] NRHS + * The number of columns of the matrices X and B. + * + * @param[in] A + * The symmetric matrix A. + * + * @param[in] LDA + * The leading dimenson of the matrix A. + * + * @param[in] X + * The matrix X. + * + * @param[inout] B + * The matrix B = A*X. On exit, it contains the remainder from A*x-B. + * + * @param[in] LDB + * The leading dimension of the matrices X and B. + * + * @retval 0 successfull comparison + * + ******************************************************************************* + */ +int check_zsolve_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_trans_t trans, cham_uplo_t uplo, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *X, CHAMELEON_Complex64_t *B, int LDB ) { int info_global; @@ -1499,7 +1837,7 @@ int check_zsolve_std( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_trans_t CHAMELEON_zLap2Desc( uplo, B, LDB, descB ); CHAMELEON_zLap2Desc( uplo, X, LDB, descX ); - info_global = check_zsolve( args, mtxtype, trans, uplo, descA, descX, descB ); + info_global = check_zsolve( args, matrix_type, trans, uplo, descA, descX, descB ); CHAMELEON_Desc_Destroy( &descA ); CHAMELEON_Desc_Destroy( &descB ); @@ -1514,24 +1852,24 @@ int check_zsolve_std( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_trans_t * * @ingroup testing * - * @brief Checks if the A1 matrix is the inverse of A2. + * @brief Checks if the matrix A0 is the inverse of Ai. * ******************************************************************************* * - * @param[in] is_herm - * Wether the matrices are hermitian. + * @param[in] matrix_type + * Whether it is a general, triangular, hermitian or symmetric matrix. * * @param[in] uplo - * Wether they are upper triangular matrices or lower triangular matrices. + * Whether they are upper triangular matrices or lower triangular matrices. * * @param[in] diag - * Wether they are unitary diagonal matrices or not. + * Whether they are unitary diagonal matrices or not. * - * @param[in] descA1 - * The descriptor of the A1 matrix. + * @param[in] descA0 + * The descriptor of the matrix A0. * - * @param[in] descX - * The descriptor of the A2 matrix. + * @param[in] descAi + * The descriptor of the matrix Ai. * * @retval 0 successfull comparison * @@ -1663,6 +2001,40 @@ int check_ztrtri( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t return info_global; } +/** + ******************************************************************************** + * + * @ingroup testing + * + * @brief Checks if the matrix A0 is the inverse of Ai. + * + ******************************************************************************* + * + * @param[in] matrix_type + * Whether it is a general, triangular, hermitian or symmetric matrix. + * + * @param[in] uplo + * Whether they are upper triangular matrices or lower triangular matrices. + * + * @param[in] diag + * Whether they are unitary diagonal matrices or not. + * + * @param[in] N + * the order of the matrices A0 and Ai. + * + * @param[in] A0 + * The matrix A0. + * + * @param[in] Ai + * The matrix Ai. + * + * @param[in] LDA + * The leading dimension of the matrices A0 and Ai. + * + * @retval 0 successfull comparison + * + ******************************************************************************* + */ int check_ztrtri_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo, cham_diag_t diag, int N, CHAMELEON_Complex64_t *A0, CHAMELEON_Complex64_t *Ai, int LDA ) { @@ -1690,6 +2062,22 @@ int check_ztrtri_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_upl return info_global; } +/** + ******************************************************************************** + * + * @ingroup testing + * + * @brief Checks if a matrix is orthogonal. + * + ******************************************************************************* + * + * @param[in] descQ + * The descriptor of the matrix Q. + * + * @retval 0 successfull comparison + * + ******************************************************************************* + */ int check_zortho( run_arg_list_t *args, CHAM_desc_t *descQ ) { int info_local, info_global; @@ -1750,14 +2138,14 @@ int check_zortho( run_arg_list_t *args, CHAM_desc_t *descQ ) ******************************************************************************* * * @param[in] descA - * The descriptor of the initial matrix A. + * The descriptor of the matrix A. * * @param[in] descAF - * The descriptor of the factorized matrix A. + * The descriptor of the matrix of the Chameleon computed factorisation of the matrix A. * * @param[in] descQ - * The descriptor of the Q matrix generated with a call to ungqr and - * the factorized matrix A (descAF). + * The descriptor of the matrix Q generated with a call to ungqr and + * the computed factorisation of the matrix A (descAF). * * @retval 0 successfull comparison * @@ -1856,14 +2244,14 @@ int check_zgelqf( run_arg_list_t *args, CHAM_desc_t *descA, CHAM_desc_t *descAF, ******************************************************************************* * * @param[in] descA - * The descriptor of the initial matrix A. + * The descriptor of the matrix A. * * @param[in] descAF - * The descriptor of the factorized matrix A. + * The descriptor of the matrix of the Chameleon computed factorisation of the matrix A. * * @param[in] descQ - * The descriptor of the Q matrix generated with a call to ungqr and - * the factorized matrix A (descAF). + * The descriptor of the matrix Q generated with a call to ungqr and + * the computed factorisation of the matrix A (descAF). * * @retval 0 successfull comparison * @@ -1952,6 +2340,34 @@ int check_zgeqrf( run_arg_list_t *args, CHAM_desc_t *descA, CHAM_desc_t *descAF, return info_global; } +/** + ******************************************************************************** + * + * @ingroup testing + * + * @brief Checks if the decomposition is correct. + * + ******************************************************************************* + * + * @param[in] side + * Whether the matrix Q appears on the left or on the right of the product. + * + * @param[in] trans + * Whether the matrix Q is transposed, conjugate transposed or not transposed. + * + * @param[in] descC + * The descriptor of the matrix C. + * + * @param[in] descQ + * The descriptor of the matrix Q. + * + * @param[in] descCC + * The descriptor of the matrix of the Chameleon computed result. + * + * @retval 0 successfull comparison + * + ******************************************************************************* + */ int check_zqc( run_arg_list_t *args, cham_side_t side, cham_trans_t trans, CHAM_desc_t *descC, CHAM_desc_t *descQ, CHAM_desc_t *descCC ) { @@ -1993,6 +2409,31 @@ int check_zqc( run_arg_list_t *args, cham_side_t side, cham_trans_t trans, return info_global; } +/** + ******************************************************************************** + * + * @ingroup testing + * + * @brief TODO + * + ******************************************************************************* + * + * @param[in] trans + * Whether the matrix A is transposed, conjugate transposed or not transposed. + * + * @param[in] descA + * The descriptor of the matrix A. + * + * @param[in] Bnorm + * TODO + * + * @param[in] descR + * The descriptor of the matrix R. + * + * @retval 0 successfull comparison + * + ******************************************************************************* + */ int check_zgeqrs( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA, double Bnorm, CHAM_desc_t *descR ) { int info_local, info_global, nb; @@ -2054,6 +2495,31 @@ int check_zgeqrs( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA, return info_global; } +/** + ******************************************************************************** + * + * @ingroup testing + * + * @brief TODO + * + ******************************************************************************* + * + * @param[in] trans + * Whether the matrix A is transposed, conjugate transposed or not transposed. + * + * @param[in] descA + * The descriptor of the matrix A. + * + * @param[in] Bnorm + * TODO + * + * @param[in] descR + * The descriptor of the matrix R. + * + * @retval 0 successfull comparison + * + ******************************************************************************* + */ int check_zgelqs( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA, double Bnorm, CHAM_desc_t *descR ) { int info_local, info_global, nb; @@ -2087,8 +2553,7 @@ int check_zgelqs( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA, * where R = op(A)*X - B, op(A) is A or A', and alpha = ||B|| * */ - CHAMELEON_Desc_Create( &descRR, NULL, ChamComplexDouble, nb, nb, nb*nb, - NRHS, M, 0, 0, NRHS, M, descA->p, descA->q ); + CHAMELEON_Desc_Create( &descRR, NULL, ChamComplexDouble, nb, nb, nb*nb, NRHS, M, 0, 0, NRHS, M, descA->p, descA->q ); CHAMELEON_zgemm_Tile( ChamConjTrans, trans, 1., descR, descA, 0., descRR ); @@ -2115,6 +2580,31 @@ int check_zgelqs( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA, return info_global; } +/** + ******************************************************************************** + * + * @ingroup testing + * + * @brief TODO + * + ******************************************************************************* + * + * @param[in] trans + * Whether the matrix A is transposed, conjugate transposed or not transposed. + * + * @param[in] descA + * The descriptor of the matrix A. + * + * @param[in] descX + * The descriptor of the matrix X. + * + * @param[in] descB + * The descriptor of the matrix B. + * + * @retval 0 successfull comparison + * + ******************************************************************************* + */ int check_zgels( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA, CHAM_desc_t *descX, CHAM_desc_t *descB ) { int info_solution; @@ -2144,15 +2634,15 @@ int check_zgels( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA, C * * @ingroup testing * - * @brief Check matrix is rank K + * @brief Checks if the rank of the matrix A is K. * ******************************************************************************* * * @param[in] K - * Rank of the matrix + * The rank of the matrix A. * * @param[in] descA - * The matrix descriptor. + * The descriptorof the matrix A. * * @retval 0 success, else failure * @@ -2236,31 +2726,29 @@ int check_zrankk( run_arg_list_t *args, int K, CHAM_desc_t *descA ) ******************************************************************************* * * @param[in] descA1 - * The descriptor of the top of the initial matrix A. + * The descriptor of the top of the matrix A. * * @param[in] descA2 - * The descriptor of the bottom of the initial matrix A. + * The descriptor of the bottom of the matrix A. * * @param[in] descQ1 - * The descriptor of the top of the Q matrix generated from the - * QR factorization of A. + * The descriptor of the top of the matrix Q generated from the + * QR factorization of the matrix A. * * @param[in] descQ2 - * The descriptor of the bottom of the Q matrix generated from the - * QR factorization of A. + * The descriptor of the bottom of the matrix Q generated from the + * QR factorization of the matrix A. * * @param[in] descAF1 - * The descriptor of the top of the QR factorization of A that holds R. + * The descriptor of the top of the QR factorization of the matrix A that holds R. * * @retval 0 on success * @retval >0 on failure * ******************************************************************************* */ -int check_zgepdf_qr( run_arg_list_t *args, - CHAM_desc_t *descA1, CHAM_desc_t *descA2, - CHAM_desc_t *descQ1, CHAM_desc_t *descQ2, - CHAM_desc_t *descAF1 ) +int check_zgepdf_qr( run_arg_list_t *args, CHAM_desc_t *descA1, CHAM_desc_t *descA2, CHAM_desc_t *descQ1, + CHAM_desc_t *descQ2, CHAM_desc_t *descAF1 ) { int info_local, info_global; int M = (descQ1->m + descQ2->m); @@ -2358,7 +2846,7 @@ int check_zgepdf_qr( run_arg_list_t *args, ******************************************************************************* * * @param[in,out] descA - * The descriptor of the original matrix, on exit the matrix is modified. + * The descriptor of the matrix A, on exit the matrix is modified. * * @param[in] descU * The descriptor of the orthogonal polar factor of the decomposition. diff --git a/testing/testing_zcheck.h b/testing/testing_zcheck.h index aa247db116f4f77d70cf7b56669d6a82f991f8a7..701ae8b6da4dd53b8cb9433bbfc08ec16603bf06 100644 --- a/testing/testing_zcheck.h +++ b/testing/testing_zcheck.h @@ -57,9 +57,9 @@ static inline int check_zsyrk_std ( run_arg_list_t *args, cham_mtxtype_t mat static inline int check_zsyrk ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, cham_trans_t trans, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descB, CHAMELEON_Complex64_t beta, CHAM_desc_t *descCref, CHAM_desc_t *descC ) { return 0; } static inline int check_ztrmm_std ( run_arg_list_t *args, int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_t trans, cham_diag_t diag, int M, int N, CHAMELEON_Complex64_t alpha, - CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, CHAMELEON_Complex64_t *Bref, int LDB ) { return 0; } + CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *Bref, CHAMELEON_Complex64_t *B, int LDB ) { return 0; } static inline int check_ztrmm ( run_arg_list_t *args, int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_t trans, cham_diag_t diag, - CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descB, CHAM_desc_t *descBref ) { return 0; } + CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descBref, CHAM_desc_t *descB ) { return 0; } static inline int check_zlauum ( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA1, CHAM_desc_t *descA2 ) { return 0; } static inline int check_zxxtrf ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, CHAM_desc_t *descA1, CHAM_desc_t *descA2 ) { return 0; } static inline int check_zxxtrf_std ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, int M, int N, CHAMELEON_Complex64_t *A, CHAMELEON_Complex64_t *LU, int LDA ) { return 0; } @@ -113,9 +113,9 @@ int check_zsyrk_std ( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham int check_zsyrk ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, cham_trans_t trans, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descB, CHAMELEON_Complex64_t beta, CHAM_desc_t *descCref, CHAM_desc_t *descC ); int check_ztrmm_std ( run_arg_list_t *args, int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_t trans, cham_diag_t diag, int M, int N, CHAMELEON_Complex64_t alpha, - CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, CHAMELEON_Complex64_t *Bref, int LDB ); + CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *Bref, CHAMELEON_Complex64_t *B, int LDB ); int check_ztrmm ( run_arg_list_t *args, int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_t trans, cham_diag_t diag, - CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descB, CHAM_desc_t *descBref ); + CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descBref, CHAM_desc_t *descB ); int check_zlauum ( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA1, CHAM_desc_t *descA2 ); int check_zxxtrf ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, CHAM_desc_t *descA1, CHAM_desc_t *descA2 ); int check_zxxtrf_std ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, int M, int N, CHAMELEON_Complex64_t *A, CHAMELEON_Complex64_t *LU, int LDA );