From bd54493cd313f909fcbc3b140a0619958e8524a3 Mon Sep 17 00:00:00 2001 From: Matthieu Kuhn <matthieu.kuhn@atos.net> Date: Thu, 20 Apr 2023 18:06:04 +0200 Subject: [PATCH] starpu/codelet/getrf_nopiv: move nopiv percol codelets to a dedicated file and rename them (remove panel) --- compute/pzgetrf.c | 14 ++--- compute/zgetrf.c | 1 + include/chameleon/tasks_z.h | 20 +++---- runtime/CMakeLists.txt | 5 +- .../codelets/codelet_zgetrf_nopiv_percol.c | 60 +++++++++++++++++++ runtime/openmp/codelets/codelet_zpanel.c | 60 ------------------- .../codelets/codelet_zgetrf_nopiv_percol.c | 60 +++++++++++++++++++ runtime/parsec/codelets/codelet_zpanel.c | 60 ------------------- .../codelets/codelet_zgetrf_nopiv_percol.c | 60 +++++++++++++++++++ runtime/quark/codelets/codelet_zpanel.c | 60 ------------------- ...zpanel.c => codelet_zgetrf_nopiv_percol.c} | 37 ++++++------ 11 files changed, 219 insertions(+), 218 deletions(-) create mode 100644 runtime/openmp/codelets/codelet_zgetrf_nopiv_percol.c delete mode 100644 runtime/openmp/codelets/codelet_zpanel.c create mode 100644 runtime/parsec/codelets/codelet_zgetrf_nopiv_percol.c delete mode 100644 runtime/parsec/codelets/codelet_zpanel.c create mode 100644 runtime/quark/codelets/codelet_zgetrf_nopiv_percol.c delete mode 100644 runtime/quark/codelets/codelet_zpanel.c rename runtime/starpu/codelets/{codelet_zpanel.c => codelet_zgetrf_nopiv_percol.c} (79%) diff --git a/compute/pzgetrf.c b/compute/pzgetrf.c index 1d93acc5e..368a3d46f 100644 --- a/compute/pzgetrf.c +++ b/compute/pzgetrf.c @@ -11,20 +11,20 @@ * * @brief Chameleon zgetrf parallel algorithm * - * @version 1.2.0 + * @version 1.3.0 * @author Omar Zenati * @author Mathieu Faverge * @author Emmanuel Agullo * @author Matthieu Kuhn - * @date 2023-02-21 + * @date 2023-08-22 * @precisions normal z -> s d c * */ #include "control/common.h" -#define A(m,n) A, m, n -#define U(m,n) &(ws->U), m, n -#define IPIV(m) IPIV, m, 1 +#define A(m,n) A, m, n +#define U(m,n) &(ws->U), m, n +#define IPIV(m) IPIV, m, 1 /* * Static variable to know how to handle the data within the kernel @@ -136,13 +136,13 @@ chameleon_pzgetrf_panel_facto_nopiv_percol( struct chameleon_pzgetrf_s *ws, * Algorithm per column without pivoting */ for(h=0; h<minmn; h++){ - INSERT_TASK_zgetrf_panel_nopiv_percol_diag( + INSERT_TASK_zgetrf_nopiv_percol_diag( options, tempkm, tempkn, h, A( k, k ), U( k, k ), A->mb * k ); for (m = k+1; m < A->mt; m++) { tempmm = (m == (A->mt - 1)) ? A->m - m * A->mb : A->mb; - INSERT_TASK_zgetrf_panel_nopiv_percol_trsm( + INSERT_TASK_zgetrf_nopiv_percol_trsm( options, tempmm, tempkn, h, A( m, k ), U( k, k ) ); } diff --git a/compute/zgetrf.c b/compute/zgetrf.c index 3c0821911..9d1b19806 100644 --- a/compute/zgetrf.c +++ b/compute/zgetrf.c @@ -218,6 +218,7 @@ CHAMELEON_zgetrf( int M, int N, CHAMELEON_Complex64_t *A, int LDA, int *IPIV ) /* Allocate workspace for partial pivoting */ ws = CHAMELEON_zgetrf_WS_Alloc( &descAt ); + /* Call the tile interface */ CHAMELEON_zgetrf_Tile_Async( &descAt, ws, sequence, &request ); diff --git a/include/chameleon/tasks_z.h b/include/chameleon/tasks_z.h index b58895aa4..7027be42d 100644 --- a/include/chameleon/tasks_z.h +++ b/include/chameleon/tasks_z.h @@ -24,7 +24,7 @@ * @author Alycia Lisito * @author Romain Peressoni * @author Matthieu Kuhn - * @date 2023-07-06 + * @date 2023-08-22 * @precisions normal z -> c d s * */ @@ -486,15 +486,15 @@ void RUNTIME_zgersum_submit_tree( const RUNTIME_option_t *options, /* * Tasks for LU factorization with partial pivoting */ -void INSERT_TASK_zgetrf_panel_nopiv_percol_diag( const RUNTIME_option_t *options, - int m, int n, int k, - const CHAM_desc_t *A, int Am, int An, - const CHAM_desc_t *U, int Um, int Un, - int iinfo ); +void INSERT_TASK_zgetrf_nopiv_percol_diag( const RUNTIME_option_t *options, + int m, int n, int k, + const CHAM_desc_t *A, int Am, int An, + const CHAM_desc_t *U, int Um, int Un, + int iinfo ); -void INSERT_TASK_zgetrf_panel_nopiv_percol_trsm( const RUNTIME_option_t *options, - int m, int n, int k, - const CHAM_desc_t *A, int Am, int An, - const CHAM_desc_t *U, int Um, int Un ); +void INSERT_TASK_zgetrf_nopiv_percol_trsm( const RUNTIME_option_t *options, + int m, int n, int k, + const CHAM_desc_t *A, int Am, int An, + const CHAM_desc_t *U, int Um, int Un ); #endif /* _chameleon_tasks_z_h_ */ diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt index fc1aac335..dcab800af 100644 --- a/runtime/CMakeLists.txt +++ b/runtime/CMakeLists.txt @@ -17,14 +17,14 @@ # Univ. of California Berkeley, # Univ. of Colorado Denver. # -# @version 1.2.0 +# @version 1.3.0 # @author Cedric Castagnede # @author Emmanuel Agullo # @author Mathieu Faverge # @author Florent Pruvost # @author Philippe Virouleau # @author Matthieu Kuhn -# @date 2023-02-21 +# @date 2023-08-22 # ### @@ -66,6 +66,7 @@ set(CODELETS_ZSRC codelets/codelet_zgetrf.c codelets/codelet_zgetrf_incpiv.c codelets/codelet_zgetrf_nopiv.c + codelets/codelet_zgetrf_nopiv_percol.c codelets/codelet_zpanel.c codelets/codelet_zhe2ge.c codelets/codelet_zherfb.c diff --git a/runtime/openmp/codelets/codelet_zgetrf_nopiv_percol.c b/runtime/openmp/codelets/codelet_zgetrf_nopiv_percol.c new file mode 100644 index 000000000..589bce56f --- /dev/null +++ b/runtime/openmp/codelets/codelet_zgetrf_nopiv_percol.c @@ -0,0 +1,60 @@ +/** + * + * @file openmp/codelet_zgetrf_nopiv_percol.c + * + * @copyright 2012-2023 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, + * Univ. Bordeaux. All rights reserved. + * + *** + * + * @brief Chameleon zgetrf_nopiv_percol OpenMP codelets + * + * @version 1.3.0 + * @comment Codelets to perform panel factorization with partial pivoting + * + * @author Mathieu Faverge + * @author Matthieu Kuhn + * @date 2023-08-22 + * @precisions normal z -> c d s + * + */ +#include "chameleon_openmp.h" +#include "chameleon/tasks_z.h" + +void INSERT_TASK_zgetrf_nopiv_percol_diag( const RUNTIME_option_t *options, + int m, int n, int k, + const CHAM_desc_t *A, int Am, int An, + const CHAM_desc_t *U, int Um, int Un, + int iinfo ) +{ + assert( 0 ); + (void)options; + (void)m; + (void)n; + (void)k; + (void)A; + (void)Am; + (void)An; + (void)U; + (void)Um; + (void)Un; + (void)iinfo; +} + +void INSERT_TASK_zgetrf_nopiv_percol_trsm( const RUNTIME_option_t *options, + int m, int n, int k, + const CHAM_desc_t *A, int Am, int An, + const CHAM_desc_t *U, int Um, int Un ) +{ + assert( 0 ); + (void)options; + (void)m; + (void)n; + (void)k; + (void)A; + (void)Am; + (void)An; + (void)U; + (void)Um; + (void)Un; +} diff --git a/runtime/openmp/codelets/codelet_zpanel.c b/runtime/openmp/codelets/codelet_zpanel.c deleted file mode 100644 index 6c321a849..000000000 --- a/runtime/openmp/codelets/codelet_zpanel.c +++ /dev/null @@ -1,60 +0,0 @@ -/** - * - * @file openmp/codelet_zpanel.c - * - * @copyright 2012-2023 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, - * Univ. Bordeaux. All rights reserved. - * - *** - * - * @brief Chameleon zpanel OpenMP codelets - * - * @version 1.2.0 - * @comment Codelets to perform panel factorization with partial pivoting - * - * @author Mathieu Faverge - * @date 2023-02-21 - * @precisions normal z -> c d s - * - */ -#include "chameleon_openmp.h" -#include "chameleon/tasks_z.h" - -void INSERT_TASK_zgetrf_panel_nopiv_percol_diag( const RUNTIME_option_t *options, - int m, int n, int k, - const CHAM_desc_t *A, int Am, int An, - const CHAM_desc_t *U, int Um, int Un, - int iinfo ) -{ - assert( 0 ); - (void)options; - (void)m; - (void)n; - (void)k; - (void)A; - (void)Am; - (void)An; - (void)U; - (void)Um; - (void)Un; - (void)iinfo; -} - -void INSERT_TASK_zgetrf_panel_nopiv_percol_trsm( const RUNTIME_option_t *options, - int m, int n, int k, - const CHAM_desc_t *A, int Am, int An, - const CHAM_desc_t *U, int Um, int Un ) -{ - assert( 0 ); - (void)options; - (void)m; - (void)n; - (void)k; - (void)A; - (void)Am; - (void)An; - (void)U; - (void)Um; - (void)Un; -} - diff --git a/runtime/parsec/codelets/codelet_zgetrf_nopiv_percol.c b/runtime/parsec/codelets/codelet_zgetrf_nopiv_percol.c new file mode 100644 index 000000000..e8cf82053 --- /dev/null +++ b/runtime/parsec/codelets/codelet_zgetrf_nopiv_percol.c @@ -0,0 +1,60 @@ +/** + * + * @file parsec/codelet_zgetrf_nopiv_percol.c + * + * @copyright 2012-2023 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, + * Univ. Bordeaux. All rights reserved. + * + *** + * + * @brief Chameleon zgetrf_nopiv_percol Parsec codelets + * + * @version 1.3.0 + * @comment Codelets to perform panel factorization with partial pivoting + * + * @author Mathieu Faverge + * @author Matthieu Kuhn + * @date 2023-08-22 + * @precisions normal z -> c d s + * + */ +#include "chameleon_parsec.h" +#include "chameleon/tasks_z.h" + +void INSERT_TASK_zgetrf_nopiv_percol_diag( const RUNTIME_option_t *options, + int m, int n, int k, + const CHAM_desc_t *A, int Am, int An, + const CHAM_desc_t *U, int Um, int Un, + int iinfo ) +{ + assert( 0 ); + (void)options; + (void)m; + (void)n; + (void)k; + (void)A; + (void)Am; + (void)An; + (void)U; + (void)Um; + (void)Un; + (void)iinfo; +} + +void INSERT_TASK_zgetrf_nopiv_percol_trsm( const RUNTIME_option_t *options, + int m, int n, int k, + const CHAM_desc_t *A, int Am, int An, + const CHAM_desc_t *U, int Um, int Un ) +{ + assert( 0 ); + (void)options; + (void)m; + (void)n; + (void)k; + (void)A; + (void)Am; + (void)An; + (void)U; + (void)Um; + (void)Un; +} diff --git a/runtime/parsec/codelets/codelet_zpanel.c b/runtime/parsec/codelets/codelet_zpanel.c deleted file mode 100644 index 41e9e2b5f..000000000 --- a/runtime/parsec/codelets/codelet_zpanel.c +++ /dev/null @@ -1,60 +0,0 @@ -/** - * - * @file parsec/codelet_zpanel.c - * - * @copyright 2012-2023 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, - * Univ. Bordeaux. All rights reserved. - * - *** - * - * @brief Chameleon zpanel Parsec codelets - * - * @version 1.2.0 - * @comment Codelets to perform panel factorization with partial pivoting - * - * @author Mathieu Faverge - * @date 2023-02-21 - * @precisions normal z -> c d s - * - */ -#include "chameleon_parsec.h" -#include "chameleon/tasks_z.h" - -void INSERT_TASK_zgetrf_panel_nopiv_percol_diag( const RUNTIME_option_t *options, - int m, int n, int k, - const CHAM_desc_t *A, int Am, int An, - const CHAM_desc_t *U, int Um, int Un, - int iinfo ) -{ - assert( 0 ); - (void)options; - (void)m; - (void)n; - (void)k; - (void)A; - (void)Am; - (void)An; - (void)U; - (void)Um; - (void)Un; - (void)iinfo; -} - -void INSERT_TASK_zgetrf_panel_nopiv_percol_trsm( const RUNTIME_option_t *options, - int m, int n, int k, - const CHAM_desc_t *A, int Am, int An, - const CHAM_desc_t *U, int Um, int Un ) -{ - assert( 0 ); - (void)options; - (void)m; - (void)n; - (void)k; - (void)A; - (void)Am; - (void)An; - (void)U; - (void)Um; - (void)Un; -} - diff --git a/runtime/quark/codelets/codelet_zgetrf_nopiv_percol.c b/runtime/quark/codelets/codelet_zgetrf_nopiv_percol.c new file mode 100644 index 000000000..dc1d00d0a --- /dev/null +++ b/runtime/quark/codelets/codelet_zgetrf_nopiv_percol.c @@ -0,0 +1,60 @@ +/** + * + * @file quark/codelet_zgetrf_nopiv_percol.c + * + * @copyright 2012-2023 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, + * Univ. Bordeaux. All rights reserved. + * + *** + * + * @brief Chameleon zgetrf_nopiv_percol Quark codelets + * + * @version 1.3.0 + * @comment Codelets to perform panel factorization with partial pivoting + * + * @author Mathieu Faverge + * @author Matthieu Kuhn + * @date 2023-08-22 + * @precisions normal z -> c d s + * + */ +#include "chameleon_quark.h" +#include "chameleon/tasks_z.h" + +void INSERT_TASK_zgetrf_nopiv_percol_diag( const RUNTIME_option_t *options, + int m, int n, int k, + const CHAM_desc_t *A, int Am, int An, + const CHAM_desc_t *U, int Um, int Un, + int iinfo ) +{ + assert( 0 ); + (void)options; + (void)m; + (void)n; + (void)k; + (void)A; + (void)Am; + (void)An; + (void)U; + (void)Um; + (void)Un; + (void)iinfo; +} + +void INSERT_TASK_zgetrf_nopiv_percol_trsm( const RUNTIME_option_t *options, + int m, int n, int k, + const CHAM_desc_t *A, int Am, int An, + const CHAM_desc_t *U, int Um, int Un ) +{ + assert( 0 ); + (void)options; + (void)m; + (void)n; + (void)k; + (void)A; + (void)Am; + (void)An; + (void)U; + (void)Um; + (void)Un; +} diff --git a/runtime/quark/codelets/codelet_zpanel.c b/runtime/quark/codelets/codelet_zpanel.c deleted file mode 100644 index 015ea31c7..000000000 --- a/runtime/quark/codelets/codelet_zpanel.c +++ /dev/null @@ -1,60 +0,0 @@ -/** - * - * @file quark/codelet_zpanel.c - * - * @copyright 2012-2023 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, - * Univ. Bordeaux. All rights reserved. - * - *** - * - * @brief Chameleon zpanel Quark codelets - * - * @version 1.2.0 - * @comment Codelets to perform panel factorization with partial pivoting - * - * @author Mathieu Faverge - * @date 2023-02-21 - * @precisions normal z -> c d s - * - */ -#include "chameleon_quark.h" -#include "chameleon/tasks_z.h" - -void INSERT_TASK_zgetrf_panel_nopiv_percol_diag( const RUNTIME_option_t *options, - int m, int n, int k, - const CHAM_desc_t *A, int Am, int An, - const CHAM_desc_t *U, int Um, int Un, - int iinfo ) -{ - assert( 0 ); - (void)options; - (void)m; - (void)n; - (void)k; - (void)A; - (void)Am; - (void)An; - (void)U; - (void)Um; - (void)Un; - (void)iinfo; -} - -void INSERT_TASK_zgetrf_panel_nopiv_percol_trsm( const RUNTIME_option_t *options, - int m, int n, int k, - const CHAM_desc_t *A, int Am, int An, - const CHAM_desc_t *U, int Um, int Un ) -{ - assert( 0 ); - (void)options; - (void)m; - (void)n; - (void)k; - (void)A; - (void)Am; - (void)An; - (void)U; - (void)Um; - (void)Un; -} - diff --git a/runtime/starpu/codelets/codelet_zpanel.c b/runtime/starpu/codelets/codelet_zgetrf_nopiv_percol.c similarity index 79% rename from runtime/starpu/codelets/codelet_zpanel.c rename to runtime/starpu/codelets/codelet_zgetrf_nopiv_percol.c index 7e450986c..554735a47 100644 --- a/runtime/starpu/codelets/codelet_zpanel.c +++ b/runtime/starpu/codelets/codelet_zgetrf_nopiv_percol.c @@ -1,20 +1,19 @@ /** * - * @file starpu/codelet_zpanel.c + * @file starpu/codelet_zgetrf_nopiv_percol.c * * @copyright 2012-2023 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, * Univ. Bordeaux. All rights reserved. * *** * - * @brief Chameleon zpanel StarPU codelets + * @brief Chameleon getrf codelets to factorize the panel with no pivoting * * @version 1.3.0 - * @comment Codelets to perform panel factorization with partial pivoting * * @author Mathieu Faverge * @author Matthieu Kuhn - * @date 2023-07-06 + * @date 2023-08-22 * @precisions normal z -> c d s * */ @@ -22,11 +21,14 @@ #include "runtime_codelet_z.h" #include <coreblas/cblas_wrapper.h> +CHAMELEON_CL_CB( zgetrf_nopiv_percol_diag, cti_handle_get_m(task->handles[0]), 0, 0, M ); +CHAMELEON_CL_CB( zgetrf_nopiv_percol_trsm, cti_handle_get_m(task->handles[0]), 0, 0, M ); + static const CHAMELEON_Complex64_t zone = (CHAMELEON_Complex64_t) 1.0; static const CHAMELEON_Complex64_t mzone = (CHAMELEON_Complex64_t)-1.0; #if !defined(CHAMELEON_SIMULATION) -static void cl_zgetrf_panel_nopiv_percol_diag_cpu_func( void *descr[], void *cl_arg ) +static void cl_zgetrf_nopiv_percol_diag_cpu_func( void *descr[], void *cl_arg ) { CHAM_tile_t *tileA, *tileU; int m, n, k, lda, iinfo; @@ -71,17 +73,16 @@ static void cl_zgetrf_panel_nopiv_percol_diag_cpu_func( void *descr[], void *cl_ /* * Codelet definition */ -CODELETS_CPU( zgetrf_panel_nopiv_percol_diag, cl_zgetrf_panel_nopiv_percol_diag_cpu_func ); +CODELETS_CPU( zgetrf_nopiv_percol_diag, cl_zgetrf_nopiv_percol_diag_cpu_func ); -void INSERT_TASK_zgetrf_panel_nopiv_percol_diag( const RUNTIME_option_t *options, +void INSERT_TASK_zgetrf_nopiv_percol_diag( const RUNTIME_option_t *options, int m, int n, int k, const CHAM_desc_t *A, int Am, int An, const CHAM_desc_t *U, int Um, int Un, int iinfo ) { - struct starpu_codelet *codelet = &cl_zgetrf_panel_nopiv_percol_diag; - // void (*callback)(void*) = options->profiling ? cl_zgetrf_panel_nopiv_percol_diag_callback : NULL; - void (*callback)(void*) = NULL; + struct starpu_codelet *codelet = &cl_zgetrf_nopiv_percol_diag; + void (*callback)(void*) = options->profiling ? cl_zgetrf_nopiv_percol_diag_callback : NULL; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW( A, Am, An ); @@ -102,7 +103,7 @@ void INSERT_TASK_zgetrf_panel_nopiv_percol_diag( const RUNTIME_option_t *options STARPU_CALLBACK, callback, STARPU_EXECUTE_ON_WORKER, options->workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) - STARPU_NAME, "zgetrf_panel_nopiv_percol_diag", + STARPU_NAME, "zgetrf_nopiv_percol_diag", #endif 0); } @@ -111,7 +112,7 @@ void INSERT_TASK_zgetrf_panel_nopiv_percol_diag( const RUNTIME_option_t *options * Update column blocs */ #if !defined(CHAMELEON_SIMULATION) -static void cl_zgetrf_panel_nopiv_percol_trsm_cpu_func( void *descr[], void *cl_arg ) +static void cl_zgetrf_nopiv_percol_trsm_cpu_func( void *descr[], void *cl_arg ) { CHAM_tile_t *tileA, *tileU; int m, n, k, lda; @@ -144,16 +145,15 @@ static void cl_zgetrf_panel_nopiv_percol_trsm_cpu_func( void *descr[], void *cl_ /* * Codelet definition */ -CODELETS_CPU( zgetrf_panel_nopiv_percol_trsm, cl_zgetrf_panel_nopiv_percol_trsm_cpu_func ); +CODELETS_CPU( zgetrf_nopiv_percol_trsm, cl_zgetrf_nopiv_percol_trsm_cpu_func ); -void INSERT_TASK_zgetrf_panel_nopiv_percol_trsm( const RUNTIME_option_t *options, +void INSERT_TASK_zgetrf_nopiv_percol_trsm( const RUNTIME_option_t *options, int m, int n, int k, const CHAM_desc_t *A, int Am, int An, const CHAM_desc_t *U, int Um, int Un ) { - struct starpu_codelet *codelet = &cl_zgetrf_panel_nopiv_percol_trsm; - // void (*callback)(void*) = options->profiling ? cl_zgetrf_panel_nopiv_percol_trsm_callback : NULL; - void (*callback)(void*) = NULL; + struct starpu_codelet *codelet = &cl_zgetrf_nopiv_percol_trsm; + void (*callback)(void*) = options->profiling ? cl_zgetrf_nopiv_percol_trsm_callback : NULL; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW(A, Am, An); @@ -171,8 +171,7 @@ void INSERT_TASK_zgetrf_panel_nopiv_percol_trsm( const RUNTIME_option_t *options STARPU_CALLBACK, callback, STARPU_EXECUTE_ON_WORKER, options->workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) - STARPU_NAME, "zgetrf_panel_nopiv_percol_trsm", + STARPU_NAME, "zgetrf_nopiv_percol_trsm", #endif 0); } - -- GitLab