From ec9ce5c03e32dfed0478f731ac26840fc44b4404 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Tue, 12 Oct 2021 12:30:17 +0200 Subject: [PATCH] compute: Prepare matrix generation algorithms toward recursive descriptors --- compute/pzlatms.c | 4 ++-- compute/pzplghe.c | 8 ++++---- compute/pzplgsy.c | 8 ++++---- compute/pzplrnt.c | 7 ++++--- compute/zplghe.c | 2 +- compute/zplgsy.c | 2 +- compute/zplrnt.c | 2 +- control/compute_z.h | 6 +++--- 8 files changed, 20 insertions(+), 19 deletions(-) diff --git a/compute/pzlatms.c b/compute/pzlatms.c index 7a1334d9d..ab0cbe473 100644 --- a/compute/pzlatms.c +++ b/compute/pzlatms.c @@ -181,7 +181,7 @@ void chameleon_pzlatms( cham_dist_t idist, unsigned long long int seed, cham_sym /* U is of size A->m by min(A->m, A->n) */ chameleon_zdesc_copy_and_restrict( A, &descU, A->m, minmn ); - chameleon_pzplrnt( &descU, seed, sequence, request ); + chameleon_pzplrnt( &descU, descU.m, 0, 0, seed, sequence, request ); /* Shift the seed to generate the next random unitary matrix */ #if !defined(CHAMELEON_SIMULATION) @@ -257,7 +257,7 @@ void chameleon_pzlatms( cham_dist_t idist, unsigned long long int seed, cham_sym /* V is of size min(A->m, A->n) by A->n */ chameleon_zdesc_copy_and_restrict( A, &descV, minmn, A->n ); - chameleon_pzplrnt( &descV, seed, sequence, request ); + chameleon_pzplrnt( &descV, descV.m, 0, 0, seed, sequence, request ); /* Apply a QR factorization */ mat.mt = descV.mt; diff --git a/compute/pzplghe.c b/compute/pzplghe.c index d20b36a61..7a1f03120 100644 --- a/compute/pzplghe.c +++ b/compute/pzplghe.c @@ -28,7 +28,7 @@ * chameleon_pzplghe - Generate a random hermitian (positive definite if 'bump' is large enough) half-matrix by tiles. */ void chameleon_pzplghe( double bump, cham_uplo_t uplo, CHAM_desc_t *A, - unsigned long long int seed, + int bigM, int m0, int n0, unsigned long long int seed, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ) { CHAM_context_t *chamctxt; @@ -56,7 +56,7 @@ void chameleon_pzplghe( double bump, cham_uplo_t uplo, CHAM_desc_t *A, INSERT_TASK_zplghe( &options, bump, tempmm, tempnn, A(m, n), - A->m, m*A->mb, n*A->nb, seed ); + bigM, m*A->mb + m0, n*A->nb + n0, seed ); } } break; @@ -72,7 +72,7 @@ void chameleon_pzplghe( double bump, cham_uplo_t uplo, CHAM_desc_t *A, INSERT_TASK_zplghe( &options, bump, tempmm, tempnn, A(m, n), - A->m, m*A->mb, n*A->nb, seed ); + bigM, m*A->mb + m0, n*A->nb + n0, seed ); } } break; @@ -89,7 +89,7 @@ void chameleon_pzplghe( double bump, cham_uplo_t uplo, CHAM_desc_t *A, INSERT_TASK_zplghe( &options, bump, tempmm, tempnn, A(m, n), - A->m, m*A->mb, n*A->nb, seed ); + bigM, m*A->mb + m0, n*A->nb + n0, seed ); } } } diff --git a/compute/pzplgsy.c b/compute/pzplgsy.c index 726543b5a..b9a035620 100644 --- a/compute/pzplgsy.c +++ b/compute/pzplgsy.c @@ -28,7 +28,7 @@ * chameleon_pzplgsy - Generate a random symmetric (positive definite if 'bump' is large enough) half-matrix by tiles. */ void chameleon_pzplgsy( CHAMELEON_Complex64_t bump, cham_uplo_t uplo, CHAM_desc_t *A, - unsigned long long int seed, + int bigM, int m0, int n0, unsigned long long int seed, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ) { CHAM_context_t *chamctxt; @@ -56,7 +56,7 @@ void chameleon_pzplgsy( CHAMELEON_Complex64_t bump, cham_uplo_t uplo, CHAM_desc_ INSERT_TASK_zplgsy( &options, bump, tempmm, tempnn, A(m, n), - A->m, m*A->mb, n*A->nb, seed ); + bigM, m*A->mb + m0, n*A->nb + n0, seed ); } } break; @@ -72,7 +72,7 @@ void chameleon_pzplgsy( CHAMELEON_Complex64_t bump, cham_uplo_t uplo, CHAM_desc_ INSERT_TASK_zplgsy( &options, bump, tempmm, tempnn, A(m, n), - A->m, m*A->mb, n*A->nb, seed ); + bigM, m*A->mb + m0, n*A->nb + n0, seed ); } } break; @@ -89,7 +89,7 @@ void chameleon_pzplgsy( CHAMELEON_Complex64_t bump, cham_uplo_t uplo, CHAM_desc_ INSERT_TASK_zplgsy( &options, bump, tempmm, tempnn, A(m, n), - A->m, m*A->mb, n*A->nb, seed ); + bigM, m*A->mb + m0, n*A->nb + n0, seed ); } } } diff --git a/compute/pzplrnt.c b/compute/pzplrnt.c index 77845a2ed..a0d08d9be 100644 --- a/compute/pzplrnt.c +++ b/compute/pzplrnt.c @@ -28,8 +28,9 @@ /** * chameleon_pzplghe - Generate a random matrix by tiles. */ -void chameleon_pzplrnt( CHAM_desc_t *A, unsigned long long int seed, - RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ) +void chameleon_pzplrnt( CHAM_desc_t *A, + int bigM, int m0, int n0, unsigned long long int seed, + RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ) { CHAM_context_t *chamctxt; RUNTIME_option_t options; @@ -52,7 +53,7 @@ void chameleon_pzplrnt( CHAM_desc_t *A, unsigned long long int seed, INSERT_TASK_zplrnt( &options, tempmm, tempnn, A(m, n), - A->m, m*A->mb, n*A->nb, seed ); + bigM, m*A->mb + m0, n*A->nb + n0, seed ); } } RUNTIME_options_finalize(&options, chamctxt); diff --git a/compute/zplghe.c b/compute/zplghe.c index 28f849ea4..ea6a7364f 100644 --- a/compute/zplghe.c +++ b/compute/zplghe.c @@ -270,7 +270,7 @@ int CHAMELEON_zplghe_Tile_Async( double bump, if (chameleon_min( A->m, A->n ) == 0) return CHAMELEON_SUCCESS; - chameleon_pzplghe( bump, uplo, A, seed, sequence, request ); + chameleon_pzplghe( bump, uplo, A, A->m, A->i, A->j, seed, sequence, request ); return CHAMELEON_SUCCESS; } diff --git a/compute/zplgsy.c b/compute/zplgsy.c index c09673df7..2f5921517 100644 --- a/compute/zplgsy.c +++ b/compute/zplgsy.c @@ -272,7 +272,7 @@ int CHAMELEON_zplgsy_Tile_Async( CHAMELEON_Complex64_t bump, if (chameleon_min( A->m, A->n ) == 0) return CHAMELEON_SUCCESS; - chameleon_pzplgsy( bump, uplo, A, seed, sequence, request ); + chameleon_pzplgsy( bump, uplo, A, A->m, A->i, A->j, seed, sequence, request ); return CHAMELEON_SUCCESS; } diff --git a/compute/zplrnt.c b/compute/zplrnt.c index 272e5b4a8..4f25f18a0 100644 --- a/compute/zplrnt.c +++ b/compute/zplrnt.c @@ -261,7 +261,7 @@ int CHAMELEON_zplrnt_Tile_Async( CHAM_desc_t *A, if (chameleon_min( A->m, A->n ) == 0) return CHAMELEON_SUCCESS; - chameleon_pzplrnt( A, seed, sequence, request ); + chameleon_pzplrnt( A, A->m, A->i, A->j, seed, sequence, request ); return CHAMELEON_SUCCESS; } diff --git a/control/compute_z.h b/control/compute_z.h index acc3c5445..0e3dc6ae2 100644 --- a/control/compute_z.h +++ b/control/compute_z.h @@ -97,9 +97,9 @@ void chameleon_pzlaswp(CHAM_desc_t *B, int *IPIV, int inc, RUNTIME_sequence_t *s void chameleon_pzlaswpc(CHAM_desc_t *B, int *IPIV, int inc, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request); void chameleon_pzlatms( cham_dist_t idist, unsigned long long int seed, cham_sym_t sym, double *D, int mode, double cond, double dmax, CHAM_desc_t *A, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ); void chameleon_pzlauum(cham_uplo_t uplo, CHAM_desc_t *A, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request); -void chameleon_pzplghe(double bump, cham_uplo_t uplo, CHAM_desc_t *A, unsigned long long int seed, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ); -void chameleon_pzplgsy(CHAMELEON_Complex64_t bump, cham_uplo_t uplo, CHAM_desc_t *A, unsigned long long int seed, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ); -void chameleon_pzplrnt(CHAM_desc_t *A, unsigned long long int seed, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ); +void chameleon_pzplghe(double bump, cham_uplo_t uplo, CHAM_desc_t *A, int bigM, int m0, int n0, unsigned long long int seed, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ); +void chameleon_pzplgsy(CHAMELEON_Complex64_t bump, cham_uplo_t uplo, CHAM_desc_t *A, int bigM, int m0, int n0, unsigned long long int seed, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ); +void chameleon_pzplrnt(CHAM_desc_t *A, int bigM, int m0, int n0, unsigned long long int seed, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ); void chameleon_pzplrnk(int K, CHAM_desc_t *C, unsigned long long int seedA, unsigned long long int seedB, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ); void chameleon_pzpotrf(cham_uplo_t uplo, CHAM_desc_t *A, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request); void chameleon_pzpotrimm(cham_uplo_t uplo, CHAM_desc_t *A, CHAM_desc_t *B, CHAM_desc_t *C, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request); -- GitLab