diff --git a/compute/zgelqf.c b/compute/zgelqf.c
index f21a09861d367ee3a418efd78ac55952be647aa4..bcab0855fa87c58f57ba961245b9d0837e5c0559 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 65d497f29b2d934f9e2879b3e88ebeb77edc0981..fe0623cb701f9831a7bc00ca19bb0fc6754ccd5c 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 30d29ccb35d56124a984251a06c69eb2071b8187..ccf896144f1af0d4f7188ac3f27d91a17d2ea8b1 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 42ee682dd8c557916821fcd001dbaa2bbd83fab3..ffac93d2ef8e3972741a96e56b75d1cf76e24dca 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 9882bcdb435c81ee4bd34b5fdb1a17ee9d6f32bb..74d65ca46ff14367be7a567f941a1f87e5e7a15b 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 dcfcd3812d8f6a6b3d1085ab1bca86d96e57d992..a05519404d59edc504d0bdafcb3b61c786cca768 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 abca5cd8c6ffaf6426f136d6e34b885e99a66b8d..6695351de0915ddcb7d5ff6dde9ba993b9f3b197 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 421415824e465e690b3f1cdc55956298aef921d1..5e5b220f010c1ad2872a461b9df78e5b81167f8f 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 e25b2fd26a56e7bbf258b3eb216ee6a503ab060a..d762274891d415c932530ea0eb372eb4519e7f4c 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 e209f1438b3971421b148ebd53bdcbf357a6d3b2..d28a530995221f3bd0181658f6e23c836712fd1a 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 a2307eb05f042f8158eb63d98251422142412f45..f8738d76871d662731b63610adc717d64bd31ffe 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 af1096930c7b7663f2a6d952deaae1ad5834f1f6..45110d3f79934e99119b81a80f52fe27e6c8d31b 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 eb4ecf58ecf238a6da607d04dd48c811959b78e6..954f2da51d54070bcc6feb12fc1c66aa6d8664ae 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 3607664f9371fbb07285811e2e60dec7281d6fb6..8621b7816829436859c3cafe994ad6bbb0f9fc6a 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 318906b5e9d0118d7f8b08c4720758d19a8ad0b1..5901868c47a07b34ecc01815c8532909387c8d0d 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 a272452ef9093ee3e591211faea19b070e4b5a6b..4a637513666d3b5f5485712645b7cf32d061e6c0 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 c859ad44ed1d8992fa960c836a338bacb18beb5d..7e836f91f1ff8e026496681e9db7d5855aa65e6f 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 7c1f2fb1571d79cfb0e876a4bf508f139edbb99f..45c88e5750f2c250327db48c6a6d2bc714faec2b 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;