Commit 2e8a8bb2 authored by Mathieu Faverge's avatar Mathieu Faverge

Merge branch 'interface/parsec' into 'master'

PaRSEC DTD Interface

See merge request solverstack/chameleon!72
parents 1ff90ef1 59361c0a
...@@ -37,6 +37,10 @@ if ( CHAMELEON_SCHED_QUARK ) ...@@ -37,6 +37,10 @@ if ( CHAMELEON_SCHED_QUARK )
# No need for those extra diagonale tiles # No need for those extra diagonale tiles
set( CHAMELEON_COPY_DIAG OFF ) set( CHAMELEON_COPY_DIAG OFF )
endif() endif()
if ( CHAMELEON_SCHED_PARSEC )
# Actual DIAG can not be used with PaRSEC
set( CHAMELEON_COPY_DIAG OFF )
endif()
mark_as_advanced(CHAMELEON_COPY_DIAG) mark_as_advanced(CHAMELEON_COPY_DIAG)
......
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
**/ **/
#include "control/common.h" #include "control/common.h"
#define A(m,n) A, (m), (n) #define A(m,n) A, (m), (n)
#define T(m,n) T, (m), (n) #define T(m,n) T, (m), (n)
#define T2(m,n) T, (m), ((n)+A->nt) #define T2(m,n) T, (m), ((n)+A->nt)
#if defined(CHAMELEON_COPY_DIAG) #if defined(CHAMELEON_COPY_DIAG)
#define D(m,n) D, ((m)/BS), 0 #define D(m,n) D, ((m)/BS), 0
......
...@@ -35,9 +35,9 @@ ...@@ -35,9 +35,9 @@
#define A(_m_,_n_) A, _m_, _n_ #define A(_m_,_n_) A, _m_, _n_
#if defined(CHAMELEON_COPY_DIAG) #if defined(CHAMELEON_COPY_DIAG)
#define DIAG(_k_) DIAG, _k_, 0 #define D(k) D, k, 0
#else #else
#define DIAG(_k_) A, _k_, _k_ #define D(k) A, k, k
#endif #endif
#define L(_m_,_n_) L, _m_, _n_ #define L(_m_,_n_) L, _m_, _n_
#define IPIV(_m_,_n_) &(IPIV[(int64_t)A->mb*((int64_t)(_m_)+(int64_t)A->mt*(int64_t)(_n_))]) #define IPIV(_m_,_n_) &(IPIV[(int64_t)A->mb*((int64_t)(_m_)+(int64_t)A->mt*(int64_t)(_n_))])
...@@ -45,13 +45,13 @@ ...@@ -45,13 +45,13 @@
/******************************************************************************* /*******************************************************************************
* Parallel tile LU factorization - dynamic scheduling * Parallel tile LU factorization - dynamic scheduling
**/ **/
void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, void morse_pzgetrf_incpiv( MORSE_desc_t *A, MORSE_desc_t *L, MORSE_desc_t *D, int *IPIV,
MORSE_sequence_t *sequence, MORSE_request_t *request) MORSE_sequence_t *sequence, MORSE_request_t *request )
{ {
MORSE_desc_t *DIAG = NULL;
MORSE_context_t *morse; MORSE_context_t *morse;
MORSE_option_t options; MORSE_option_t options;
size_t h_work_size, d_work_size; size_t ws_worker = 0;
size_t ws_host = 0;
int k, m, n; int k, m, n;
int ldak, ldam; int ldak, ldam;
...@@ -65,14 +65,19 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, ...@@ -65,14 +65,19 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
RUNTIME_options_init(&options, morse, sequence, request); RUNTIME_options_init(&options, morse, sequence, request);
ib = MORSE_IB; ib = MORSE_IB;
h_work_size = sizeof(MORSE_Complex64_t)*( ib*L->nb );
d_work_size = 0;
RUNTIME_options_ws_alloc( &options, h_work_size, d_work_size ); /*
* zgetrf_incpiv = 0
* zgessm = 0
* ztstrf = A->mb * ib
* zssssm = 0
*/
ws_worker = A->mb * ib;
/* necessary to avoid dependencies between tasks regarding the diag tile */ ws_worker *= sizeof(MORSE_Complex64_t);
DIAG = (MORSE_desc_t*)malloc(sizeof(MORSE_desc_t)); ws_host *= sizeof(MORSE_Complex64_t);
morse_zdesc_alloc_diag(*DIAG, A->mb, A->nb, chameleon_min(A->m, A->n), A->nb, 0, 0, chameleon_min(A->m, A->n), A->nb, A->p, A->q);
RUNTIME_options_ws_alloc( &options, ws_worker, ws_host );
for (k = 0; k < minMNT; k++) { for (k = 0; k < minMNT; k++) {
RUNTIME_iteration_push(morse, k); RUNTIME_iteration_push(morse, k);
...@@ -94,7 +99,7 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, ...@@ -94,7 +99,7 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
&options, &options,
MorseUpperLower, tempkm, tempkn, A->nb, MorseUpperLower, tempkm, tempkn, A->nb,
A(k, k), ldak, A(k, k), ldak,
DIAG(k), ldak); D(k), ldak);
#endif #endif
} }
...@@ -105,7 +110,7 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, ...@@ -105,7 +110,7 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
tempkm, tempnn, tempkm, ib, L->nb, tempkm, tempnn, tempkm, ib, L->nb,
IPIV(k, k), IPIV(k, k),
L(k, k), L->mb, L(k, k), L->mb,
DIAG(k), ldak, D(k), ldak,
A(k, n), ldak); A(k, n), ldak);
} }
for (m = k+1; m < A->mt; m++) { for (m = k+1; m < A->mt; m++) {
...@@ -138,7 +143,5 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, ...@@ -138,7 +143,5 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
RUNTIME_options_ws_free(&options); RUNTIME_options_ws_free(&options);
RUNTIME_options_finalize(&options, morse); RUNTIME_options_finalize(&options, morse);
(void)D;
morse_desc_mat_free(DIAG);
free(DIAG);
} }
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
/******************************************************************************* /*******************************************************************************
* Parallel forward substitution for tile LU - dynamic scheduling * Parallel forward substitution for tile LU - dynamic scheduling
**/ **/
void morse_pztrsmpl(MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *L, int *IPIV, void morse_pztrsmpl( MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *L, int *IPIV,
MORSE_sequence_t *sequence, MORSE_request_t *request) MORSE_sequence_t *sequence, MORSE_request_t *request )
{ {
MORSE_context_t *morse; MORSE_context_t *morse;
MORSE_option_t options; MORSE_option_t options;
......
...@@ -132,6 +132,7 @@ int MORSE_zgelqf( int M, int N, ...@@ -132,6 +132,7 @@ int MORSE_zgelqf( int M, int N,
/* Submit the matrix conversion back */ /* Submit the matrix conversion back */
morse_ztile2lap( morse, &descAl, &descAt, morse_ztile2lap( morse, &descAl, &descAt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -129,6 +129,8 @@ int MORSE_zgelqf_param( const libhqr_tree_t *qrtree, int M, int N, ...@@ -129,6 +129,8 @@ int MORSE_zgelqf_param( const libhqr_tree_t *qrtree, int M, int N,
/* Submit the matrix conversion back */ /* Submit the matrix conversion back */
morse_ztile2lap( morse, &descAl, &descAt, morse_ztile2lap( morse, &descAl, &descAt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -152,6 +152,7 @@ int MORSE_zgelqs( int M, int N, int NRHS, ...@@ -152,6 +152,7 @@ int MORSE_zgelqs( int M, int N, int NRHS,
MorseDescInput, MorseUpperLower, sequence, &request ); MorseDescInput, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt, morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -154,6 +154,8 @@ int MORSE_zgelqs_param( const libhqr_tree_t *qrtree, int M, int N, int NRHS, ...@@ -154,6 +154,8 @@ int MORSE_zgelqs_param( const libhqr_tree_t *qrtree, int M, int N, int NRHS,
MorseDescInput, MorseUpperLower, sequence, &request ); MorseDescInput, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt, morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -194,6 +194,7 @@ int MORSE_zgels( MORSE_enum trans, int M, int N, int NRHS, ...@@ -194,6 +194,7 @@ int MORSE_zgels( MORSE_enum trans, int M, int N, int NRHS,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt, morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -195,6 +195,8 @@ int MORSE_zgels_param( const libhqr_tree_t *qrtree, MORSE_enum trans, int M, int ...@@ -195,6 +195,8 @@ int MORSE_zgels_param( const libhqr_tree_t *qrtree, MORSE_enum trans, int M, int
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt, morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -131,6 +131,7 @@ int MORSE_zgeqrf( int M, int N, ...@@ -131,6 +131,7 @@ int MORSE_zgeqrf( int M, int N,
/* Submit the matrix conversion back */ /* Submit the matrix conversion back */
morse_ztile2lap( morse, &descAl, &descAt, morse_ztile2lap( morse, &descAl, &descAt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -134,6 +134,8 @@ int MORSE_zgeqrf_param( const libhqr_tree_t *qrtree, int M, int N, ...@@ -134,6 +134,8 @@ int MORSE_zgeqrf_param( const libhqr_tree_t *qrtree, int M, int N,
/* Submit the matrix conversion back */ /* Submit the matrix conversion back */
morse_ztile2lap( morse, &descAl, &descAt, morse_ztile2lap( morse, &descAl, &descAt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -152,6 +152,7 @@ int MORSE_zgeqrs( int M, int N, int NRHS, ...@@ -152,6 +152,7 @@ int MORSE_zgeqrs( int M, int N, int NRHS,
MorseDescInput, MorseUpperLower, sequence, &request ); MorseDescInput, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt, morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -147,6 +147,8 @@ int MORSE_zgeqrs_param( const libhqr_tree_t *qrtree, int M, int N, int NRHS, ...@@ -147,6 +147,8 @@ int MORSE_zgeqrs_param( const libhqr_tree_t *qrtree, int M, int N, int NRHS,
MorseDescInput, MorseUpperLower, sequence, &request ); MorseDescInput, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt, morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -151,6 +151,7 @@ int MORSE_zgesv_incpiv( int N, int NRHS, ...@@ -151,6 +151,7 @@ int MORSE_zgesv_incpiv( int N, int NRHS,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt, morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descL, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
...@@ -267,6 +268,7 @@ int MORSE_zgesv_incpiv_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, ...@@ -267,6 +268,7 @@ int MORSE_zgesv_incpiv_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
MORSE_sequence_t *sequence, MORSE_request_t *request ) MORSE_sequence_t *sequence, MORSE_request_t *request )
{ {
MORSE_context_t *morse; MORSE_context_t *morse;
MORSE_desc_t D, *Dptr = NULL;
morse = morse_context_self(); morse = morse_context_self();
if (morse == NULL) { if (morse == NULL) {
...@@ -313,11 +315,28 @@ int MORSE_zgesv_incpiv_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, ...@@ -313,11 +315,28 @@ int MORSE_zgesv_incpiv_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
return MORSE_SUCCESS; return MORSE_SUCCESS;
*/ */
morse_pzgetrf_incpiv( A, L, IPIV, sequence, request ); #if defined(CHAMELEON_COPY_DIAG)
{
int n = chameleon_min(A->mt, A->nt) * A->nb;
morse_zdesc_alloc(D, A->mb, A->nb, A->m, n, 0, 0, A->m, n, );
Dptr = &D;
}
#endif
morse_pzgetrf_incpiv( A, L, Dptr, IPIV, sequence, request );
morse_pztrsmpl( A, B, L, IPIV, sequence, request ); morse_pztrsmpl( A, B, L, IPIV, sequence, request );
morse_pztrsm( MorseLeft, MorseUpper, MorseNoTrans, MorseNonUnit, (MORSE_Complex64_t)1.0, A, B, sequence, request ); morse_pztrsm( MorseLeft, MorseUpper, MorseNoTrans, MorseNonUnit, (MORSE_Complex64_t)1.0, A, B, sequence, request );
if (Dptr != NULL) {
MORSE_Desc_Flush( A, sequence );
MORSE_Desc_Flush( L, sequence );
MORSE_Desc_Flush( Dptr, sequence );
MORSE_Desc_Flush( B, sequence );
morse_sequence_wait( morse, sequence );
morse_desc_mat_free( Dptr );
}
(void)D;
return MORSE_SUCCESS; return MORSE_SUCCESS;
} }
...@@ -133,6 +133,7 @@ int MORSE_zgetrf_incpiv( int M, int N, ...@@ -133,6 +133,7 @@ int MORSE_zgetrf_incpiv( int M, int N,
/* Submit the matrix conversion back */ /* Submit the matrix conversion back */
morse_ztile2lap( morse, &descAl, &descAt, morse_ztile2lap( morse, &descAl, &descAt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descL, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
...@@ -244,6 +245,7 @@ int MORSE_zgetrf_incpiv_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, ...@@ -244,6 +245,7 @@ int MORSE_zgetrf_incpiv_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
MORSE_sequence_t *sequence, MORSE_request_t *request ) MORSE_sequence_t *sequence, MORSE_request_t *request )
{ {
MORSE_context_t *morse; MORSE_context_t *morse;
MORSE_desc_t D, *Dptr = NULL;
morse = morse_context_self(); morse = morse_context_self();
if (morse == NULL) { if (morse == NULL) {
...@@ -286,7 +288,23 @@ int MORSE_zgetrf_incpiv_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, ...@@ -286,7 +288,23 @@ int MORSE_zgetrf_incpiv_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV,
return MORSE_SUCCESS; return MORSE_SUCCESS;
*/ */
morse_pzgetrf_incpiv( A, L, IPIV, sequence, request ); #if defined(CHAMELEON_COPY_DIAG)
{
int n = chameleon_min(A->mt, A->nt) * A->nb;
morse_zdesc_alloc(D, A->mb, A->nb, A->m, n, 0, 0, A->m, n, );
Dptr = &D;
}
#endif
morse_pzgetrf_incpiv( A, L, Dptr, IPIV, sequence, request );
if (Dptr != NULL) {
MORSE_Desc_Flush( A, sequence );
MORSE_Desc_Flush( L, sequence );
MORSE_Desc_Flush( Dptr, sequence );
morse_sequence_wait( morse, sequence );
morse_desc_mat_free( Dptr );
}
(void)D;
return MORSE_SUCCESS; return MORSE_SUCCESS;
} }
...@@ -157,6 +157,7 @@ int MORSE_zgetrs_incpiv( MORSE_enum trans, int N, int NRHS, ...@@ -157,6 +157,7 @@ int MORSE_zgetrs_incpiv( MORSE_enum trans, int N, int NRHS,
MorseDescInput, MorseUpperLower, sequence, &request ); MorseDescInput, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt, morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descL, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -232,6 +232,8 @@ int MORSE_ztpgqrt( int M, int N, int K, int L, ...@@ -232,6 +232,8 @@ int MORSE_ztpgqrt( int M, int N, int K, int L,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
morse_ztile2lap( morse, &descQ2l, &descQ2t, morse_ztile2lap( morse, &descQ2l, &descQ2t,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT1, sequence );
MORSE_Desc_Flush( descT2, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -200,6 +200,7 @@ int MORSE_ztpqrt( int M, int N, int L, ...@@ -200,6 +200,7 @@ int MORSE_ztpqrt( int M, int N, int L,
MorseDescInout, MorseUpper, sequence, &request ); MorseDescInout, MorseUpper, sequence, &request );
morse_ztile2lap( morse, &descBl, &descBt, morse_ztile2lap( morse, &descBl, &descBt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -151,6 +151,7 @@ int MORSE_zunglq( int M, int N, int K, ...@@ -151,6 +151,7 @@ int MORSE_zunglq( int M, int N, int K,
MorseDescInput, MorseUpper, sequence, &request ); MorseDescInput, MorseUpper, sequence, &request );
morse_ztile2lap( morse, &descQl, &descQt, morse_ztile2lap( morse, &descQl, &descQt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -148,6 +148,8 @@ int MORSE_zunglq_param( const libhqr_tree_t *qrtree, int M, int N, int K, ...@@ -148,6 +148,8 @@ int MORSE_zunglq_param( const libhqr_tree_t *qrtree, int M, int N, int K,
MorseDescInput, MorseUpper, sequence, &request ); MorseDescInput, MorseUpper, sequence, &request );
morse_ztile2lap( morse, &descQl, &descQt, morse_ztile2lap( morse, &descQl, &descQt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -150,6 +150,7 @@ int MORSE_zungqr( int M, int N, int K, ...@@ -150,6 +150,7 @@ int MORSE_zungqr( int M, int N, int K,
MorseDescInput, MorseLower, sequence, &request ); MorseDescInput, MorseLower, sequence, &request );
morse_ztile2lap( morse, &descQl, &descQt, morse_ztile2lap( morse, &descQl, &descQt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -149,6 +149,8 @@ int MORSE_zungqr_param( const libhqr_tree_t *qrtree, ...@@ -149,6 +149,8 @@ int MORSE_zungqr_param( const libhqr_tree_t *qrtree,
MorseDescInput, MorseLower, sequence, &request ); MorseDescInput, MorseLower, sequence, &request );
morse_ztile2lap( morse, &descQl, &descQt, morse_ztile2lap( morse, &descQl, &descQt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -188,6 +188,7 @@ int MORSE_zunmlq( MORSE_enum side, MORSE_enum trans, int M, int N, int K, ...@@ -188,6 +188,7 @@ int MORSE_zunmlq( MORSE_enum side, MORSE_enum trans, int M, int N, int K,
MorseDescInput, MorseUpper, sequence, &request ); MorseDescInput, MorseUpper, sequence, &request );
morse_ztile2lap( morse, &descCl, &descCt, morse_ztile2lap( morse, &descCl, &descCt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -187,6 +187,8 @@ int MORSE_zunmlq_param( const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_enum ...@@ -187,6 +187,8 @@ int MORSE_zunmlq_param( const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_enum
MorseDescInput, MorseUpper, sequence, &request ); MorseDescInput, MorseUpper, sequence, &request );
morse_ztile2lap( morse, &descCl, &descCt, morse_ztile2lap( morse, &descCl, &descCt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -191,6 +191,7 @@ int MORSE_zunmqr( MORSE_enum side, MORSE_enum trans, int M, int N, int K, ...@@ -191,6 +191,7 @@ int MORSE_zunmqr( MORSE_enum side, MORSE_enum trans, int M, int N, int K,
MorseDescInput, MorseLower, sequence, &request ); MorseDescInput, MorseLower, sequence, &request );
morse_ztile2lap( morse, &descCl, &descCt, morse_ztile2lap( morse, &descCl, &descCt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -192,6 +192,8 @@ int MORSE_zunmqr_param( const libhqr_tree_t *qrtree, ...@@ -192,6 +192,8 @@ int MORSE_zunmqr_param( const libhqr_tree_t *qrtree,
MorseDescInput, MorseLower, sequence, &request ); MorseDescInput, MorseLower, sequence, &request );
morse_ztile2lap( morse, &descCl, &descCt, morse_ztile2lap( morse, &descCl, &descCt,
MorseDescInout, MorseUpperLower, sequence, &request ); MorseDescInout, MorseUpperLower, sequence, &request );
MORSE_Desc_Flush( descTS, sequence );
MORSE_Desc_Flush( descTT, sequence );
morse_sequence_wait( morse, sequence ); morse_sequence_wait( morse, sequence );
......
...@@ -78,7 +78,7 @@ void morse_pzgemm(MORSE_enum transA, MORSE_enum transB, MORSE_Complex64_t alpha, ...@@ -78,7 +78,7 @@ void morse_pzgemm(MORSE_enum transA, MORSE_enum transB, MORSE_Complex64_t alpha,
void morse_pzgeqrf(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *D, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzgeqrf(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *D, MORSE_sequence_t *sequence, MORSE_request_t *request);
void morse_pzgeqrfrh(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *D, int BS, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzgeqrfrh(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *D, int BS, MORSE_sequence_t *sequence, MORSE_request_t *request);
void morse_pzgetmi2(MORSE_enum idep, MORSE_enum odep, MORSE_enum storev, int m, int n, int mb, int nb, MORSE_Complex64_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzgetmi2(MORSE_enum idep, MORSE_enum odep, MORSE_enum storev, int m, int n, int mb, int nb, MORSE_Complex64_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, MORSE_desc_t *D, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request);
void morse_pzgetrf_nopiv(MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzgetrf_nopiv(MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
void morse_pzgetrf_reclap(MORSE_desc_t *A, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzgetrf_reclap(MORSE_desc_t *A, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request);
void morse_pzgetrf_rectil(MORSE_desc_t *A, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzgetrf_rectil(MORSE_desc_t *A, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request);
......
...@@ -199,6 +199,8 @@ int MORSE_Dealloc_Workspace(MORSE_desc_t **desc) ...@@ -199,6 +199,8 @@ int MORSE_Dealloc_Workspace(MORSE_desc_t **desc)
return MORSE_ERR_UNALLOCATED; return MORSE_ERR_UNALLOCATED;
} }
morse_desc_mat_free( *desc ); morse_desc_mat_free( *desc );
RUNTIME_desc_destroy( *desc );
free(*desc); free(*desc);
*desc = NULL; *desc = NULL;
return MORSE_SUCCESS; return MORSE_SUCCESS;
......
...@@ -85,7 +85,6 @@ set(RUNTIME_COMMON ...@@ -85,7 +85,6 @@ set(RUNTIME_COMMON
control/runtime_descriptor.c control/runtime_descriptor.c
control/runtime_options.c control/runtime_options.c
control/runtime_profiling.c control/runtime_profiling.c
codelets/codelet_dataflush.c
${RUNTIME_COMMON_GENERATED} ${RUNTIME_COMMON_GENERATED}
) )
......
/**
*
* @copyright (c) 2009-2015 The University of Tennessee and The University
* of Tennessee Research Foundation.
* All rights reserved.
* @copyright (c) 2012-2015 Inria. All rights reserved.
* @copyright (c) 2012-2016 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
*
**/
/**
*
* MORSE codelets kernel
* MORSE is a software package provided by Univ. of Tennessee,
* Univ. of California Berkeley and Univ. of Colorado Denver
*
* @version 2.5.0
* @author Reazul Hoque
* @precisions normal z -> c d s
*
**/
#include "chameleon_parsec.h"
#include "chameleon/morse_tasks.h"
void MORSE_TASK_flush_data( const MORSE_option_t *options,
const MORSE_desc_t *A, int Am, int An )
{
parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
parsec_dtd_data_flush( PARSEC_dtd_taskpool, RTBLKADDR( A, MORSE_Complex64_t, Am, An ) );
}
void MORSE_TASK_flush_desc( const MORSE_option_t *options,
MORSE_enum uplo, const MORSE_desc_t *A )
{
parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
parsec_dtd_data_flush_all( PARSEC_dtd_taskpool, (parsec_data_collection_t*)(A->schedopt) );
(void)uplo;
}
void MORSE_TASK_flush_all()
{
}
...@@ -24,31 +24,25 @@ ...@@ -24,31 +24,25 @@
#include "chameleon/morse_tasks_z.h" #include "chameleon/morse_tasks_z.h"
#include "coreblas/coreblas_z.h" #include "coreblas/coreblas_z.h"
static int static inline int
CORE_dzasum_parsec(parsec_execution_stream_t *context, CORE_dzasum_parsec( parsec_execution_stream_t *context,
parsec_task_t *this_task) parsec_task_t *this_task )
{ {
MORSE_enum *storev;