From 1b50f2e9e7ba178cce8ed0be879b9554969b295c Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Thu, 23 Feb 2023 15:05:46 +0100 Subject: [PATCH] coreblas: Add print function --- cmake_modules/local_subs.py | 1 + coreblas/compute/CMakeLists.txt | 1 + coreblas/compute/core_zprint.c | 46 ++++++++++++++++++++++ coreblas/compute/core_ztile.c | 10 +++++ coreblas/include/coreblas/coreblas_z.h | 4 ++ coreblas/include/coreblas/coreblas_ztile.h | 1 + 6 files changed, 63 insertions(+) create mode 100644 coreblas/compute/core_zprint.c diff --git a/cmake_modules/local_subs.py b/cmake_modules/local_subs.py index 227afc049..02af5df38 100644 --- a/cmake_modules/local_subs.py +++ b/cmake_modules/local_subs.py @@ -43,6 +43,7 @@ _extra_blas = [ ('', 'scesca', 'dcesca', 'ccesca', 'zcesca' ), ('', 'sgesum', 'dgesum', 'cgesum', 'zgesum' ), ('', 'sgersum', 'dgersum', 'cgersum', 'zgersum' ), + ('', 'sprint', 'dprint', 'cprint', 'zprint' ), ] _extra_BLAS = [ [ x.upper() for x in row ] for row in _extra_blas ] diff --git a/coreblas/compute/CMakeLists.txt b/coreblas/compute/CMakeLists.txt index d880039fe..40baddc59 100644 --- a/coreblas/compute/CMakeLists.txt +++ b/coreblas/compute/CMakeLists.txt @@ -107,6 +107,7 @@ set(ZSRC core_zttqrt.c core_zunmlq.c core_zunmqr.c + core_zprint.c ) if( CHAMELEON_USE_HMAT ) list( APPEND ZSRC diff --git a/coreblas/compute/core_zprint.c b/coreblas/compute/core_zprint.c new file mode 100644 index 000000000..0e4fdc887 --- /dev/null +++ b/coreblas/compute/core_zprint.c @@ -0,0 +1,46 @@ +/** + * + * @file core_zprint.c + * + * @copyright 2012-2023 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, + * Univ. Bordeaux. All rights reserved. + * + *** + * + * @brief Chameleon core_zprint CPU kernel + * + * @version 1.0.0 + * @author Mathieu Faverge + * @date 2020-03-03 + * @precisions normal z -> c d s + * + */ +#include "coreblas/lapacke.h" +#include "coreblas.h" + +void +CORE_zprint( FILE *file, const char *header, + cham_uplo_t uplo, int M, int N, int Am, int An, + const CHAMELEON_Complex64_t *A, int lda ) +{ + FILE *output = (file == NULL) ? stdout : file; + int i, j; + + fflush( output ); + fprintf( output, "--- %10s (%2d, %2d) / %p, %d:\n", header, Am, An, A, lda ); + for(i=0; i<M; i++) { + fprintf( output, " " ); + for(j=0; j<N; j++) { +#if defined(PRECISION_z) || defined(PRECISION_c) + fprintf( output, " (% e, % e)", + creal( A[j*lda + i] ), + cimag( A[j*lda + i] )); +#else + fprintf( output, " % e", A[j*lda + i] ); +#endif + } + fprintf( output, "\n" ); + } + fprintf( output, "-------------------------\n" ); + fflush( output ); +} diff --git a/coreblas/compute/core_ztile.c b/coreblas/compute/core_ztile.c index 986d587f8..6de9b2c63 100644 --- a/coreblas/compute/core_ztile.c +++ b/coreblas/compute/core_ztile.c @@ -1072,3 +1072,13 @@ TCORE_zgram( cham_uplo_t uplo, return CORE_zgram( uplo, M, N, Mt, Nt, CHAM_tile_get_ptr( Di ), Di->ld, CHAM_tile_get_ptr( Dj ), Dj->ld, CHAM_tile_get_ptr( D ), CHAM_tile_get_ptr( A ), A->ld ); } + +void +TCORE_zprint( FILE *file, const char *header, + cham_uplo_t uplo, int M, int N, + int Am, int An, const CHAM_tile_t *A ) +{ + coreblas_kernel_trace( A ); + assert( A->format & CHAMELEON_TILE_FULLRANK ); + CORE_zprint( file, header, uplo, M, N, Am, An, CHAM_tile_get_ptr( A ), A->ld ); +} diff --git a/coreblas/include/coreblas/coreblas_z.h b/coreblas/include/coreblas/coreblas_z.h index b0bcf3bdb..050a79687 100644 --- a/coreblas/include/coreblas/coreblas_z.h +++ b/coreblas/include/coreblas/coreblas_z.h @@ -393,4 +393,8 @@ int CORE_zgram( cham_uplo_t uplo, int M, int N, int Mt, int Nt, const double *D, double *A, int LDA ); +void CORE_zprint( FILE *file, const char *header, + cham_uplo_t uplo, int m, int n, int Am, int An, + const CHAMELEON_Complex64_t *A, int lda ); + #endif /* _coreblas_z_h_ */ diff --git a/coreblas/include/coreblas/coreblas_ztile.h b/coreblas/include/coreblas/coreblas_ztile.h index aa66fdd75..74cd41316 100644 --- a/coreblas/include/coreblas/coreblas_ztile.h +++ b/coreblas/include/coreblas/coreblas_ztile.h @@ -86,5 +86,6 @@ int TCORE_zunmqr( cham_side_t side, cham_trans_t trans, int M, int N, int K, in int TCORE_zgesum( cham_store_t storev, int M, int N, const CHAM_tile_t *A, CHAM_tile_t *sum ); int TCORE_zcesca( int center, int scale, cham_store_t axis, int M, int N, int Mt, int Nt, const CHAM_tile_t *Gi, const CHAM_tile_t *Gj, const CHAM_tile_t *G, const CHAM_tile_t *Di, const CHAM_tile_t *Dj, CHAM_tile_t *A ); int TCORE_zgram( cham_uplo_t uplo, int M, int N, int Mt, int Nt, const CHAM_tile_t *Di, const CHAM_tile_t *Dj, const CHAM_tile_t *D, CHAM_tile_t *A ); +void TCORE_zprint( FILE *file, const char *header, cham_uplo_t uplo, int M, int N, int Am, int An, const CHAM_tile_t *A ); #endif /* _coreblas_ztile_h_ */ -- GitLab