diff --git a/compute/pzgelqf.c b/compute/pzgelqf.c
index 1dbea93bce01b21df0e941501138fafdf8593cb7..73050c1996c68a41e5a42e862faf189198bdab8d 100644
--- a/compute/pzgelqf.c
+++ b/compute/pzgelqf.c
@@ -127,6 +127,10 @@ void morse_pzgelqf(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *D,
                 T(k, k), T->mb,
                 A(m, k), ldam);
         }
+
+        MORSE_TASK_dataflush( &options, D(k)    );
+        MORSE_TASK_dataflush( &options, T(k, k) );
+
         for (n = k+1; n < A->nt; n++) {
             tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
 
@@ -156,6 +160,9 @@ void morse_pzgelqf(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *D,
                     A(m, k), ldam,
                     A(m, n), ldam);
             }
+
+            MORSE_TASK_dataflush( &options, A(k, n) );
+            MORSE_TASK_dataflush( &options, T(k, n) );
         }
 
         /* Restore the original location of the tiles */
diff --git a/compute/pzgelqf_param.c b/compute/pzgelqf_param.c
index ef2a600802ac27c2956017e405af7a2ce2baa4f9..677beeb3fafc0d14d887cd0d5bf8158c9db5663e 100644
--- a/compute/pzgelqf_param.c
+++ b/compute/pzgelqf_param.c
@@ -136,6 +136,9 @@ void morse_pzgelqf_param( const libhqr_tree_t *qrtree, MORSE_desc_t *A,
                     A(m, p), ldam);
             }
         }
+        MORSE_TASK_dataflush( &options, D(k, p) );
+        MORSE_TASK_dataflush( &options, T(k, p) );
+
 
         /* Setting the order of the tiles */
         libhqr_walk_stepk( qrtree, k, tiles + (k+1) );
@@ -188,6 +191,8 @@ void morse_pzgelqf_param( const libhqr_tree_t *qrtree, MORSE_desc_t *A,
                     A(m, p), ldam,
                     A(m, n), ldam);
             }
+            MORSE_TASK_dataflush( &options, A(k, n) );
+            MORSE_TASK_dataflush( &options, T(k, n) );
         }
 
         /* Restore the original location of the tiles */
diff --git a/compute/pzgeqrf.c b/compute/pzgeqrf.c
index cb06ffea49445db55210c83c04e9c2615a5d1704..ef1d8cbe5815822453b86c2f4b35e51dbf5de2a6 100644
--- a/compute/pzgeqrf.c
+++ b/compute/pzgeqrf.c
@@ -121,6 +121,8 @@ void morse_pzgeqrf(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *D,
                 T(k, k), T->mb,
                 A(k, n), ldak);
         }
+        MORSE_TASK_dataflush( &options, D(k)    );
+        MORSE_TASK_dataflush( &options, T(k, k) );
 
         for (m = k+1; m < A->mt; m++) {
             tempmm = m == A->mt-1 ? A->m-m*A->mb : A->mb;
@@ -153,6 +155,9 @@ void morse_pzgeqrf(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *D,
                     A(k, n), ldak,
                     A(m, n), ldam);
             }
+
+            MORSE_TASK_dataflush( &options, A(m, k) );
+            MORSE_TASK_dataflush( &options, T(m, k) );
         }
 
         /* Restore the original location of the tiles */
diff --git a/compute/pzgeqrf_param.c b/compute/pzgeqrf_param.c
index 897c935c56f5036cc0cff2e63010c2834eaabf6c..f8712176ff131ff64951d6cc114d9e9d78aa2728 100644
--- a/compute/pzgeqrf_param.c
+++ b/compute/pzgeqrf_param.c
@@ -133,6 +133,8 @@ void morse_pzgeqrf_param( const libhqr_tree_t *qrtree, MORSE_desc_t *A,
                     A(m, n), ldam);
             }
         }
+        MORSE_TASK_dataflush( &options, D(m, k) );
+        MORSE_TASK_dataflush( &options, T(m, k) );
 
         /* Setting the order of the tiles */
         libhqr_walk_stepk( qrtree, k, tiles + (k+1) );
@@ -185,6 +187,9 @@ void morse_pzgeqrf_param( const libhqr_tree_t *qrtree, MORSE_desc_t *A,
                     A(p, n), ldap,
                     A(m, n), ldam);
             }
+
+            MORSE_TASK_dataflush( &options, A(m, k) );
+            MORSE_TASK_dataflush( &options, T(m, k) );
         }
 
         /* Restore the original location of the tiles */