diff --git a/control/CMakeLists.txt b/control/CMakeLists.txt index 0fd19f58836468a32c90843685864374aa455d46..5cc1b6b04e00f3351d4d80b872c6b3ed7f121d59 100644 --- a/control/CMakeLists.txt +++ b/control/CMakeLists.txt @@ -50,7 +50,6 @@ set(CHAMELEON_HDRS global.h morse_f77.h morsewinthread.h - tile.h workspace.h ) diff --git a/control/common.h b/control/common.h index 81bce72c4f73839e0f48a2bcfaba627df088d34f..07c3adccc5e3dfa81028a14864f588a95fd87849 100644 --- a/control/common.h +++ b/control/common.h @@ -78,7 +78,6 @@ #include "control/auxiliary.h" #include "control/context.h" #include "control/descriptor.h" -#include "control/tile.h" #include "control/async.h" /******************************************************************************* diff --git a/control/tile.c b/control/tile.c index ea216a770a6767745e2659cc27e4f312a3161808..34491a21260fa402403a38b13909ef56436d95cd 100644 --- a/control/tile.c +++ b/control/tile.c @@ -29,10 +29,8 @@ * @brief Group routines exposed to users for matrices conversion LAPACK-Tile * */ - #include "control/common.h" #include "control/auxiliary.h" -#include "control/tile.h" /** *************************************************************************** * @@ -62,6 +60,7 @@ int MORSE_Lapack_to_Tile(void *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(); @@ -74,36 +73,27 @@ int MORSE_Lapack_to_Tile(void *Af77, int LDA, MORSE_desc_t *A) morse_error("MORSE_Lapack_to_Tile", "invalid descriptor"); return MORSE_ERR_ILLEGAL_VALUE; } + + /* 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; + + RUNTIME_desc_create( &B ); + morse_sequence_create(morse, &sequence); - switch( A->dtyp ) { -#if defined(PRECISION_s) - case MorseRealFloat: - morse_pslapack_to_tile(Af77, LDA, A, sequence, &request); - break; -#endif - -#if defined(PRECISION_d) - case MorseRealDouble: - morse_pdlapack_to_tile(Af77, LDA, A, sequence, &request); - break; -#endif - -#if defined(PRECISION_c) - case MorseComplexFloat: - morse_pclapack_to_tile(Af77, LDA, A, sequence, &request); - break; -#endif - -#if defined(PRECISION_z) - case MorseComplexDouble: - morse_pzlapack_to_tile(Af77, LDA, A, sequence, &request); - break; -#endif - - default: - morse_error("MORSE_Lapack_to_Tile", "Type unknown"); - } - RUNTIME_barrier(morse); + + morse_pzlacpy( MorseUpperLower, &B, A, sequence, &request ); + + RUNTIME_desc_flush( &B, sequence ); + RUNTIME_desc_flush( A, sequence ); + RUNTIME_sequence_wait( morse, sequence ); + + RUNTIME_desc_destroy( &B ); + status = sequence->status; morse_sequence_destroy(morse, sequence); return status; @@ -137,6 +127,7 @@ int MORSE_Tile_to_Lapack(MORSE_desc_t *A, void *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(); @@ -149,36 +140,26 @@ int MORSE_Tile_to_Lapack(MORSE_desc_t *A, void *Af77, int LDA) morse_error("MORSE_Tile_to_Lapack", "invalid descriptor"); return MORSE_ERR_ILLEGAL_VALUE; } + + /* 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; + + RUNTIME_desc_create( &B ); + morse_sequence_create(morse, &sequence); - switch( A->dtyp ) { -#if defined(PRECISION_s) - case MorseRealFloat: - morse_pstile_to_lapack(A, Af77, LDA, sequence, &request); - break; -#endif - -#if defined(PRECISION_d) - case MorseRealDouble: - morse_pdtile_to_lapack(A, Af77, LDA, sequence, &request); - break; -#endif - -#if defined(PRECISION_c) - case MorseComplexFloat: - morse_pctile_to_lapack(A, Af77, LDA, sequence, &request); - break; -#endif - -#if defined(PRECISION_z) - case MorseComplexDouble: - morse_pztile_to_lapack(A, Af77, LDA, sequence, &request); - break; -#endif - - default: - morse_error("MORSE_Tile_to_Lapack", "Type unknown"); - } - RUNTIME_barrier(morse); + morse_pzlacpy( MorseUpperLower, A, &B, sequence, &request ); + + RUNTIME_desc_flush( A, sequence ); + RUNTIME_desc_flush( &B, sequence ); + RUNTIME_sequence_wait( morse, sequence ); + + RUNTIME_desc_destroy( &B ); + status = sequence->status; morse_sequence_destroy(morse, sequence); return status; diff --git a/control/tile.h b/control/tile.h deleted file mode 100644 index 95f61e65a7fb542fb14ca6492b2138c465a86df9..0000000000000000000000000000000000000000 --- a/control/tile.h +++ /dev/null @@ -1,58 +0,0 @@ -/** - * - * @copyright (c) 2009-2014 The University of Tennessee and The University - * of Tennessee Research Foundation. - * All rights reserved. - * @copyright (c) 2012-2014 Inria. All rights reserved. - * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved. - * - **/ - -/** - * - * @file tile.h - * - * MORSE auxiliary routines - * MORSE is a software package provided by Univ. of Tennessee, - * Univ. of California Berkeley and Univ. of Colorado Denver - * - * @version 0.9.0 - * @author Jakub Kurzak - * @author Cedric Castagnede - * @date 2010-11-15 - * - **/ -#ifndef _MORSE_TILE_H_ -#define _MORSE_TILE_H_ - -#if defined( _WIN32 ) || defined( _WIN64 ) -typedef __int64 int64_t; -#else -#include <inttypes.h> -#endif - -#define ELTADDR(A, type, m, n) (type *)morse_geteltaddr(A, m, n) -#define ELTLDD(A, k) ( ( (((k)-1)/(A).mb) + (A).i/(A).mb) < (A).lm1 ? (A).mb : (A).lm%(A).mb ) - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************* - * Internal routines - dynamic scheduling - **/ -void morse_pztile_to_lapack(MORSE_desc_t*, MORSE_Complex64_t*, int, MORSE_sequence_t *sequence, MORSE_request_t *request); -void morse_pctile_to_lapack(MORSE_desc_t*, MORSE_Complex32_t*, int, MORSE_sequence_t *sequence, MORSE_request_t *request); -void morse_pdtile_to_lapack(MORSE_desc_t*, double*, int, MORSE_sequence_t *sequence, MORSE_request_t *request); -void morse_pstile_to_lapack(MORSE_desc_t*, float*, int, MORSE_sequence_t *sequence, MORSE_request_t *request); - -void morse_pzlapack_to_tile(MORSE_Complex64_t*, int, MORSE_desc_t*, MORSE_sequence_t *sequence, MORSE_request_t *request); -void morse_pclapack_to_tile(MORSE_Complex32_t*, int, MORSE_desc_t*, MORSE_sequence_t *sequence, MORSE_request_t *request); -void morse_pdlapack_to_tile(double*, int, MORSE_desc_t*, MORSE_sequence_t *sequence, MORSE_request_t *request); -void morse_pslapack_to_tile(float*, int, MORSE_desc_t*, MORSE_sequence_t *sequence, MORSE_request_t *request); - -#ifdef __cplusplus -} -#endif - -#endif