Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 7982e209 authored by LISITO Alycia's avatar LISITO Alycia
Browse files

zgetrf: correct filter

parent b8b6f874
No related branches found
No related tags found
1 merge request!442correct zgetrf filters
...@@ -131,7 +131,6 @@ chameleon_pzgetrf_panel_facto_percol( struct chameleon_pzgetrf_s *ws, ...@@ -131,7 +131,6 @@ chameleon_pzgetrf_panel_facto_percol( struct chameleon_pzgetrf_s *ws,
* Algorithm per column with pivoting * Algorithm per column with pivoting
*/ */
for (h=0; h<=minmn; h++){ for (h=0; h<=minmn; h++){
INSERT_TASK_zgetrf_percol_diag( INSERT_TASK_zgetrf_percol_diag(
options, options,
h, k * A->mb, h, k * A->mb,
...@@ -139,8 +138,6 @@ chameleon_pzgetrf_panel_facto_percol( struct chameleon_pzgetrf_s *ws, ...@@ -139,8 +138,6 @@ chameleon_pzgetrf_panel_facto_percol( struct chameleon_pzgetrf_s *ws,
ipiv ); ipiv );
for (m = k+1; m < A->mt; m++) { for (m = k+1; m < A->mt; m++) {
//tempmm = m == A->mt-1 ? A->m-m*A->mb : A->mb;
INSERT_TASK_zgetrf_percol_offdiag( INSERT_TASK_zgetrf_percol_offdiag(
options, options,
h, m * A->mb, h, m * A->mb,
...@@ -193,7 +190,6 @@ chameleon_pzgetrf_panel_facto_blocked( struct chameleon_pzgetrf_s *ws, ...@@ -193,7 +190,6 @@ chameleon_pzgetrf_panel_facto_blocked( struct chameleon_pzgetrf_s *ws,
ipiv ); ipiv );
for (m = k+1; m < A->mt; m++) { for (m = k+1; m < A->mt; m++) {
INSERT_TASK_zgetrf_blocked_offdiag( INSERT_TASK_zgetrf_blocked_offdiag(
options, options,
j, m * A->mb, ws->ib, j, m * A->mb, ws->ib,
...@@ -371,7 +367,13 @@ void chameleon_pzgetrf( struct chameleon_pzgetrf_s *ws, ...@@ -371,7 +367,13 @@ void chameleon_pzgetrf( struct chameleon_pzgetrf_s *ws,
RUNTIME_iteration_push( chamctxt, k ); RUNTIME_iteration_push( chamctxt, k );
options.priority = A->nt; options.priority = A->nt;
/*
* Do the panel factorization only if the current proc contributes in the
* block column k.
*/
options.forcesub = chameleon_involved_in_panelk_2dbc( A, k );
chameleon_pzgetrf_panel_facto( ws, A, IPIV, k, &options ); chameleon_pzgetrf_panel_facto( ws, A, IPIV, k, &options );
options.forcesub = 0;
for (n = k+1; n < A->nt; n++) { for (n = k+1; n < A->nt; n++) {
options.priority = A->nt-n; options.priority = A->nt-n;
......
...@@ -82,6 +82,24 @@ int chameleon_getrankof_2d_diag( const CHAM_desc_t *A, int m, int n ) ...@@ -82,6 +82,24 @@ int chameleon_getrankof_2d_diag( const CHAM_desc_t *A, int m, int n )
return (mm % A->p) * A->q + (mm % A->q); return (mm % A->p) * A->q + (mm % A->q);
} }
/**
* @brief Test if the current MPI process is involved in the panel k for 2DBC distributions.
*
* @param[in] A
* The matrix descriptor.
*
* @param[in] k
* The index of the panel to test.
*
* @return 1 if the current MPI process contributes to the panel k.
* 0 if the current MPI process doesn't contribute to the panel k.
*
*/
int chameleon_involved_in_panelk_2dbc( const CHAM_desc_t *A, int k ) {
int myrank = A->myrank;
return ( myrank % A->q == k % A->q );
}
/** /**
* @brief Initializes a custom distribution based on an external file. * @brief Initializes a custom distribution based on an external file.
* *
......
...@@ -57,6 +57,14 @@ int chameleon_getrankof_custom_init ( custom_dist_t **dist, const char *filena ...@@ -57,6 +57,14 @@ int chameleon_getrankof_custom_init ( custom_dist_t **dist, const char *filena
int chameleon_getrankof_custom_destroy( custom_dist_t **dist ); int chameleon_getrankof_custom_destroy( custom_dist_t **dist );
int chameleon_getrankof_custom ( const CHAM_desc_t *A, int m, int n ); int chameleon_getrankof_custom ( const CHAM_desc_t *A, int m, int n );
/**
* @}
* @name Panel involvement functions
* @{
*/
int chameleon_involved_in_panelk_2dbc( const CHAM_desc_t *A, int An );
/** /**
* @} * @}
* @name Block address functions * @name Block address functions
......
...@@ -114,7 +114,7 @@ void INSERT_TASK_zgetrf_blocked_diag( const RUNTIME_option_t *options, ...@@ -114,7 +114,7 @@ void INSERT_TASK_zgetrf_blocked_diag( const RUNTIME_option_t *options,
/* Handle cache */ /* Handle cache */
CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_BEGIN_ACCESS_DECLARATION;
CHAMELEON_ACCESS_RW(A, Am, An); CHAMELEON_ACCESS_RW( A, Am, An );
CHAMELEON_END_ACCESS_DECLARATION; CHAMELEON_END_ACCESS_DECLARATION;
/* Refine name */ /* Refine name */
...@@ -197,7 +197,7 @@ void INSERT_TASK_zgetrf_blocked_offdiag( const RUNTIME_option_t *options, ...@@ -197,7 +197,7 @@ void INSERT_TASK_zgetrf_blocked_offdiag( const RUNTIME_option_t *options,
/* Handle cache */ /* Handle cache */
CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_BEGIN_ACCESS_DECLARATION;
CHAMELEON_ACCESS_RW(A, Am, An); CHAMELEON_ACCESS_RW( A, Am, An );
CHAMELEON_END_ACCESS_DECLARATION; CHAMELEON_END_ACCESS_DECLARATION;
/* Refine name */ /* Refine name */
...@@ -275,7 +275,7 @@ void INSERT_TASK_zgetrf_blocked_trsm( const RUNTIME_option_t *options, ...@@ -275,7 +275,7 @@ void INSERT_TASK_zgetrf_blocked_trsm( const RUNTIME_option_t *options,
/* Handle cache */ /* Handle cache */
CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_BEGIN_ACCESS_DECLARATION;
CHAMELEON_ACCESS_RW(U, Um, Un); CHAMELEON_ACCESS_RW( U, Um, Un );
CHAMELEON_END_ACCESS_DECLARATION; CHAMELEON_END_ACCESS_DECLARATION;
/* Refine name */ /* Refine name */
......
...@@ -92,7 +92,7 @@ void INSERT_TASK_zgetrf_percol_diag( const RUNTIME_option_t *options, ...@@ -92,7 +92,7 @@ void INSERT_TASK_zgetrf_percol_diag( const RUNTIME_option_t *options,
/* Handle cache */ /* Handle cache */
CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_BEGIN_ACCESS_DECLARATION;
CHAMELEON_ACCESS_RW(A, Am, An); CHAMELEON_ACCESS_RW( A, Am, An );
CHAMELEON_END_ACCESS_DECLARATION; CHAMELEON_END_ACCESS_DECLARATION;
/* Refine name */ /* Refine name */
...@@ -159,10 +159,9 @@ void INSERT_TASK_zgetrf_percol_offdiag( const RUNTIME_option_t *options, ...@@ -159,10 +159,9 @@ void INSERT_TASK_zgetrf_percol_offdiag( const RUNTIME_option_t *options,
void (*callback)(void*) = options->profiling ? cl_zgetrf_percol_offdiag_callback : NULL; void (*callback)(void*) = options->profiling ? cl_zgetrf_percol_offdiag_callback : NULL;
char *cl_name = "zgetrf_percol_offdiag"; char *cl_name = "zgetrf_percol_offdiag";
/* Handle cache */ /* Handle cache */
CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_BEGIN_ACCESS_DECLARATION;
CHAMELEON_ACCESS_RW(A, Am, An); CHAMELEON_ACCESS_RW( A, Am, An );
CHAMELEON_END_ACCESS_DECLARATION; CHAMELEON_END_ACCESS_DECLARATION;
/* Refine name */ /* Refine name */
......
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