From cec2d4a60e0cca218c11dab83f9011e5ebd00d3e Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Wed, 24 Jan 2018 09:53:50 +0100 Subject: [PATCH] Factorize code --- compute/ztile.c | 77 ++----------------------------------------------- control/tile.c | 64 +++++++++++++++++++--------------------- 2 files changed, 32 insertions(+), 109 deletions(-) diff --git a/compute/ztile.c b/compute/ztile.c index 868a565e4..5fcd85369 100644 --- a/compute/ztile.c +++ b/compute/ztile.c @@ -63,44 +63,7 @@ ******************************************************************************/ int MORSE_zLapack_to_Tile( MORSE_Complex64_t *Af77, int LDA, MORSE_desc_t *A ) { - MORSE_context_t *morse; - MORSE_sequence_t *sequence = NULL; - MORSE_request_t request; - MORSE_desc_t *B; - int status; - - morse = morse_context_self(); - if (morse == NULL) { - morse_fatal_error("MORSE_zLapack_to_Tile", "MORSE not initialized"); - return MORSE_ERR_NOT_INITIALIZED; - } - /* Check descriptor for correctness */ - if (morse_desc_check( A ) != MORSE_SUCCESS) { - morse_error("MORSE_zLapack_to_Tile", "invalid descriptor"); - return MORSE_ERR_ILLEGAL_VALUE; - } - - /* Create the B descriptor to handle the Lapack format matrix */ - MORSE_Desc_Create_User( &B, Af77, MorseComplexDouble, A->mb, A->nb, A->bsiz, - LDA, A->n, 0, 0, A->m, A->n, 1, 1, - morse_getaddr_cm, morse_getblkldd_cm, NULL ); - - /* Start the computation */ - morse_sequence_create( morse, &sequence ); - - morse_pzlacpy( MorseUpperLower, B, A, sequence, &request ); - - MORSE_Desc_Flush( B, sequence ); - MORSE_Desc_Flush( A, sequence ); - - morse_sequence_wait( morse, sequence ); - - /* Destroy temporary B descriptor */ - MORSE_Desc_Destroy( &B ); - - status = sequence->status; - morse_sequence_destroy( morse, sequence ); - return status; + return MORSE_Lapack_to_Tile( Af77, LDA, A ); } /** @@ -140,41 +103,5 @@ int MORSE_zLapack_to_Tile( MORSE_Complex64_t *Af77, int LDA, MORSE_desc_t *A ) ******************************************************************************/ int MORSE_zTile_to_Lapack( MORSE_desc_t *A, MORSE_Complex64_t *Af77, int LDA ) { - MORSE_context_t *morse; - MORSE_sequence_t *sequence = NULL; - MORSE_request_t request; - MORSE_desc_t *B; - int status; - - morse = morse_context_self(); - if (morse == NULL) { - morse_fatal_error("MORSE_zTile_to_Lapack", "MORSE not initialized"); - return MORSE_ERR_NOT_INITIALIZED; - } - /* Check descriptor for correctness */ - if (morse_desc_check( A ) != MORSE_SUCCESS) { - morse_error("MORSE_zTile_to_Lapack", "invalid descriptor"); - return MORSE_ERR_ILLEGAL_VALUE; - } - - /* Create the B descriptor to handle the Lapack format matrix */ - MORSE_Desc_Create_User( &B, Af77, MorseComplexDouble, A->mb, A->nb, A->bsiz, - LDA, A->n, 0, 0, A->m, A->n, 1, 1, - morse_getaddr_cm, morse_getblkldd_cm, NULL ); - - /* Start the computation */ - morse_sequence_create( morse, &sequence ); - - morse_pzlacpy( MorseUpperLower, A, B, sequence, &request ); - - MORSE_Desc_Flush( A, sequence ); - MORSE_Desc_Flush( B, sequence ); - - morse_sequence_wait( morse, sequence ); - - MORSE_Desc_Destroy( &B ); - - status = sequence->status; - morse_sequence_destroy( morse, sequence ); - return status; + return MORSE_Tile_to_Lapack( A, Af77, LDA ); } diff --git a/control/tile.c b/control/tile.c index 34491a212..bc52d5f13 100644 --- a/control/tile.c +++ b/control/tile.c @@ -57,10 +57,10 @@ *****************************************************************************/ int MORSE_Lapack_to_Tile(void *Af77, int LDA, MORSE_desc_t *A) { - MORSE_context_t *morse; + MORSE_context_t *morse; MORSE_sequence_t *sequence = NULL; - MORSE_request_t request; - MORSE_desc_t B; + MORSE_request_t request; + MORSE_desc_t *B; int status; morse = morse_context_self(); @@ -75,27 +75,25 @@ int MORSE_Lapack_to_Tile(void *Af77, int LDA, MORSE_desc_t *A) } /* Create the B descriptor to handle the Lapack format matrix */ - B = morse_desc_init_user( - A->dtyp, A->mb, A->nb, A->bsiz, - LDA, A->n, 0, 0, A->m, A->n, 1, 1, - morse_getaddr_cm, morse_getblkldd_cm, NULL ); - B.mat = Af77; - B.styp = MorseCM; + MORSE_Desc_Create_User( &B, Af77, A->dtyp, A->mb, A->nb, A->bsiz, + LDA, A->n, 0, 0, A->m, A->n, 1, 1, + morse_getaddr_cm, morse_getblkldd_cm, NULL ); - RUNTIME_desc_create( &B ); + /* Start the computation */ + morse_sequence_create( morse, &sequence ); - morse_sequence_create(morse, &sequence); + morse_pzlacpy( MorseUpperLower, B, A, sequence, &request ); - morse_pzlacpy( MorseUpperLower, &B, A, sequence, &request ); + MORSE_Desc_Flush( B, sequence ); + MORSE_Desc_Flush( A, sequence ); - RUNTIME_desc_flush( &B, sequence ); - RUNTIME_desc_flush( A, sequence ); - RUNTIME_sequence_wait( morse, sequence ); + morse_sequence_wait( morse, sequence ); - RUNTIME_desc_destroy( &B ); + /* Destroy temporary B descriptor */ + MORSE_Desc_Destroy( &B ); status = sequence->status; - morse_sequence_destroy(morse, sequence); + morse_sequence_destroy( morse, sequence ); return status; } @@ -124,10 +122,10 @@ int MORSE_Lapack_to_Tile(void *Af77, int LDA, MORSE_desc_t *A) *****************************************************************************/ int MORSE_Tile_to_Lapack(MORSE_desc_t *A, void *Af77, int LDA) { - MORSE_context_t *morse; + MORSE_context_t *morse; MORSE_sequence_t *sequence = NULL; - MORSE_request_t request; - MORSE_desc_t B; + MORSE_request_t request; + MORSE_desc_t *B; int status; morse = morse_context_self(); @@ -142,25 +140,23 @@ int MORSE_Tile_to_Lapack(MORSE_desc_t *A, void *Af77, int LDA) } /* Create the B descriptor to handle the Lapack format matrix */ - B = morse_desc_init_user( - A->dtyp, A->mb, A->nb, A->bsiz, - LDA, A->n, 0, 0, A->m, A->n, 1, 1, - morse_getaddr_cm, morse_getblkldd_cm, NULL ); - B.mat = Af77; - B.styp = MorseCM; + MORSE_Desc_Create_User( &B, Af77, MorseComplexDouble, A->mb, A->nb, A->bsiz, + LDA, A->n, 0, 0, A->m, A->n, 1, 1, + morse_getaddr_cm, morse_getblkldd_cm, NULL ); - RUNTIME_desc_create( &B ); + /* Start the computation */ + morse_sequence_create( morse, &sequence ); - morse_sequence_create(morse, &sequence); - morse_pzlacpy( MorseUpperLower, A, &B, sequence, &request ); + morse_pzlacpy( MorseUpperLower, A, B, sequence, &request ); - RUNTIME_desc_flush( A, sequence ); - RUNTIME_desc_flush( &B, sequence ); - RUNTIME_sequence_wait( morse, sequence ); + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( B, sequence ); - RUNTIME_desc_destroy( &B ); + morse_sequence_wait( morse, sequence ); + + MORSE_Desc_Destroy( &B ); status = sequence->status; - morse_sequence_destroy(morse, sequence); + morse_sequence_destroy( morse, sequence ); return status; } -- GitLab