diff --git a/compute/zgeadd.c b/compute/zgeadd.c
index 1f611a6243150edf908da5eb10fc45769bd6fa7f..2a6f0ea1cbb1d6b7bce9e5216a2950dfb7489f79 100644
--- a/compute/zgeadd.c
+++ b/compute/zgeadd.c
@@ -250,8 +250,8 @@ int MORSE_zgeadd_Tile(MORSE_enum trans,
     morse_sequence_create(morse, &sequence);
     MORSE_zgeadd_Tile_Async(trans, alpha, A, beta, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgelqf.c b/compute/zgelqf.c
index c251d8f2fea2f1993f1b508c4b3817303a8a97f2..11e4cc42163b5339f5df7b7dbd0d9d94769a1629 100644
--- a/compute/zgelqf.c
+++ b/compute/zgelqf.c
@@ -201,7 +201,7 @@ int MORSE_zgelqf_Tile(MORSE_desc_t *A, MORSE_desc_t *T)
     morse_sequence_create(morse, &sequence);
     MORSE_zgelqf_Tile_Async(A, T, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
+    RUNTIME_desc_getoncpu_async( A, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgelqf_param.c b/compute/zgelqf_param.c
index 2e46686816f4d5423371b8a120df9cce725c110a..de955081e51a84a4980bc68b03ecc7123160699e 100644
--- a/compute/zgelqf_param.c
+++ b/compute/zgelqf_param.c
@@ -198,7 +198,7 @@ int MORSE_zgelqf_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     morse_sequence_create(morse, &sequence);
     MORSE_zgelqf_param_Tile_Async(qrtree, A, TS, TT, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
+    RUNTIME_desc_getoncpu_async( A, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgelqs.c b/compute/zgelqs.c
index 23cdd4d022d705afab6a683d282ecce90f8f3cc5..1e4d304c096e69e23d0aa28a8cc3a404978f7347 100644
--- a/compute/zgelqs.c
+++ b/compute/zgelqs.c
@@ -223,8 +223,8 @@ int MORSE_zgelqs_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B)
     morse_sequence_create(morse, &sequence);
     MORSE_zgelqs_Tile_Async(A, T, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgelqs_param.c b/compute/zgelqs_param.c
index cf2e853634609914c3c960a3d7e8b5508e40a55e..d3248520288b875e60c5c802f153b76ceebd6858 100644
--- a/compute/zgelqs_param.c
+++ b/compute/zgelqs_param.c
@@ -228,8 +228,8 @@ int MORSE_zgelqs_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     morse_sequence_create(morse, &sequence);
     MORSE_zgelqs_param_Tile_Async(qrtree, A, TS, TT, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgels.c b/compute/zgels.c
index 56f816715530f2c73dcafecce005018a93d395d4..cc2126d79a1192d7ebdcd24b1f31aeadec873681 100644
--- a/compute/zgels.c
+++ b/compute/zgels.c
@@ -287,8 +287,8 @@ int MORSE_zgels_Tile(MORSE_enum trans, MORSE_desc_t *A,
     morse_sequence_create(morse, &sequence);
     MORSE_zgels_Tile_Async(trans, A, T, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgels_param.c b/compute/zgels_param.c
index d862c63267b877f276740af544336a90087503b5..3f7e3653a36aff900fb567bb6ef2cf8794da8a99 100644
--- a/compute/zgels_param.c
+++ b/compute/zgels_param.c
@@ -292,8 +292,8 @@ int MORSE_zgels_param_Tile(const libhqr_tree_t *qrtree, MORSE_enum trans, MORSE_
     morse_sequence_create(morse, &sequence);
     MORSE_zgels_param_Tile_Async(qrtree, trans, A, TS, TT, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgemm.c b/compute/zgemm.c
index 8837819afba925d9027b624541168ece84416eed..44f4bb88965fb5f21b5897892bfb76402a34148a 100644
--- a/compute/zgemm.c
+++ b/compute/zgemm.c
@@ -322,9 +322,9 @@ int MORSE_zgemm_Tile(MORSE_enum transA, MORSE_enum transB,
     morse_sequence_create(morse, &sequence);
     MORSE_zgemm_Tile_Async(transA, transB, alpha, A, B, beta, C, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
-    RUNTIME_desc_getoncpu(C);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
+    RUNTIME_desc_getoncpu_async( C, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgeqrf.c b/compute/zgeqrf.c
index 96ba98e4d3fb438b5b2546a29ce74e53e89b54ef..0ec53a8537cc3ac0430d08abf90099b2a3b77d7a 100644
--- a/compute/zgeqrf.c
+++ b/compute/zgeqrf.c
@@ -200,7 +200,7 @@ int MORSE_zgeqrf_Tile(MORSE_desc_t *A, MORSE_desc_t *T)
     morse_sequence_create(morse, &sequence);
     MORSE_zgeqrf_Tile_Async(A, T, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
+    RUNTIME_desc_getoncpu_async( A, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgeqrf_param.c b/compute/zgeqrf_param.c
index 8e84f2a2bc421df67aa4e4e1f4695b53cf2f29e1..2c456a5c5b3e4de2e9fb5eace8ba9ec5fbf738cd 100644
--- a/compute/zgeqrf_param.c
+++ b/compute/zgeqrf_param.c
@@ -207,7 +207,7 @@ int MORSE_zgeqrf_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     morse_sequence_create(morse, &sequence);
     MORSE_zgeqrf_param_Tile_Async(qrtree, A, TS, TT, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
+    RUNTIME_desc_getoncpu_async( A, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgeqrs.c b/compute/zgeqrs.c
index 93be4bd81f9d5cdb523fc35e87109b4470590ddc..e3f40ec0d4c4b0b7f7c690c9545a9e0e4fa7f1ad 100644
--- a/compute/zgeqrs.c
+++ b/compute/zgeqrs.c
@@ -222,9 +222,9 @@ int MORSE_zgeqrs_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B)
     morse_sequence_create(morse, &sequence);
     MORSE_zgeqrs_Tile_Async(A, T, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(T);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( T, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgeqrs_param.c b/compute/zgeqrs_param.c
index 611b136fa92b6e770d903401fc53ff13104c06de..21abd84e12cddf34b72e0b069370ca60410b3086 100644
--- a/compute/zgeqrs_param.c
+++ b/compute/zgeqrs_param.c
@@ -217,10 +217,10 @@ int MORSE_zgeqrs_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     morse_sequence_create(morse, &sequence);
     MORSE_zgeqrs_param_Tile_Async(qrtree, A, TS, TT, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(TS);
-    RUNTIME_desc_getoncpu(TT);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( TS, sequence );
+    RUNTIME_desc_getoncpu_async( TT, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgesv_incpiv.c b/compute/zgesv_incpiv.c
index 95f9f297c6408e846cbb87778f8474b8ee0d2a0b..4ab52cd8b377da9de69658c57052bba753d8cf9a 100644
--- a/compute/zgesv_incpiv.c
+++ b/compute/zgesv_incpiv.c
@@ -227,8 +227,8 @@ int MORSE_zgesv_incpiv_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_d
     morse_sequence_create(morse, &sequence);
     MORSE_zgesv_incpiv_Tile_Async(A, L, IPIV, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgesv_nopiv.c b/compute/zgesv_nopiv.c
index 563d05a20dbf65f93a4953814d96716584ddf266..3261da14d4eb3cb64f161c0077018280f18129d4 100644
--- a/compute/zgesv_nopiv.c
+++ b/compute/zgesv_nopiv.c
@@ -219,8 +219,8 @@ int MORSE_zgesv_nopiv_Tile(MORSE_desc_t *A, MORSE_desc_t *B)
     morse_sequence_create(morse, &sequence);
     MORSE_zgesv_nopiv_Tile_Async(A, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgetrf_incpiv.c b/compute/zgetrf_incpiv.c
index 5d11df16cb79f118a18b9b2b11f51dc383dab206..6e4ba0ecfbded633c6f82275a8939a2e14e12ccf 100644
--- a/compute/zgetrf_incpiv.c
+++ b/compute/zgetrf_incpiv.c
@@ -205,7 +205,7 @@ int MORSE_zgetrf_incpiv_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV)
     morse_sequence_create(morse, &sequence);
     MORSE_zgetrf_incpiv_Tile_Async(A, L, IPIV, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
+    RUNTIME_desc_getoncpu_async( A, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgetrf_nopiv.c b/compute/zgetrf_nopiv.c
index b951286e3612a14ad2bd37d4e4d172df6da11437..17cac2dd2b38f5e4c102517f73b3915975831782 100644
--- a/compute/zgetrf_nopiv.c
+++ b/compute/zgetrf_nopiv.c
@@ -193,7 +193,7 @@ int MORSE_zgetrf_nopiv_Tile(MORSE_desc_t *A)
     morse_sequence_create(morse, &sequence);
     MORSE_zgetrf_nopiv_Tile_Async(A, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
+    RUNTIME_desc_getoncpu_async( A, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgetrs_incpiv.c b/compute/zgetrs_incpiv.c
index 12c62b69730791a7e4617f7e68767b34e9fb2631..d5d79a006bf6b0819b830cf88fca8fa75eb0e3b6 100644
--- a/compute/zgetrs_incpiv.c
+++ b/compute/zgetrs_incpiv.c
@@ -230,8 +230,8 @@ int MORSE_zgetrs_incpiv_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_
     morse_sequence_create(morse, &sequence);
     MORSE_zgetrs_incpiv_Tile_Async(A, L, IPIV, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgetrs_nopiv.c b/compute/zgetrs_nopiv.c
index fe03bf1d99f05cc9bdaf32deaed70e149c6015c0..80d3f8e48fe17c2c1991728e8c649375481d3560 100644
--- a/compute/zgetrs_nopiv.c
+++ b/compute/zgetrs_nopiv.c
@@ -218,8 +218,8 @@ int MORSE_zgetrs_nopiv_Tile(MORSE_desc_t *A, MORSE_desc_t *B)
     morse_sequence_create(morse, &sequence);
     MORSE_zgetrs_nopiv_Tile_Async(A, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zheevd.c b/compute/zheevd.c
index 3780855dbd2e0e720146f9f53996fec68dbf1f6c..548c38b9eefb905c60605e4911217d73b37dec8a 100644
--- a/compute/zheevd.c
+++ b/compute/zheevd.c
@@ -261,8 +261,8 @@ int MORSE_zheevd_Tile(MORSE_enum jobz, MORSE_enum uplo,
     MORSE_zheevd_Tile_Async(jobz, uplo, A, W, T, sequence, &request);
     morse_sequence_wait(morse, sequence);
 
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(T);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( T, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zhemm.c b/compute/zhemm.c
index 0d2d06e2f3d943381ebb80c574a12a4653907bc2..834557cc7383decc207beb2e75b9b55b71f49d3f 100644
--- a/compute/zhemm.c
+++ b/compute/zhemm.c
@@ -287,9 +287,9 @@ int MORSE_zhemm_Tile(MORSE_enum side, MORSE_enum uplo,
     morse_sequence_create(morse, &sequence);
     MORSE_zhemm_Tile_Async(side, uplo, alpha, A, B, beta, C, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(B);
-        RUNTIME_desc_getoncpu(C);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
+    RUNTIME_desc_getoncpu_async( C, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zher2k.c b/compute/zher2k.c
index 6449931a2971b9d9d50c1d2905b41ba5f52c254c..64ef671cc53cef4fae6eae38e2ac5859572a0364 100644
--- a/compute/zher2k.c
+++ b/compute/zher2k.c
@@ -286,9 +286,9 @@ int MORSE_zher2k_Tile(MORSE_enum uplo, MORSE_enum trans,
     morse_sequence_create(morse, &sequence);
     MORSE_zher2k_Tile_Async(uplo, trans, alpha, A, B, beta, C, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(B);
-        RUNTIME_desc_getoncpu(C);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
+    RUNTIME_desc_getoncpu_async( C, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zherk.c b/compute/zherk.c
index 9b7416f5908298e0febdc9969cc6323a90f9a28a..4a079f951ce9be58afcfdfa1a2839fade02cb16e 100644
--- a/compute/zherk.c
+++ b/compute/zherk.c
@@ -262,8 +262,8 @@ int MORSE_zherk_Tile(MORSE_enum uplo, MORSE_enum trans,
     morse_sequence_create(morse, &sequence);
     MORSE_zherk_Tile_Async(uplo, trans, alpha, A, beta, C, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(C);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( C, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zlange.c b/compute/zlange.c
index 198dd8d98ef6d8ef746cab9526fd5b56e204edd3..a83b03d178b19e07380d65202fcc5f3271d47208 100644
--- a/compute/zlange.c
+++ b/compute/zlange.c
@@ -148,7 +148,7 @@ double MORSE_zlange(MORSE_enum norm, int M, int N,
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
         morse_sequence_wait(morse, sequence);
-        RUNTIME_desc_getoncpu(&descA);
+    RUNTIME_desc_getoncpu_async( &descA, sequence );
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
diff --git a/compute/zlanhe.c b/compute/zlanhe.c
index 033effa9a7698149af14eed661ffa323dc3baaa5..e4941322c2d2f2f6bb4081e1d0b73c12a1456a72 100644
--- a/compute/zlanhe.c
+++ b/compute/zlanhe.c
@@ -148,7 +148,7 @@ double MORSE_zlanhe(MORSE_enum norm, MORSE_enum uplo, int N,
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
     morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(&descA);
+    RUNTIME_desc_getoncpu_async( &descA, sequence );
     morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
diff --git a/compute/zlauum.c b/compute/zlauum.c
index 148344fa0fe58292d43b77446e39434ec721e82d..926bfbc0b2c6dee23f507585f48f4a89fab297eb 100644
--- a/compute/zlauum.c
+++ b/compute/zlauum.c
@@ -202,7 +202,7 @@ int MORSE_zlauum_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     morse_sequence_create(morse, &sequence);
     MORSE_zlauum_Tile_Async(uplo, A, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
+    RUNTIME_desc_getoncpu_async( A, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zposv.c b/compute/zposv.c
index c680794228ee73f84e4c0012772bc1ef14d8d10d..96d393df0825bcad55cac5357454de08978c409c 100644
--- a/compute/zposv.c
+++ b/compute/zposv.c
@@ -245,8 +245,8 @@ int MORSE_zposv_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     morse_sequence_create(morse, &sequence);
     MORSE_zposv_Tile_Async(uplo, A, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zpotrf.c b/compute/zpotrf.c
index 0a04fbe344b863671897d23c027cdf5ba8653ac3..3cfa25b0455a869819893ced54cf2a7afdb044ca 100644
--- a/compute/zpotrf.c
+++ b/compute/zpotrf.c
@@ -214,7 +214,7 @@ int MORSE_zpotrf_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     morse_sequence_create(morse, &sequence);
     MORSE_zpotrf_Tile_Async(uplo, A, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
+    RUNTIME_desc_getoncpu_async( A, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zpotri.c b/compute/zpotri.c
index 17cccb8efa5788f31d887f80603b78213435b133..fec3b0f7fa5596c7151480e941df9d8ed9d22310 100644
--- a/compute/zpotri.c
+++ b/compute/zpotri.c
@@ -202,7 +202,7 @@ int MORSE_zpotri_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     morse_sequence_create(morse, &sequence);
     MORSE_zpotri_Tile_Async(uplo, A, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
+    RUNTIME_desc_getoncpu_async( A, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zpotrimm.c b/compute/zpotrimm.c
index 6fda215ad8536a166bd727f2ab6080ed01bc08d3..f83321f3b132658b877a2078a617f61507b56d94 100644
--- a/compute/zpotrimm.c
+++ b/compute/zpotrimm.c
@@ -220,7 +220,7 @@ int MORSE_zpotrimm_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE
     morse_sequence_create(morse, &sequence);
     MORSE_zpotrimm_Tile_Async(uplo, A, B, C, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(C);
+    RUNTIME_desc_getoncpu_async( C, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zpotrs.c b/compute/zpotrs.c
index 8f07ca3551057b321537c14cf40dc5bd91036704..21cc2a3c60a37130dd5363ccd4982c230e4e2bbf 100644
--- a/compute/zpotrs.c
+++ b/compute/zpotrs.c
@@ -220,8 +220,8 @@ int MORSE_zpotrs_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     morse_sequence_create(morse, &sequence);
     MORSE_zpotrs_Tile_Async(uplo, A, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zsymm.c b/compute/zsymm.c
index 2f8a36c51be61c44f1b4774addbae8fb0c9da241..bd66fa6b328b3ae7717e53419ba8a3fbbce01871 100644
--- a/compute/zsymm.c
+++ b/compute/zsymm.c
@@ -287,9 +287,9 @@ int MORSE_zsymm_Tile(MORSE_enum side, MORSE_enum uplo,
     morse_sequence_create(morse, &sequence);
     MORSE_zsymm_Tile_Async(side, uplo, alpha, A, B, beta, C, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
-    RUNTIME_desc_getoncpu(C);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
+    RUNTIME_desc_getoncpu_async( C, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zsyr2k.c b/compute/zsyr2k.c
index 09faf804e402f8549d4983ba46b15a7a4002a48b..4f38cf71a8cec2defd1a8ae883a54a4462fee70b 100644
--- a/compute/zsyr2k.c
+++ b/compute/zsyr2k.c
@@ -286,9 +286,9 @@ int MORSE_zsyr2k_Tile(MORSE_enum uplo, MORSE_enum trans,
     morse_sequence_create(morse, &sequence);
     MORSE_zsyr2k_Tile_Async(uplo, trans, alpha, A, B, beta, C, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(B);
-        RUNTIME_desc_getoncpu(C);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
+    RUNTIME_desc_getoncpu_async( C, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zsyrk.c b/compute/zsyrk.c
index 0c08e322208f4852ea09fb31bec69f026eff3002..59da04f0f96c8385d6052ea044ae11a57bac3412 100644
--- a/compute/zsyrk.c
+++ b/compute/zsyrk.c
@@ -262,8 +262,8 @@ int MORSE_zsyrk_Tile(MORSE_enum uplo, MORSE_enum trans,
     morse_sequence_create(morse, &sequence);
     MORSE_zsyrk_Tile_Async(uplo, trans, alpha, A, beta, C, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(C);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( C, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zsysv.c b/compute/zsysv.c
index a729ee7a784644db24699c0ad734cacc5b9bc83c..1e5dafbdad2296b44c48fadf741a518492406af7 100644
--- a/compute/zsysv.c
+++ b/compute/zsysv.c
@@ -238,8 +238,8 @@ int MORSE_zsysv_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     morse_sequence_create(morse, &sequence);
     MORSE_zsysv_Tile_Async(uplo, A, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zsytrf.c b/compute/zsytrf.c
index 07070bbe69a79f1c82b2397daff42791a61f444a..b0457b5f1026a991a149827ec9f32bf3d21cc490 100644
--- a/compute/zsytrf.c
+++ b/compute/zsytrf.c
@@ -203,7 +203,7 @@ int MORSE_zsytrf_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     morse_sequence_create(morse, &sequence);
     MORSE_zsytrf_Tile_Async(uplo, A, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
+    RUNTIME_desc_getoncpu_async( A, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zsytrs.c b/compute/zsytrs.c
index bd2c371855e26945f58b7e8fba72a206f3ca7237..57666d946b5b413a97c9ca61dd6a8626ac5b460e 100644
--- a/compute/zsytrs.c
+++ b/compute/zsytrs.c
@@ -216,8 +216,8 @@ int MORSE_zsytrs_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     morse_sequence_create(morse, &sequence);
     MORSE_zsytrs_Tile_Async(uplo, A, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztile.c b/compute/ztile.c
index 1bba015ddcb091acf3296fde80a532c1a6d50162..cdeb0e1e9c72a1b2f438751af57da85b60ffadc2 100644
--- a/compute/ztile.c
+++ b/compute/ztile.c
@@ -84,7 +84,7 @@ int MORSE_zLapack_to_Tile(MORSE_Complex64_t *Af77, int LDA, MORSE_desc_t *A)
     morse_pzlapack_to_tile( Af77, LDA, A, sequence, &request);
 
     RUNTIME_sequence_wait( morse, sequence );
-    RUNTIME_desc_getoncpu( A );
+    RUNTIME_desc_getoncpu_async( A , sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
@@ -211,7 +211,7 @@ int MORSE_zTile_to_Lapack(MORSE_desc_t *A, MORSE_Complex64_t *Af77, int LDA)
 
     morse_pztile_to_lapack( A, Af77, LDA, sequence, &request);
     RUNTIME_sequence_wait( morse, sequence );
-    RUNTIME_desc_getoncpu( A );
+    RUNTIME_desc_getoncpu_async( A , sequence );
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
     return status;
diff --git a/compute/ztpgqrt.c b/compute/ztpgqrt.c
index 2df25d010ceccca96fb923b6c765e41204d520d1..a4e176b705631ffa98aca387490625fdeb3953fa 100644
--- a/compute/ztpgqrt.c
+++ b/compute/ztpgqrt.c
@@ -297,8 +297,8 @@ int MORSE_ztpgqrt_Tile( int L,
     morse_sequence_create(morse, &sequence);
     MORSE_ztpgqrt_Tile_Async(L, V1, T1, V2, T2, Q1, Q2, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(Q1);
-    RUNTIME_desc_getoncpu(Q2);
+    RUNTIME_desc_getoncpu_async( Q1, sequence );
+    RUNTIME_desc_getoncpu_async( Q2, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztpqrt.c b/compute/ztpqrt.c
index adb72fe9aef7004c9eae4548e30859802c55b7fd..0e1729f13dac04f1765725f9ea2977d6063791c1 100644
--- a/compute/ztpqrt.c
+++ b/compute/ztpqrt.c
@@ -269,8 +269,8 @@ int MORSE_ztpqrt_Tile( int L, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *T
     morse_sequence_create(morse, &sequence);
     MORSE_ztpqrt_Tile_Async(L, A, B, T, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztradd.c b/compute/ztradd.c
index 5c4663a2307bc9862dd2c5d63bfce679dddbd69a..d9c62b0b22cce82373bdba1f0e86ab1dd3417ded 100644
--- a/compute/ztradd.c
+++ b/compute/ztradd.c
@@ -266,8 +266,8 @@ int MORSE_ztradd_Tile(MORSE_enum uplo, MORSE_enum trans,
     morse_sequence_create(morse, &sequence);
     MORSE_ztradd_Tile_Async(uplo, trans, alpha, A, beta, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztrmm.c b/compute/ztrmm.c
index 0758498bdaf532e567824bb1b2ab18e60233d1da..2590c24eb7b8419c7984c99a47b5b190ec0b86b3 100644
--- a/compute/ztrmm.c
+++ b/compute/ztrmm.c
@@ -288,8 +288,8 @@ int MORSE_ztrmm_Tile(MORSE_enum side, MORSE_enum uplo,
     morse_sequence_create(morse, &sequence);
     MORSE_ztrmm_Tile_Async(side, uplo, transA, diag, alpha, A, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztrsm.c b/compute/ztrsm.c
index b43e550cf501173c94117e10787159a0bab413cb..6ca114999eda453eeacf8ffd68d3ad704de394bd 100644
--- a/compute/ztrsm.c
+++ b/compute/ztrsm.c
@@ -286,8 +286,8 @@ int MORSE_ztrsm_Tile(MORSE_enum side, MORSE_enum uplo,
     morse_sequence_create(morse, &sequence);
     MORSE_ztrsm_Tile_Async(side, uplo, transA, diag, alpha, A, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztrsmpl.c b/compute/ztrsmpl.c
index 668c267a57ca28f8215dfd671eb29281d6e5e6d7..14246f6ba9cce542db42c1fb08018574884922f6 100644
--- a/compute/ztrsmpl.c
+++ b/compute/ztrsmpl.c
@@ -215,8 +215,8 @@ int MORSE_ztrsmpl_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_desc_t
     morse_sequence_create(morse, &sequence);
     MORSE_ztrsmpl_Tile_Async(A, L, IPIV, B, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(B);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( B, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztrtri.c b/compute/ztrtri.c
index 6e13d21b5dc78d3203969bb6435dcfad5ecb6dbe..ddef7c2ff6160161ee2d00f35a9f8a6a7dff2f9b 100644
--- a/compute/ztrtri.c
+++ b/compute/ztrtri.c
@@ -221,7 +221,7 @@ int MORSE_ztrtri_Tile(MORSE_enum uplo, MORSE_enum diag, MORSE_desc_t *A)
     morse_sequence_create(morse, &sequence);
     MORSE_ztrtri_Tile_Async(uplo, diag, A, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
+    RUNTIME_desc_getoncpu_async( A, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zunglq.c b/compute/zunglq.c
index cb32b7a1e576a918aa56b6d1de6bab4a664341c9..69b28301b1d9f236a8c16af93347836890d9b5d1 100644
--- a/compute/zunglq.c
+++ b/compute/zunglq.c
@@ -217,8 +217,8 @@ int MORSE_zunglq_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *Q)
     morse_sequence_create(morse, &sequence);
     MORSE_zunglq_Tile_Async(A, T, Q, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(Q);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( Q, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zunglq_param.c b/compute/zunglq_param.c
index d64930f4119ada76f12b9623e8230ed43378a1bd..8e292e0dce6f3046386b451efdb236f88caaf171 100644
--- a/compute/zunglq_param.c
+++ b/compute/zunglq_param.c
@@ -214,8 +214,8 @@ int MORSE_zunglq_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     morse_sequence_create(morse, &sequence);
     MORSE_zunglq_param_Tile_Async(qrtree, A, TS, TT, Q, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(Q);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( Q, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zungqr.c b/compute/zungqr.c
index e29151b14ca6ff8aeaa9dcc4713bdbae162d568d..ba592be85a7fa82187d546f4513fb68ad5a547f3 100644
--- a/compute/zungqr.c
+++ b/compute/zungqr.c
@@ -216,8 +216,8 @@ int MORSE_zungqr_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *Q)
     morse_sequence_create(morse, &sequence);
     MORSE_zungqr_Tile_Async(A, T, Q, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(Q);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( Q, sequence );
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zungqr_param.c b/compute/zungqr_param.c
index 8b4f7e46103dcf0fd3cd92492ced8a764c2de654..fcd8c79d16df1463dbdc41f35176384bbd685a20 100644
--- a/compute/zungqr_param.c
+++ b/compute/zungqr_param.c
@@ -215,8 +215,8 @@ int MORSE_zungqr_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     morse_sequence_create(morse, &sequence);
     MORSE_zungqr_param_Tile_Async(qrtree, A, TS, TT, Q, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-    RUNTIME_desc_getoncpu(Q);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( Q, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zunmlq.c b/compute/zunmlq.c
index 33cf72a309ad39382c9c15b17b60caf59b46dcb0..238d953f0d15f8cd90aedd3566ec93d3f429cb34 100644
--- a/compute/zunmlq.c
+++ b/compute/zunmlq.c
@@ -270,8 +270,8 @@ int MORSE_zunmlq_Tile(MORSE_enum side, MORSE_enum trans,
     morse_sequence_create(morse, &sequence);
     MORSE_zunmlq_Tile_Async(side, trans, A, T, C, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(C);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( C, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zunmlq_param.c b/compute/zunmlq_param.c
index cace1d697c507ea985807303f74c1b50846dc3b0..6fe8c120aa82e02dcabce0b37dd5191107e27ade 100644
--- a/compute/zunmlq_param.c
+++ b/compute/zunmlq_param.c
@@ -269,8 +269,8 @@ int MORSE_zunmlq_param_Tile(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_
     morse_sequence_create(morse, &sequence);
     MORSE_zunmlq_param_Tile_Async(qrtree, side, trans, A, TS, TT, C, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(C);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( C, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zunmqr.c b/compute/zunmqr.c
index 320ed0727875fda2c05836963a8a5a0d223cfc04..821e4ce63730632fa0fe881480cdffd50ba71725 100644
--- a/compute/zunmqr.c
+++ b/compute/zunmqr.c
@@ -274,8 +274,8 @@ int MORSE_zunmqr_Tile(MORSE_enum side, MORSE_enum trans,
     morse_sequence_create(morse, &sequence);
     MORSE_zunmqr_Tile_Async(side, trans, A, T, C, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(C);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( C, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zunmqr_param.c b/compute/zunmqr_param.c
index 2a101ace364e8b379d92255b11be078925c17670..f591e94db673db0c66a56d205ef505c516f06adb 100644
--- a/compute/zunmqr_param.c
+++ b/compute/zunmqr_param.c
@@ -275,8 +275,8 @@ int MORSE_zunmqr_param_Tile(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_
     morse_sequence_create(morse, &sequence);
     MORSE_zunmqr_param_Tile_Async(qrtree, side, trans, A, TS, TT, C, sequence, &request);
     morse_sequence_wait(morse, sequence);
-    RUNTIME_desc_getoncpu(A);
-        RUNTIME_desc_getoncpu(C);
+    RUNTIME_desc_getoncpu_async( A, sequence );
+    RUNTIME_desc_getoncpu_async( C, sequence );
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);