From 8fda2448fc58cdf567a3b6b44ce55443e0c0bbc2 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Wed, 24 Jan 2018 18:00:44 +0100 Subject: [PATCH] Temporary fix for missing flush/wait in QR functions --- compute/zgelqf.c | 4 ++++ compute/zgelqf_param.c | 5 +++++ compute/zgelqs.c | 5 +++++ compute/zgelqs_param.c | 6 ++++++ compute/zgels.c | 5 +++++ compute/zgels_param.c | 6 ++++++ compute/zgeqrf.c | 4 ++++ compute/zgeqrf_param.c | 5 +++++ compute/zgeqrs_param.c | 6 ++++++ compute/ztpgqrt.c | 8 ++++++++ compute/zunglq.c | 5 +++++ compute/zunglq_param.c | 6 ++++++ compute/zungqr.c | 5 +++++ compute/zungqr_param.c | 6 ++++++ compute/zunmlq.c | 5 +++++ compute/zunmlq_param.c | 6 ++++++ compute/zunmqr.c | 5 +++++ compute/zunmqr_param.c | 6 ++++++ 18 files changed, 98 insertions(+) diff --git a/compute/zgelqf.c b/compute/zgelqf.c index f21a09861..bcab0855f 100644 --- a/compute/zgelqf.c +++ b/compute/zgelqf.c @@ -297,6 +297,10 @@ int MORSE_zgelqf_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *T, morse_pzgelqfrh( A, T, Dptr, MORSE_RHBLK, sequence, request ); } if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( T, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zgelqf_param.c b/compute/zgelqf_param.c index 65d497f29..fe0623cb7 100644 --- a/compute/zgelqf_param.c +++ b/compute/zgelqf_param.c @@ -294,6 +294,11 @@ int MORSE_zgelqf_param_Tile_Async( const libhqr_tree_t *qrtree, MORSE_desc_t *A, morse_pzgelqf_param( qrtree, A, TS, TT, Dptr, sequence, request ); if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( TS, sequence ); + MORSE_Desc_Flush( TT, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zgelqs.c b/compute/zgelqs.c index 30d29ccb3..ccf896144 100644 --- a/compute/zgelqs.c +++ b/compute/zgelqs.c @@ -338,6 +338,11 @@ int MORSE_zgelqs_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B, } if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( B, sequence ); + MORSE_Desc_Flush( T, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zgelqs_param.c b/compute/zgelqs_param.c index 42ee682dd..ffac93d2e 100644 --- a/compute/zgelqs_param.c +++ b/compute/zgelqs_param.c @@ -343,6 +343,12 @@ int MORSE_zgelqs_param_Tile_Async( const libhqr_tree_t *qrtree, MORSE_desc_t *A, morse_pzunmlq_param( qrtree, MorseLeft, MorseConjTrans, A, B, TS, TT, Dptr, sequence, request ); if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( B, sequence ); + MORSE_Desc_Flush( TS, sequence ); + MORSE_Desc_Flush( TT, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zgels.c b/compute/zgels.c index 9882bcdb4..74d65ca46 100644 --- a/compute/zgels.c +++ b/compute/zgels.c @@ -434,6 +434,11 @@ int MORSE_zgels_Tile_Async( MORSE_enum trans, MORSE_desc_t *A, free(subB); if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( T, sequence ); + MORSE_Desc_Flush( B, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zgels_param.c b/compute/zgels_param.c index dcfcd3812..a05519404 100644 --- a/compute/zgels_param.c +++ b/compute/zgels_param.c @@ -423,6 +423,12 @@ int MORSE_zgels_param_Tile_Async( const libhqr_tree_t *qrtree, MORSE_enum trans, free(subB); if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( TS, sequence ); + MORSE_Desc_Flush( TT, sequence ); + MORSE_Desc_Flush( B, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zgeqrf.c b/compute/zgeqrf.c index abca5cd8c..6695351de 100644 --- a/compute/zgeqrf.c +++ b/compute/zgeqrf.c @@ -296,6 +296,10 @@ int MORSE_zgeqrf_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *T, morse_pzgeqrfrh( A, T, Dptr, MORSE_RHBLK, sequence, request ); } if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( T, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zgeqrf_param.c b/compute/zgeqrf_param.c index 421415824..5e5b220f0 100644 --- a/compute/zgeqrf_param.c +++ b/compute/zgeqrf_param.c @@ -304,6 +304,11 @@ int MORSE_zgeqrf_param_Tile_Async( const libhqr_tree_t *qrtree, MORSE_desc_t *A, morse_pzgeqrf_param( qrtree, A, TS, TT, Dptr, sequence, request ); if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( TS, sequence ); + MORSE_Desc_Flush( TT, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zgeqrs_param.c b/compute/zgeqrs_param.c index e25b2fd26..d76227489 100644 --- a/compute/zgeqrs_param.c +++ b/compute/zgeqrs_param.c @@ -331,6 +331,12 @@ int MORSE_zgeqrs_param_Tile_Async( const libhqr_tree_t *qrtree, free(subB); if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( TS, sequence ); + MORSE_Desc_Flush( TT, sequence ); + MORSE_Desc_Flush( B, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/ztpgqrt.c b/compute/ztpgqrt.c index e209f1438..d28a53099 100644 --- a/compute/ztpgqrt.c +++ b/compute/ztpgqrt.c @@ -421,6 +421,14 @@ int MORSE_ztpgqrt_Tile_Async( int L, /* morse_pztpgqrtrh( Q1, T, MORSE_RHBLK, sequence, request ); */ /* } */ if (Dptr != NULL) { + MORSE_Desc_Flush( V1, sequence ); + MORSE_Desc_Flush( T1, sequence ); + MORSE_Desc_Flush( V2, sequence ); + MORSE_Desc_Flush( T2, sequence ); + MORSE_Desc_Flush( Q1, sequence ); + MORSE_Desc_Flush( Q2, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zunglq.c b/compute/zunglq.c index a2307eb05..f8738d768 100644 --- a/compute/zunglq.c +++ b/compute/zunglq.c @@ -321,6 +321,11 @@ int MORSE_zunglq_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *Q, } if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( Q, sequence ); + MORSE_Desc_Flush( T, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zunglq_param.c b/compute/zunglq_param.c index af1096930..45110d3f7 100644 --- a/compute/zunglq_param.c +++ b/compute/zunglq_param.c @@ -317,6 +317,12 @@ int MORSE_zunglq_param_Tile_Async( const libhqr_tree_t *qrtree, MORSE_desc_t *A, morse_pzunglq_param( qrtree, A, Q, TS, TT, Dptr, sequence, request ); if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( Q, sequence ); + MORSE_Desc_Flush( TS, sequence ); + MORSE_Desc_Flush( TT, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zungqr.c b/compute/zungqr.c index eb4ecf58e..954f2da51 100644 --- a/compute/zungqr.c +++ b/compute/zungqr.c @@ -318,6 +318,11 @@ int MORSE_zungqr_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *Q, } if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( Q, sequence ); + MORSE_Desc_Flush( T, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zungqr_param.c b/compute/zungqr_param.c index 3607664f9..8621b7816 100644 --- a/compute/zungqr_param.c +++ b/compute/zungqr_param.c @@ -315,6 +315,12 @@ int MORSE_zungqr_param_Tile_Async( const libhqr_tree_t *qrtree, MORSE_desc_t *A, morse_pzungqr_param( qrtree, A, Q, TS, TT, Dptr, sequence, request ); if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( Q, sequence ); + MORSE_Desc_Flush( TS, sequence ); + MORSE_Desc_Flush( TT, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zunmlq.c b/compute/zunmlq.c index 318906b5e..5901868c4 100644 --- a/compute/zunmlq.c +++ b/compute/zunmlq.c @@ -382,6 +382,11 @@ int MORSE_zunmlq_Tile_Async( MORSE_enum side, MORSE_enum trans, morse_pzunmlqrh( side, trans, A, C, T, Dptr, MORSE_RHBLK, sequence, request ); } if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( C, sequence ); + MORSE_Desc_Flush( T, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zunmlq_param.c b/compute/zunmlq_param.c index a272452ef..4a6375136 100644 --- a/compute/zunmlq_param.c +++ b/compute/zunmlq_param.c @@ -378,6 +378,12 @@ int MORSE_zunmlq_param_Tile_Async( const libhqr_tree_t *qrtree, MORSE_enum side, morse_pzunmlq_param( qrtree, side, trans, A, C, TS, TT, Dptr, sequence, request ); if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( C, sequence ); + MORSE_Desc_Flush( TS, sequence ); + MORSE_Desc_Flush( TT, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zunmqr.c b/compute/zunmqr.c index c859ad44e..7e836f91f 100644 --- a/compute/zunmqr.c +++ b/compute/zunmqr.c @@ -389,6 +389,11 @@ int MORSE_zunmqr_Tile_Async( MORSE_enum side, MORSE_enum trans, } if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( C, sequence ); + MORSE_Desc_Flush( T, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; diff --git a/compute/zunmqr_param.c b/compute/zunmqr_param.c index 7c1f2fb15..45c88e575 100644 --- a/compute/zunmqr_param.c +++ b/compute/zunmqr_param.c @@ -385,6 +385,12 @@ int MORSE_zunmqr_param_Tile_Async( const libhqr_tree_t *qrtree, morse_pzunmqr_param( qrtree, side, trans, A, C, TS, TT, Dptr, sequence, request ); if (Dptr != NULL) { + MORSE_Desc_Flush( A, sequence ); + MORSE_Desc_Flush( C, sequence ); + MORSE_Desc_Flush( TS, sequence ); + MORSE_Desc_Flush( TT, sequence ); + MORSE_Desc_Flush( Dptr, sequence ); + morse_sequence_wait( morse, sequence ); morse_desc_mat_free( Dptr ); } (void)D; -- GitLab