From 77a80aeb601ea9039a3e08970bb9b8d6bcf0eeaf Mon Sep 17 00:00:00 2001
From: Raphael Boucherie <raphael.boucherie@inria.fr>
Date: Mon, 12 Jun 2017 11:19:33 +0200
Subject: [PATCH] Factorize data_register

---
 runtime/starpu/control/runtime_descriptor.c | 33 ++++++++-------------
 1 file changed, 13 insertions(+), 20 deletions(-)

diff --git a/runtime/starpu/control/runtime_descriptor.c b/runtime/starpu/control/runtime_descriptor.c
index 7e6d0f8bd..6a05ce8ba 100644
--- a/runtime/starpu/control/runtime_descriptor.c
+++ b/runtime/starpu/control/runtime_descriptor.c
@@ -322,36 +322,29 @@ void *RUNTIME_desc_getaddr( const MORSE_desc_t *desc, int m, int n )
     int64_t im = m + (desc->i / desc->mb);
     int64_t jn = n + (desc->j / desc->nb);
 
-    starpu_data_handle_t *ptrtile = (starpu_data_handle_t*)(desc->schedopt);
-    ptrtile += ((int64_t)(desc->lmt) * (int64_t)jn + (int64_t)im);
+    starpu_data_handle_t *ptrtile = desc->schedopt;
+    ptrtile += ((int64_t)desc->lmt) * jn + im;
 
     if (*ptrtile == NULL) {
-        int64_t eltsze = MORSE_Element_Size(desc->dtyp);
+        int home_node = -1;
+        void *user_ptr = NULL;
         int myrank = desc->myrank;
         int owner  = desc->get_rankof( desc, m, n );
+        int64_t eltsze = MORSE_Element_Size(desc->dtyp);
         int tempmm = (im == desc->lmt-1) ? (desc->lm - im * desc->mb) : desc->mb;
         int tempnn = (jn == desc->lnt-1) ? (desc->ln - jn * desc->nb) : desc->nb;
 
         if ( myrank == owner ) {
-            void *ptr = (void*)(desc->get_blkaddr(desc, m, n));
-
-            if ( ptr == NULL ) {
-                starpu_matrix_data_register(ptrtile, -1,
-                                            (uintptr_t) NULL,
-                                            BLKLDD(desc, im), tempmm, tempnn, eltsze);
+            user_ptr = desc->get_blkaddr(desc, m, n);
+            if ( user_ptr != NULL ) {
+                home_node = STARPU_MAIN_RAM;
             }
-            else {
-                starpu_matrix_data_register(ptrtile, STARPU_MAIN_RAM,
-                                            (uintptr_t)ptr,
-                                            BLKLDD(desc, im), tempmm, tempnn, eltsze);
-            }
-        }
-        else {
-            starpu_matrix_data_register(ptrtile, -1,
-                                        (uintptr_t) NULL,
-                                        BLKLDD(desc, im), tempmm, tempnn, eltsze);
         }
 
+        starpu_matrix_data_register(ptrtile, home_node, (uintptr_t) user_ptr,
+                                    BLKLDD(desc, im),
+                                    tempmm, tempnn, eltsze);
+
 #ifdef HAVE_STARPU_DATA_SET_COORDINATES
         starpu_data_set_coordinates(*ptrtile, 2, m, n);
 #endif
@@ -364,5 +357,5 @@ void *RUNTIME_desc_getaddr( const MORSE_desc_t *desc, int m, int n )
 #endif /* defined(CHAMELEON_USE_MPI) */
     }
 
-    return (void *)(*ptrtile);
+    return *ptrtile;
 }
-- 
GitLab