Mentions légales du service

Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • solverstack/chameleon
  • lvilleve/chameleon-toto
  • jcletort/chameleon
  • thibault/chameleon
  • tcojean/chameleon
  • sylvand/chameleon
  • viroulea/chameleon
  • x-ltac/chameleon
  • agullo/chameleon
  • glucas/chameleon
  • pswartva/chameleon
  • aguermou1/chameleon
  • eyrauddu/chameleon
  • mverite/chameleon
  • alisito/chameleon
  • furmento/chameleon
  • fpruvost/chameleon
  • ahourcau/chameleon
  • bnicolas/chameleon
  • pesterie/chameleon
  • mmarcos/chameleon
21 results
Show changes
Commits on Source (7)
......@@ -131,7 +131,6 @@ chameleon_pzgetrf_panel_facto_percol( struct chameleon_pzgetrf_s *ws,
* Algorithm per column with pivoting
*/
for (h=0; h<=minmn; h++){
INSERT_TASK_zgetrf_percol_diag(
options,
h, k * A->mb,
......@@ -139,8 +138,6 @@ chameleon_pzgetrf_panel_facto_percol( struct chameleon_pzgetrf_s *ws,
ipiv );
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(
options,
h, m * A->mb,
......@@ -193,7 +190,6 @@ chameleon_pzgetrf_panel_facto_blocked( struct chameleon_pzgetrf_s *ws,
ipiv );
for (m = k+1; m < A->mt; m++) {
INSERT_TASK_zgetrf_blocked_offdiag(
options,
j, m * A->mb, ws->ib,
......@@ -371,7 +367,13 @@ void chameleon_pzgetrf( struct chameleon_pzgetrf_s *ws,
RUNTIME_iteration_push( chamctxt, k );
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 );
options.forcesub = 0;
for (n = k+1; n < 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 )
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.
*
......
......@@ -587,7 +587,7 @@
PLASMA library to support multiple runtime systems, all developpers
of the PLASMA library are developpers of the Chameleon library.
The following people contributes to the development of Chameleon:
The following people contribute to the development of Chameleon:
* Emmanuel Agullo, PI
* Olivier Aumage
* Mathieu Faverge, PI
......
......@@ -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 ( 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
......
......@@ -140,6 +140,10 @@ if ( STARPU_FOUND )
if ( HAVE_STARPU_MPI_REDUX )
message("-- ${Blue}Add definition HAVE_STARPU_MPI_REDUX${ColourReset}")
endif()
check_function_exists(_starpu_mpi_redux_wrapup_data HAVE_STARPU_MPI_REDUX_WRAPUP)
if ( HAVE_STARPU_MPI_REDUX_WRAPUP )
message("-- ${Blue}Add definition HAVE_STARPU_MPI_REDUX_WRAPUP${ColourReset}")
endif()
check_function_exists(starpu_mpi_data_cpy_priority HAVE_STARPU_MPI_DATA_CPY_PRIORITY)
if ( HAVE_STARPU_MPI_DATA_CPY_PRIORITY )
message("-- ${Blue}Add definition HAVE_STARPU_MPI_DATA_CPY_PRIORITY${ColourReset}")
......
......@@ -114,7 +114,7 @@ void INSERT_TASK_zgetrf_blocked_diag( const RUNTIME_option_t *options,
/* Handle cache */
CHAMELEON_BEGIN_ACCESS_DECLARATION;
CHAMELEON_ACCESS_RW(A, Am, An);
CHAMELEON_ACCESS_RW( A, Am, An );
CHAMELEON_END_ACCESS_DECLARATION;
/* Refine name */
......@@ -197,7 +197,7 @@ void INSERT_TASK_zgetrf_blocked_offdiag( const RUNTIME_option_t *options,
/* Handle cache */
CHAMELEON_BEGIN_ACCESS_DECLARATION;
CHAMELEON_ACCESS_RW(A, Am, An);
CHAMELEON_ACCESS_RW( A, Am, An );
CHAMELEON_END_ACCESS_DECLARATION;
/* Refine name */
......@@ -275,7 +275,7 @@ void INSERT_TASK_zgetrf_blocked_trsm( const RUNTIME_option_t *options,
/* Handle cache */
CHAMELEON_BEGIN_ACCESS_DECLARATION;
CHAMELEON_ACCESS_RW(U, Um, Un);
CHAMELEON_ACCESS_RW( U, Um, Un );
CHAMELEON_END_ACCESS_DECLARATION;
/* Refine name */
......
......@@ -92,7 +92,7 @@ void INSERT_TASK_zgetrf_percol_diag( const RUNTIME_option_t *options,
/* Handle cache */
CHAMELEON_BEGIN_ACCESS_DECLARATION;
CHAMELEON_ACCESS_RW(A, Am, An);
CHAMELEON_ACCESS_RW( A, Am, An );
CHAMELEON_END_ACCESS_DECLARATION;
/* Refine name */
......@@ -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;
char *cl_name = "zgetrf_percol_offdiag";
/* Handle cache */
CHAMELEON_BEGIN_ACCESS_DECLARATION;
CHAMELEON_ACCESS_RW(A, Am, An);
CHAMELEON_ACCESS_RW( A, Am, An );
CHAMELEON_END_ACCESS_DECLARATION;
/* Refine name */
......
......@@ -304,14 +304,14 @@ void RUNTIME_ipiv_reducek( const RUNTIME_option_t *options,
starpu_data_handle_t nextpiv = RUNTIME_pivot_getaddr( ipiv, k, h );
starpu_data_handle_t prevpiv = RUNTIME_pivot_getaddr( ipiv, k, h-1 );
if ( h < ipiv->n ) {
#if defined(HAVE_STARPU_MPI_REDUX) && defined(CHAMELEON_USE_MPI)
#if !defined(HAVE_STARPU_MPI_REDUX_WRAPUP)
if ( h < ipiv->n ) {
starpu_mpi_redux_data_prio_tree( MPI_COMM_WORLD, nextpiv,
options->priority, 2 /* Binary tree */ );
}
#endif
#endif
}
/* Invalidate the previous pivot structure for correct initialization in later reuse */
if ( h > 0 ) {
......
......@@ -51,6 +51,7 @@
#cmakedefine HAVE_STARPU_MPI_INTERFACE_DATATYPE_NODE_REGISTER
#cmakedefine HAVE_STARPU_MPI_INTERFACE_DATATYPE_REGISTER
#cmakedefine HAVE_STARPU_MPI_REDUX
#cmakedefine HAVE_STARPU_MPI_REDUX_WRAPUP
#cmakedefine HAVE_STARPU_MPI_DATA_CPY_PRIORITY
#if (!defined(HAVE_STARPU_MPI_INTERFACE_DATATYPE_NODE_REGISTER) && !defined(HAVE_STARPU_MPI_INTERFACE_DATATYPE_REGISTER)) && defined(CHAMELEON_USE_MPI_DATATYPES)
......