From fef232035410c7c9aa755469d6a82c6662b25adb Mon Sep 17 00:00:00 2001
From: Mathieu Faverge <mathieu.faverge@inria.fr>
Date: Wed, 20 Jul 2022 16:18:00 +0200
Subject: [PATCH] Reduce the number of data registration

---
 runtime/starpu/control/runtime_descriptor.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/runtime/starpu/control/runtime_descriptor.c b/runtime/starpu/control/runtime_descriptor.c
index ee0698dff..f87818993 100644
--- a/runtime/starpu/control/runtime_descriptor.c
+++ b/runtime/starpu/control/runtime_descriptor.c
@@ -416,11 +416,23 @@ void RUNTIME_data_migrate( const RUNTIME_sequence_t *sequence,
 
     lhandle = *handle;
     if ( lhandle == NULL ) {
+        int involved;
+
+        old_rank = A->get_rankof( A, Am, An );
+        involved = (A->myrank == old_rank) || (A->myrank == new_rank);
+
+        /* Quick return */
+        if ( !involved ) {
+            return;
+        }
+
         /* Register the data */
         lhandle = RUNTIME_data_getaddr( A, Am, An );
     }
-    old_rank = starpu_mpi_data_get_rank( lhandle );
 
+    /* Update the rank if has been moved already (cf qr for example) */
+    old_rank = starpu_mpi_data_get_rank( lhandle );
+    assert( old_rank == A->get_rankof( A, Am, An ) );
     if ( old_rank != new_rank ) {
         starpu_mpi_data_migrate( MPI_COMM_WORLD, lhandle, new_rank );
     }
-- 
GitLab