Mentions légales du service

Skip to content
Snippets Groups Projects
Commit ec9ce5c0 authored by Mathieu Faverge's avatar Mathieu Faverge
Browse files

compute: Prepare matrix generation algorithms toward recursive descriptors

parent e9444492
No related branches found
No related tags found
1 merge request!269StarPU: Prepare the filed for recursive algorithms
...@@ -181,7 +181,7 @@ void chameleon_pzlatms( cham_dist_t idist, unsigned long long int seed, cham_sym ...@@ -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) */ /* U is of size A->m by min(A->m, A->n) */
chameleon_zdesc_copy_and_restrict( A, &descU, A->m, minmn ); 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 */ /* Shift the seed to generate the next random unitary matrix */
#if !defined(CHAMELEON_SIMULATION) #if !defined(CHAMELEON_SIMULATION)
...@@ -257,7 +257,7 @@ void chameleon_pzlatms( cham_dist_t idist, unsigned long long int seed, cham_sym ...@@ -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 */ /* V is of size min(A->m, A->n) by A->n */
chameleon_zdesc_copy_and_restrict( A, &descV, minmn, 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 */ /* Apply a QR factorization */
mat.mt = descV.mt; mat.mt = descV.mt;
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
* chameleon_pzplghe - Generate a random hermitian (positive definite if 'bump' is large enough) half-matrix by tiles. * 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, 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 ) RUNTIME_sequence_t *sequence, RUNTIME_request_t *request )
{ {
CHAM_context_t *chamctxt; CHAM_context_t *chamctxt;
...@@ -56,7 +56,7 @@ void chameleon_pzplghe( double bump, cham_uplo_t uplo, CHAM_desc_t *A, ...@@ -56,7 +56,7 @@ void chameleon_pzplghe( double bump, cham_uplo_t uplo, CHAM_desc_t *A,
INSERT_TASK_zplghe( INSERT_TASK_zplghe(
&options, &options,
bump, tempmm, tempnn, A(m, n), 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; break;
...@@ -72,7 +72,7 @@ void chameleon_pzplghe( double bump, cham_uplo_t uplo, CHAM_desc_t *A, ...@@ -72,7 +72,7 @@ void chameleon_pzplghe( double bump, cham_uplo_t uplo, CHAM_desc_t *A,
INSERT_TASK_zplghe( INSERT_TASK_zplghe(
&options, &options,
bump, tempmm, tempnn, A(m, n), 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; break;
...@@ -89,7 +89,7 @@ void chameleon_pzplghe( double bump, cham_uplo_t uplo, CHAM_desc_t *A, ...@@ -89,7 +89,7 @@ void chameleon_pzplghe( double bump, cham_uplo_t uplo, CHAM_desc_t *A,
INSERT_TASK_zplghe( INSERT_TASK_zplghe(
&options, &options,
bump, tempmm, tempnn, A(m, n), 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 );
} }
} }
} }
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
* chameleon_pzplgsy - Generate a random symmetric (positive definite if 'bump' is large enough) half-matrix by tiles. * 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, 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 ) RUNTIME_sequence_t *sequence, RUNTIME_request_t *request )
{ {
CHAM_context_t *chamctxt; CHAM_context_t *chamctxt;
...@@ -56,7 +56,7 @@ void chameleon_pzplgsy( CHAMELEON_Complex64_t bump, cham_uplo_t uplo, CHAM_desc_ ...@@ -56,7 +56,7 @@ void chameleon_pzplgsy( CHAMELEON_Complex64_t bump, cham_uplo_t uplo, CHAM_desc_
INSERT_TASK_zplgsy( INSERT_TASK_zplgsy(
&options, &options,
bump, tempmm, tempnn, A(m, n), 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; break;
...@@ -72,7 +72,7 @@ void chameleon_pzplgsy( CHAMELEON_Complex64_t bump, cham_uplo_t uplo, CHAM_desc_ ...@@ -72,7 +72,7 @@ void chameleon_pzplgsy( CHAMELEON_Complex64_t bump, cham_uplo_t uplo, CHAM_desc_
INSERT_TASK_zplgsy( INSERT_TASK_zplgsy(
&options, &options,
bump, tempmm, tempnn, A(m, n), 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; break;
...@@ -89,7 +89,7 @@ void chameleon_pzplgsy( CHAMELEON_Complex64_t bump, cham_uplo_t uplo, CHAM_desc_ ...@@ -89,7 +89,7 @@ void chameleon_pzplgsy( CHAMELEON_Complex64_t bump, cham_uplo_t uplo, CHAM_desc_
INSERT_TASK_zplgsy( INSERT_TASK_zplgsy(
&options, &options,
bump, tempmm, tempnn, A(m, n), 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 );
} }
} }
} }
......
...@@ -28,8 +28,9 @@ ...@@ -28,8 +28,9 @@
/** /**
* chameleon_pzplghe - Generate a random matrix by tiles. * chameleon_pzplghe - Generate a random matrix by tiles.
*/ */
void chameleon_pzplrnt( CHAM_desc_t *A, unsigned long long int seed, void chameleon_pzplrnt( CHAM_desc_t *A,
RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ) int bigM, int m0, int n0, unsigned long long int seed,
RUNTIME_sequence_t *sequence, RUNTIME_request_t *request )
{ {
CHAM_context_t *chamctxt; CHAM_context_t *chamctxt;
RUNTIME_option_t options; RUNTIME_option_t options;
...@@ -52,7 +53,7 @@ void chameleon_pzplrnt( CHAM_desc_t *A, unsigned long long int seed, ...@@ -52,7 +53,7 @@ void chameleon_pzplrnt( CHAM_desc_t *A, unsigned long long int seed,
INSERT_TASK_zplrnt( INSERT_TASK_zplrnt(
&options, &options,
tempmm, tempnn, A(m, n), 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); RUNTIME_options_finalize(&options, chamctxt);
......
...@@ -270,7 +270,7 @@ int CHAMELEON_zplghe_Tile_Async( double bump, ...@@ -270,7 +270,7 @@ int CHAMELEON_zplghe_Tile_Async( double bump,
if (chameleon_min( A->m, A->n ) == 0) if (chameleon_min( A->m, A->n ) == 0)
return CHAMELEON_SUCCESS; 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; return CHAMELEON_SUCCESS;
} }
...@@ -272,7 +272,7 @@ int CHAMELEON_zplgsy_Tile_Async( CHAMELEON_Complex64_t bump, ...@@ -272,7 +272,7 @@ int CHAMELEON_zplgsy_Tile_Async( CHAMELEON_Complex64_t bump,
if (chameleon_min( A->m, A->n ) == 0) if (chameleon_min( A->m, A->n ) == 0)
return CHAMELEON_SUCCESS; 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; return CHAMELEON_SUCCESS;
} }
...@@ -261,7 +261,7 @@ int CHAMELEON_zplrnt_Tile_Async( CHAM_desc_t *A, ...@@ -261,7 +261,7 @@ int CHAMELEON_zplrnt_Tile_Async( CHAM_desc_t *A,
if (chameleon_min( A->m, A->n ) == 0) if (chameleon_min( A->m, A->n ) == 0)
return CHAMELEON_SUCCESS; return CHAMELEON_SUCCESS;
chameleon_pzplrnt( A, seed, sequence, request ); chameleon_pzplrnt( A, A->m, A->i, A->j, seed, sequence, request );
return CHAMELEON_SUCCESS; return CHAMELEON_SUCCESS;
} }
...@@ -97,9 +97,9 @@ void chameleon_pzlaswp(CHAM_desc_t *B, int *IPIV, int inc, RUNTIME_sequence_t *s ...@@ -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_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_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_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_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, 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, 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_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_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); 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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment