From 35a3a1f8ee10d2e4414f30204400526d48b52743 Mon Sep 17 00:00:00 2001
From: Florent Pruvost <florent.pruvost@inria.fr>
Date: Thu, 22 Jan 2015 13:50:52 +0000
Subject: [PATCH] use an environnement variable instead of a fixed factor

---
 runtime/starpu/codelets/codelet_zgemm.c | 11 ++++++++---
 runtime/starpu/codelets/codelet_ztrsm.c |  9 +++++++--
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/runtime/starpu/codelets/codelet_zgemm.c b/runtime/starpu/codelets/codelet_zgemm.c
index 93d233524..1e3689f5f 100644
--- a/runtime/starpu/codelets/codelet_zgemm.c
+++ b/runtime/starpu/codelets/codelet_zgemm.c
@@ -54,11 +54,16 @@ void MORSE_TASK_zgemm(MORSE_option_t *options,
     int rank_changed=0;
 
     // force execution on the rank owning the largest data (tile)
-    // the numerical facto 10 should be an environnement variable
-    if ( sizeA > 10*sizeC ){
+    int threshold;
+    char* env = getenv("MORSE_COMM_FACTOR_THRESHOLD");
+    if (env != NULL)
+        threshold = (unsigned)atoi(env);
+    else
+        threshold = 10;
+    if ( sizeA > threshold*sizeC ){
         execution_rank = A->get_rankof( A, Am, An );
         rank_changed = 1;
-    }else if( sizeB > 10*sizeC ){
+    }else if( sizeB > threshold*sizeC ){
         execution_rank = B->get_rankof( B, Bm, Bn );
         rank_changed = 1;
     }
diff --git a/runtime/starpu/codelets/codelet_ztrsm.c b/runtime/starpu/codelets/codelet_ztrsm.c
index 2ed832347..a920ce770 100644
--- a/runtime/starpu/codelets/codelet_ztrsm.c
+++ b/runtime/starpu/codelets/codelet_ztrsm.c
@@ -52,8 +52,13 @@ void MORSE_TASK_ztrsm(MORSE_option_t *options,
     int rank_changed=0;
 
     // force execution on the rank owning the largest data (tile)
-    // the numerical facto 10 should be an environnement variable
-    if ( sizeA > 10*sizeB ){
+    int threshold;
+    char* env = getenv("MORSE_COMM_FACTOR_THRESHOLD");
+    if (env != NULL)
+        threshold = (unsigned)atoi(env);
+    else
+        threshold = 10;
+    if ( sizeA > threshold*sizeB ){
         execution_rank = A->get_rankof( A, Am, An );
         rank_changed=1;
     }
-- 
GitLab