diff --git a/include/chameleon/runtime_struct.h b/include/chameleon/runtime_struct.h
index ad70f05360406b5d872843a0b93fb22327cd16e1..a5ca6e027043b2d95452cf01c9821be40f31582f 100644
--- a/include/chameleon/runtime_struct.h
+++ b/include/chameleon/runtime_struct.h
@@ -83,6 +83,7 @@ typedef struct runtime_option_s {
     int                 profiling; /**< Enable/Disable the profiling of the submitted tasks      */
     int                 parallel;  /**< Enable/Disable the parallel version of submitted tasks   */
     int                 priority;  /**< Define the submitted task priority                       */
+    int                 workerid;  /**< Define the prefered worker id to perform the tasks       */
     size_t              ws_wsize;  /**< Define the worker workspace size                         */
     size_t              ws_hsize;  /**< Define the host workspace size for hybrid CPU/GPU kernel */
     void               *ws_worker; /**< Pointer to the worker workspace (structure)              */
diff --git a/runtime/openmp/control/runtime_options.c b/runtime/openmp/control/runtime_options.c
index 04aaca357baaa13977a9f35d29cb07be78fa9d87..ecda9a1b41b28dcb4d23caaafdcc5e9676f9824a 100644
--- a/runtime/openmp/control/runtime_options.c
+++ b/runtime/openmp/control/runtime_options.c
@@ -21,18 +21,19 @@
  */
 #include "chameleon_openmp.h"
 
-void RUNTIME_options_init( RUNTIME_option_t *option, CHAM_context_t *chamctxt,
+void RUNTIME_options_init( RUNTIME_option_t *options, CHAM_context_t *chamctxt,
                            RUNTIME_sequence_t *sequence, RUNTIME_request_t *request )
 {
-    option->sequence  = sequence;
-    option->request   = request;
-    option->profiling = CHAMELEON_PROFILING == CHAMELEON_TRUE;
-    option->parallel  = CHAMELEON_PARALLEL == CHAMELEON_TRUE;
-    option->priority  = RUNTIME_PRIORITY_MIN;
-    option->ws_wsize  = 0;
-    option->ws_hsize  = 0;
-    option->ws_worker = NULL;
-    option->ws_host   = NULL;
+    options->sequence  = sequence;
+    options->request   = request;
+    options->profiling = CHAMELEON_PROFILING == CHAMELEON_TRUE;
+    options->parallel  = CHAMELEON_PARALLEL == CHAMELEON_TRUE;
+    options->priority  = RUNTIME_PRIORITY_MIN;
+    options->workerid  = -1;
+    options->ws_wsize  = 0;
+    options->ws_hsize  = 0;
+    options->ws_worker = NULL;
+    options->ws_host   = NULL;
     return;
 }
 
diff --git a/runtime/parsec/control/runtime_options.c b/runtime/parsec/control/runtime_options.c
index e851318b20f0427a9741124144d420bd136f117c..0c56ead88c34e50e8c09f00ed702246686e250fa 100644
--- a/runtime/parsec/control/runtime_options.c
+++ b/runtime/parsec/control/runtime_options.c
@@ -27,6 +27,7 @@ void RUNTIME_options_init( RUNTIME_option_t *options, CHAM_context_t *chamctxt,
     options->profiling  = CHAMELEON_PROFILING == CHAMELEON_TRUE;
     options->parallel   = CHAMELEON_PARALLEL == CHAMELEON_TRUE;
     options->priority   = RUNTIME_PRIORITY_MIN;
+    options->workerid  = -1;
     options->ws_wsize   = 0;
     options->ws_hsize   = 0;
     options->ws_worker  = NULL;
diff --git a/runtime/quark/control/runtime_options.c b/runtime/quark/control/runtime_options.c
index bab33ac075fdad9c78894b0044400485cb4a8f50..c0b2bbb2ba0b1afde6d4975a999cc97d581e7ad9 100644
--- a/runtime/quark/control/runtime_options.c
+++ b/runtime/quark/control/runtime_options.c
@@ -39,6 +39,7 @@ void RUNTIME_options_init( RUNTIME_option_t *options, CHAM_context_t *chamctxt,
     options->profiling  = CHAMELEON_PROFILING == CHAMELEON_TRUE;
     options->parallel   = CHAMELEON_PARALLEL == CHAMELEON_TRUE;
     options->priority   = RUNTIME_PRIORITY_MIN;
+    options->workerid   = -1;
 
     options->ws_wsize   = 0;
     options->ws_hsize   = 0;
diff --git a/runtime/starpu/codelets/codelet_dlag2z.c b/runtime/starpu/codelets/codelet_dlag2z.c
index 6d53318ae34ea56cc14e509865d8f76c695c69dc..3a21d3d5734b4381d4aac736b758840de304fc56 100644
--- a/runtime/starpu/codelets/codelet_dlag2z.c
+++ b/runtime/starpu/codelets/codelet_dlag2z.c
@@ -54,8 +54,6 @@ void INSERT_TASK_dlag2z( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_dlag2z;
     void (*callback)(void*) = options->profiling ? cl_dlag2z_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -71,7 +69,7 @@ void INSERT_TASK_dlag2z( const RUNTIME_option_t *options,
         STARPU_W,         RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "dlag2z",
 #endif
diff --git a/runtime/starpu/codelets/codelet_dzasum.c b/runtime/starpu/codelets/codelet_dzasum.c
index 3bf8d3d877632dc3cc237787b4f3513d5476ba5b..9eaf10b587ab9928a1145ca9ef0685a5dc2f9099 100644
--- a/runtime/starpu/codelets/codelet_dzasum.c
+++ b/runtime/starpu/codelets/codelet_dzasum.c
@@ -55,8 +55,6 @@ void INSERT_TASK_dzasum( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_dzasum;
     void (*callback)(void*) = options->profiling ? cl_dzasum_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -73,7 +71,7 @@ void INSERT_TASK_dzasum( const RUNTIME_option_t *options,
         STARPU_RW,        RTBLKADDR(B, double, Bm, Bn),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-         STARPU_EXECUTE_ON_WORKER, workerid,
+         STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "dzasum",
 #endif
diff --git a/runtime/starpu/codelets/codelet_map.c b/runtime/starpu/codelets/codelet_map.c
index 55c2876801ec8ae8ff69cb40e5f5746cacfd2050..9814dd3522dc1e51faa68d0f3f50d4f2069230ed 100644
--- a/runtime/starpu/codelets/codelet_map.c
+++ b/runtime/starpu/codelets/codelet_map.c
@@ -49,8 +49,6 @@ void INSERT_TASK_map( const RUNTIME_option_t *options,
 
     struct starpu_codelet *codelet = &cl_map;
     void (*callback)(void*) = options->profiling ? cl_map_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_RW(A, Am, An);
@@ -67,7 +65,7 @@ void INSERT_TASK_map( const RUNTIME_option_t *options,
         STARPU_VALUE,    &op_args,                sizeof(void*),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "map",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zaxpy.c b/runtime/starpu/codelets/codelet_zaxpy.c
index b57eda1dad716ffe8531a1d3e8ab62184912538a..63cc9fa77673a747f004ebf5209a5f35344d3d22 100644
--- a/runtime/starpu/codelets/codelet_zaxpy.c
+++ b/runtime/starpu/codelets/codelet_zaxpy.c
@@ -51,8 +51,6 @@ void INSERT_TASK_zaxpy( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_zaxpy;
     void (*callback)(void*) = options->profiling ? cl_zaxpy_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     if ( alpha == 0. ) {
         return;
@@ -73,7 +71,7 @@ void INSERT_TASK_zaxpy( const RUNTIME_option_t *options,
             STARPU_VALUE,    &incB,                        sizeof(int),
             STARPU_PRIORITY, options->priority,
             STARPU_CALLBACK, callback,
-            STARPU_EXECUTE_ON_WORKER, workerid,
+            STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
             STARPU_NAME, "zaxpy",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zbuild.c b/runtime/starpu/codelets/codelet_zbuild.c
index 305e6019dc55a90b48879d7e8f46820e9f6f6548..24d237bc80765a3062a0cbcb3bec3db46048633d 100644
--- a/runtime/starpu/codelets/codelet_zbuild.c
+++ b/runtime/starpu/codelets/codelet_zbuild.c
@@ -63,8 +63,6 @@ CODELETS_CPU(zbuild, cl_zbuild_cpu_func)
 
     struct starpu_codelet *codelet = &cl_zbuild;
     void (*callback)(void*) = options->profiling ? cl_zbuild_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
     int row_min, row_max, col_min, col_max;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -86,7 +84,7 @@ CODELETS_CPU(zbuild, cl_zbuild_cpu_func)
         STARPU_VALUE,    &user_build_callback,          sizeof(void*),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zbuild",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zcesca.c b/runtime/starpu/codelets/codelet_zcesca.c
index 1cf87fe7e330d4f636c648cb4a7886378e93a714..f7c87937d035b03b99a04b7ef307deda501eb4b1 100644
--- a/runtime/starpu/codelets/codelet_zcesca.c
+++ b/runtime/starpu/codelets/codelet_zcesca.c
@@ -70,8 +70,6 @@ void INSERT_TASK_zcesca( const RUNTIME_option_t *options,
     struct cl_zcesca_args_s *clargs = NULL;
     struct starpu_codelet *codelet = &cl_zcesca;
     void (*callback)(void*) = options->profiling ? cl_zcesca_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
     int exec = 0;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -106,7 +104,7 @@ void INSERT_TASK_zcesca( const RUNTIME_option_t *options,
         STARPU_RW,       RTBLKADDR(A, CHAMELEON_Complex64_t, Am, An),
         STARPU_PRIORITY, options->priority,
         STARPU_CALLBACK, callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zcesca",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zgeadd.c b/runtime/starpu/codelets/codelet_zgeadd.c
index 30f4d519eb8989f31782d17b1a2eb10ecf01104d..7d7a0045a0d73d765ad9c70621143ad3086f6685 100644
--- a/runtime/starpu/codelets/codelet_zgeadd.c
+++ b/runtime/starpu/codelets/codelet_zgeadd.c
@@ -98,8 +98,6 @@ void INSERT_TASK_zgeadd( const RUNTIME_option_t *options,
 
     struct starpu_codelet *codelet = &cl_zgeadd;
     void (*callback)(void*) = options->profiling ? cl_zgeadd_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
     int accessB = ( beta == 0. ) ? STARPU_W : STARPU_RW;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -118,7 +116,7 @@ void INSERT_TASK_zgeadd( const RUNTIME_option_t *options,
         accessB,          RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zgeadd",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zgelqt.c b/runtime/starpu/codelets/codelet_zgelqt.c
index 86ad28b6f3319815244b0ae880d407c1c47ff420..fcb9c005933b1a80d4a3186d6e5e4b94da5909de 100644
--- a/runtime/starpu/codelets/codelet_zgelqt.c
+++ b/runtime/starpu/codelets/codelet_zgelqt.c
@@ -68,8 +68,6 @@ void INSERT_TASK_zgelqt(const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_zgelqt;
     void (*callback)(void*) = options->profiling ? cl_zgelqt_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
     CHAMELEON_starpu_ws_t *h_work = (CHAMELEON_starpu_ws_t*)(options->ws_host);
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -90,7 +88,7 @@ void INSERT_TASK_zgelqt(const RUNTIME_option_t *options,
         STARPU_VALUE,    &h_work,            sizeof(CHAMELEON_starpu_ws_t *),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zgelqt",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zgemm.c b/runtime/starpu/codelets/codelet_zgemm.c
index cac587414bc35f51eaa6142f57e07e12195b307d..a3f584f55b350803cbcadb0648c3bed16930c0bd 100644
--- a/runtime/starpu/codelets/codelet_zgemm.c
+++ b/runtime/starpu/codelets/codelet_zgemm.c
@@ -116,9 +116,7 @@ void INSERT_TASK_zgemm( const RUNTIME_option_t *options,
 
     struct cl_zgemm_args_s  *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid, accessC;
+    int                      accessC;
     int                      exec = 0;
     char                    *cl_name = "zgemm";
 
@@ -147,9 +145,6 @@ void INSERT_TASK_zgemm( const RUNTIME_option_t *options,
     /* Callback for profiling information */
     callback = options->profiling ? cl_zgemm_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
     /* Reduce the C access if needed */
     accessC = ( beta == 0. ) ? STARPU_W : STARPU_RW;
 
@@ -175,7 +170,7 @@ void INSERT_TASK_zgemm( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_zgemv.c b/runtime/starpu/codelets/codelet_zgemv.c
index d2220865f2c45d0c0fdd7f86e6a9d8b94fbe3143..89fdd39f2070967f7dae22ffa0a4491e38de4534 100644
--- a/runtime/starpu/codelets/codelet_zgemv.c
+++ b/runtime/starpu/codelets/codelet_zgemv.c
@@ -101,8 +101,6 @@ void INSERT_TASK_zgemv( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_zgemv;
     void (*callback)(void*) = options->profiling ? cl_zgemv_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
     int accessY = ( beta == 0. ) ? STARPU_W : STARPU_RW;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -125,7 +123,7 @@ void INSERT_TASK_zgemv( const RUNTIME_option_t *options,
         STARPU_VALUE,    &incY,              sizeof(int),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zgemv",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zgeqrt.c b/runtime/starpu/codelets/codelet_zgeqrt.c
index 4f7034bc3cfe065bc36ad1f9cbb95650218d40b4..14b877772a1ab1ff72f101736758a09c4a04f20c 100644
--- a/runtime/starpu/codelets/codelet_zgeqrt.c
+++ b/runtime/starpu/codelets/codelet_zgeqrt.c
@@ -69,8 +69,6 @@ void INSERT_TASK_zgeqrt(const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_zgeqrt;
     void (*callback)(void*) = options->profiling ? cl_zgeqrt_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
     CHAMELEON_starpu_ws_t *h_work = (CHAMELEON_starpu_ws_t*)(options->ws_host);
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -91,7 +89,7 @@ void INSERT_TASK_zgeqrt(const RUNTIME_option_t *options,
         STARPU_VALUE,    &h_work,            sizeof(CHAMELEON_starpu_ws_t *),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zgeqrt",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zgessm.c b/runtime/starpu/codelets/codelet_zgessm.c
index 5dad32c9afae12291dbc1729cd3527264d86cac8..352e98d618f684ad0d6f8d7e1c6b31024d94d59a 100644
--- a/runtime/starpu/codelets/codelet_zgessm.c
+++ b/runtime/starpu/codelets/codelet_zgessm.c
@@ -63,8 +63,6 @@ void INSERT_TASK_zgessm( const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_zgessm;
     void (*callback)(void*) = options->profiling ? cl_zgessm_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(L, Lm, Ln);
@@ -84,7 +82,7 @@ void INSERT_TASK_zgessm( const RUNTIME_option_t *options,
         STARPU_RW,            RTBLKADDR(A, CHAMELEON_Complex64_t, Am, An),
         STARPU_PRIORITY,    options->priority,
         STARPU_CALLBACK,    callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zgessm",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zgessq.c b/runtime/starpu/codelets/codelet_zgessq.c
index 08d43b41b7a5648f232df6334b59bbc608810d35..c2d62fd4c2eae8c57b894cebdea70f9992e7bf05 100644
--- a/runtime/starpu/codelets/codelet_zgessq.c
+++ b/runtime/starpu/codelets/codelet_zgessq.c
@@ -54,8 +54,6 @@ void INSERT_TASK_zgessq( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_zgessq;
     void (*callback)(void*) = options->profiling ? cl_zgessq_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -71,7 +69,7 @@ void INSERT_TASK_zgessq( const RUNTIME_option_t *options,
         STARPU_RW,       RTBLKADDR(SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn),
         STARPU_PRIORITY, options->priority,
         STARPU_CALLBACK, callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zgessq",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zgesum.c b/runtime/starpu/codelets/codelet_zgesum.c
index c851c4ef555bc1ee792a712bfaa028795df4252c..ed0dbbfd6bc9db7fa25c450e4401961506fde299 100644
--- a/runtime/starpu/codelets/codelet_zgesum.c
+++ b/runtime/starpu/codelets/codelet_zgesum.c
@@ -51,8 +51,6 @@ void INSERT_TASK_zgesum( const RUNTIME_option_t *options,
     struct cl_zgesum_args_s *clargs = NULL;
     struct starpu_codelet *codelet = &cl_zgesum;
     void (*callback)(void*) = options->profiling ? cl_zgesum_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
     int exec = 0;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -75,7 +73,7 @@ void INSERT_TASK_zgesum( const RUNTIME_option_t *options,
         STARPU_RW,       RTBLKADDR(SUMS, CHAMELEON_Complex64_t, SUMSm, SUMSn),
         STARPU_PRIORITY, options->priority,
         STARPU_CALLBACK, callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zgesum",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zgetrf.c b/runtime/starpu/codelets/codelet_zgetrf.c
index 04c8d8a8edd9679db5e3131a809118ff91ff480f..79eaa295134267efcc02c0035b27678fb093c433 100644
--- a/runtime/starpu/codelets/codelet_zgetrf.c
+++ b/runtime/starpu/codelets/codelet_zgetrf.c
@@ -65,8 +65,6 @@ void INSERT_TASK_zgetrf( const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_zgetrf;
     void (*callback)(void*) = options->profiling ? cl_zgetrf_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_RW(A, Am, An);
@@ -84,7 +82,7 @@ void INSERT_TASK_zgetrf( const RUNTIME_option_t *options,
         STARPU_VALUE,    &(options->request),        sizeof(RUNTIME_request_t*),
         STARPU_PRIORITY,    options->priority,
         STARPU_CALLBACK,    callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zgetrf",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zgetrf_incpiv.c b/runtime/starpu/codelets/codelet_zgetrf_incpiv.c
index 9983f5ba3aac1831376f044317ca7137dd3630ee..792849815cd0e361c014537d23b4af519497c861 100644
--- a/runtime/starpu/codelets/codelet_zgetrf_incpiv.c
+++ b/runtime/starpu/codelets/codelet_zgetrf_incpiv.c
@@ -70,8 +70,6 @@ void INSERT_TASK_zgetrf_incpiv(const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_zgetrf_incpiv;
     void (*callback)(void*) = options->profiling ? cl_zgetrf_incpiv_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_starpu_ws_t *h_work = (CHAMELEON_starpu_ws_t*)(options->ws_host);
 
@@ -96,7 +94,7 @@ void INSERT_TASK_zgetrf_incpiv(const RUNTIME_option_t *options,
         STARPU_VALUE,    &(options->request),        sizeof(RUNTIME_request_t*),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zgetrf_incpiv",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zgetrf_nopiv.c b/runtime/starpu/codelets/codelet_zgetrf_nopiv.c
index 74a60c356e9098da9e24063ea2101db1239ab792..7d84e67ae55e8223d7f3b05755199d2dc8ae6f62 100644
--- a/runtime/starpu/codelets/codelet_zgetrf_nopiv.c
+++ b/runtime/starpu/codelets/codelet_zgetrf_nopiv.c
@@ -65,8 +65,6 @@ void INSERT_TASK_zgetrf_nopiv(const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_zgetrf_nopiv;
     void (*callback)(void*) = options->profiling ? cl_zgetrf_nopiv_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_RW(A, Am, An);
@@ -83,7 +81,7 @@ void INSERT_TASK_zgetrf_nopiv(const RUNTIME_option_t *options,
         STARPU_VALUE,    &(options->request),        sizeof(RUNTIME_request_t*),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zgetrf_nopiv",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zgram.c b/runtime/starpu/codelets/codelet_zgram.c
index 55f36194c3282db8b8ac7f3cfeb94ec3d45e8225..77dac818f709023b81e7670997d6b18526a96e15 100644
--- a/runtime/starpu/codelets/codelet_zgram.c
+++ b/runtime/starpu/codelets/codelet_zgram.c
@@ -55,8 +55,6 @@ void INSERT_TASK_zgram( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_zgram;
     void (*callback)(void*) = options->profiling ? cl_zgram_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(Di, Dim, Din);
@@ -78,7 +76,7 @@ void INSERT_TASK_zgram( const RUNTIME_option_t *options,
         STARPU_RW,       RTBLKADDR(A, double, Am, An),
         STARPU_PRIORITY, options->priority,
         STARPU_CALLBACK, callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zgram",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zhe2ge.c b/runtime/starpu/codelets/codelet_zhe2ge.c
index 9c918d9ef5c2b37de710f2e766cf448de8bbfe99..5f4f4a98306fd8a2442c0c3a5ecf2b48b92e52f6 100644
--- a/runtime/starpu/codelets/codelet_zhe2ge.c
+++ b/runtime/starpu/codelets/codelet_zhe2ge.c
@@ -54,8 +54,6 @@ void INSERT_TASK_zhe2ge( const RUNTIME_option_t *options,
     (void)mb;
     struct starpu_codelet *codelet = &cl_zhe2ge;
     void (*callback)(void*) = options->profiling ? cl_zhe2ge_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -71,7 +69,7 @@ void INSERT_TASK_zhe2ge( const RUNTIME_option_t *options,
         STARPU_W,             RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn),
         STARPU_PRIORITY,    options->priority,
         STARPU_CALLBACK,    callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zhe2ge",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zhemm.c b/runtime/starpu/codelets/codelet_zhemm.c
index 779bb98237f73ce43aaa77b6aed51206a3ad6f5e..2b85fbdaeed51374262376fd224150ad6ea3f980 100644
--- a/runtime/starpu/codelets/codelet_zhemm.c
+++ b/runtime/starpu/codelets/codelet_zhemm.c
@@ -114,8 +114,6 @@ void INSERT_TASK_zhemm(const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_zhemm;
     void (*callback)(void*) = options->profiling ? cl_zhemm_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
     int accessC = ( beta == 0. ) ? STARPU_W : STARPU_RW;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -137,7 +135,7 @@ void INSERT_TASK_zhemm(const RUNTIME_option_t *options,
         accessC,                RTBLKADDR(C, CHAMELEON_Complex64_t, Cm, Cn),
         STARPU_PRIORITY,    options->priority,
         STARPU_CALLBACK,    callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zhemm",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zher2k.c b/runtime/starpu/codelets/codelet_zher2k.c
index a69868e1df802da2b3fa195b0647852107c908c5..a3d12b1582ad9fb1abbe912eda14ef62a846e300 100644
--- a/runtime/starpu/codelets/codelet_zher2k.c
+++ b/runtime/starpu/codelets/codelet_zher2k.c
@@ -111,8 +111,6 @@ INSERT_TASK_zher2k( const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_zher2k;
     void (*callback)(void*) = options->profiling ? cl_zher2k_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
     int accessC = ( beta == 0. ) ? STARPU_W : STARPU_RW;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -134,7 +132,7 @@ INSERT_TASK_zher2k( const RUNTIME_option_t *options,
         accessC,                  RTBLKADDR(C, CHAMELEON_Complex64_t, Cm, Cn),
         STARPU_PRIORITY,    options->priority,
         STARPU_CALLBACK,    callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zher2k",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zherfb.c b/runtime/starpu/codelets/codelet_zherfb.c
index 9f62c783c85412edd3dfa20a581c3841ffcbe7b5..4cc999337187e52c95dcae880305305f4ef9f685 100644
--- a/runtime/starpu/codelets/codelet_zherfb.c
+++ b/runtime/starpu/codelets/codelet_zherfb.c
@@ -96,8 +96,6 @@ void INSERT_TASK_zherfb(const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_zherfb;
     void (*callback)(void*) = options->profiling ? cl_zherfb_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -119,7 +117,7 @@ void INSERT_TASK_zherfb(const RUNTIME_option_t *options,
         STARPU_SCRATCH,   options->ws_worker,
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zherfb",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zherk.c b/runtime/starpu/codelets/codelet_zherk.c
index c4b6eedd83e4004783b2f5f00c630aa53707918d..008d1822dafe9d56c0961993d56d4fea9c6c0645 100644
--- a/runtime/starpu/codelets/codelet_zherk.c
+++ b/runtime/starpu/codelets/codelet_zherk.c
@@ -101,9 +101,7 @@ void INSERT_TASK_zherk( const RUNTIME_option_t *options,
 
     struct cl_zherk_args_s *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid, accessC;
+    int                      accessC;
     int                      exec = 0;
     char                    *cl_name = "zherk";
 
@@ -129,9 +127,6 @@ void INSERT_TASK_zherk( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_zherk_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
     /* Reduce the C access if needed */
     accessC = ( beta == 0. ) ? STARPU_W : STARPU_RW;
 
@@ -154,7 +149,7 @@ void INSERT_TASK_zherk( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_zlacpy.c b/runtime/starpu/codelets/codelet_zlacpy.c
index b169055095f5d54d5f825921306f28150b4df275..29733a6d3832405781262f5328b2c3b52a6a7f33 100644
--- a/runtime/starpu/codelets/codelet_zlacpy.c
+++ b/runtime/starpu/codelets/codelet_zlacpy.c
@@ -69,9 +69,6 @@ void INSERT_TASK_zlacpyx( const RUNTIME_option_t *options,
 {
     struct cl_zlacpy_args_s *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid;
     int                      exec = 0;
     char                    *cl_name = "zlacpy";
 
@@ -96,9 +93,6 @@ void INSERT_TASK_zlacpyx( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_zlacpy_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
     /* Insert the task */
     rt_starpu_insert_task(
         &cl_zlacpy,
@@ -110,7 +104,7 @@ void INSERT_TASK_zlacpyx( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_zlag2c.c b/runtime/starpu/codelets/codelet_zlag2c.c
index 27358b138066d2344ecedd839fd9239f86fb706f..421d97afd93d0fa550d6a0bdf5f8d56e4ac0aaca 100644
--- a/runtime/starpu/codelets/codelet_zlag2c.c
+++ b/runtime/starpu/codelets/codelet_zlag2c.c
@@ -61,8 +61,6 @@ void INSERT_TASK_zlag2c(const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_zlag2c;
     void (*callback)(void*) = options->profiling ? cl_zlag2c_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -77,7 +75,7 @@ void INSERT_TASK_zlag2c(const RUNTIME_option_t *options,
         STARPU_W,         RTBLKADDR(B, CHAMELEON_Complex32_t, Bm, Bn),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zlag2c",
 #endif
@@ -113,8 +111,6 @@ void INSERT_TASK_clag2z(const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_clag2z;
     void (*callback)(void*) = options->profiling ? cl_clag2z_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R( A, Am, An );
@@ -129,7 +125,7 @@ void INSERT_TASK_clag2z(const RUNTIME_option_t *options,
         STARPU_W,         RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "clag2z",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zlange.c b/runtime/starpu/codelets/codelet_zlange.c
index cc2608b479b44e5811ec43bb5c7363dc288fd817..d8f76aa47ac0cb726a252a1baa850bc86df5eb5b 100644
--- a/runtime/starpu/codelets/codelet_zlange.c
+++ b/runtime/starpu/codelets/codelet_zlange.c
@@ -59,8 +59,6 @@ void INSERT_TASK_zlange( const RUNTIME_option_t *options,
     (void)NB;
     struct starpu_codelet *codelet = &cl_zlange;
     void (*callback)(void*) = options->profiling ? cl_zlange_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -77,7 +75,7 @@ void INSERT_TASK_zlange( const RUNTIME_option_t *options,
         STARPU_W,        RTBLKADDR(B, double, Bm, Bn),
         STARPU_PRIORITY, options->priority,
         STARPU_CALLBACK, callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zlange",
 #endif
@@ -115,8 +113,6 @@ void INSERT_TASK_zlange_max(const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_zlange_max;
     void (*callback)(void*) = options->profiling ? cl_zlange_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(  A, Am, An );
@@ -129,7 +125,7 @@ void INSERT_TASK_zlange_max(const RUNTIME_option_t *options,
         STARPU_RW,       RTBLKADDR(B, double, Bm, Bn),
         STARPU_PRIORITY, options->priority,
         STARPU_CALLBACK, callback,
-         STARPU_EXECUTE_ON_WORKER, workerid,
+         STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zlange_max",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zlanhe.c b/runtime/starpu/codelets/codelet_zlanhe.c
index 28820e6d22da6bb8f6f6dea2c8da9ce7100f79ce..1f9203fb11c03fc6e421b7a4f9b2f42b077f32a6 100644
--- a/runtime/starpu/codelets/codelet_zlanhe.c
+++ b/runtime/starpu/codelets/codelet_zlanhe.c
@@ -58,8 +58,6 @@ void INSERT_TASK_zlanhe(const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_zlanhe;
     void (*callback)(void*) = options->profiling ? cl_zlange_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -76,7 +74,7 @@ void INSERT_TASK_zlanhe(const RUNTIME_option_t *options,
         STARPU_W,        RTBLKADDR(B, double, Bm, Bn),
         STARPU_PRIORITY, options->priority,
         STARPU_CALLBACK, callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zlanhe",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zlansy.c b/runtime/starpu/codelets/codelet_zlansy.c
index f5a40708c0a92a0c5da3f8ecdad54b5f3ca26460..5de3b8e93427a7cec37299ebc62a4a7e75876c72 100644
--- a/runtime/starpu/codelets/codelet_zlansy.c
+++ b/runtime/starpu/codelets/codelet_zlansy.c
@@ -59,8 +59,6 @@ void INSERT_TASK_zlansy( const RUNTIME_option_t *options,
     (void)NB;
     struct starpu_codelet *codelet = &cl_zlansy;
     void (*callback)(void*) = options->profiling ? cl_zlange_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -77,7 +75,7 @@ void INSERT_TASK_zlansy( const RUNTIME_option_t *options,
         STARPU_W,        RTBLKADDR(B, double, Bm, Bn),
         STARPU_PRIORITY, options->priority,
         STARPU_CALLBACK, callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zlansy",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zlantr.c b/runtime/starpu/codelets/codelet_zlantr.c
index b45ca0d1203e7782bef13b2b2bb2edbe5ac974df..237e5da163b3526376935148ce66e0d20f922e3d 100644
--- a/runtime/starpu/codelets/codelet_zlantr.c
+++ b/runtime/starpu/codelets/codelet_zlantr.c
@@ -58,8 +58,6 @@ void INSERT_TASK_zlantr( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_zlantr;
     void (*callback)(void*) = options->profiling ? cl_zlange_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -78,7 +76,7 @@ void INSERT_TASK_zlantr( const RUNTIME_option_t *options,
         STARPU_W,        RTBLKADDR(B, double, Bm, Bn),
         STARPU_PRIORITY, options->priority,
         STARPU_CALLBACK, callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zlantr",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zlascal.c b/runtime/starpu/codelets/codelet_zlascal.c
index 0dcaa52d54a4033c6b41629f23e98421a5ed72a5..26fb42fa8b1eb702997ae3400ce92fb179c383f9 100644
--- a/runtime/starpu/codelets/codelet_zlascal.c
+++ b/runtime/starpu/codelets/codelet_zlascal.c
@@ -66,9 +66,6 @@ void INSERT_TASK_zlascal( const RUNTIME_option_t *options,
 
     struct cl_zlascal_args_s *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid;
     int                      exec = 0;
     char                    *cl_name = "zlascal";
 
@@ -90,9 +87,6 @@ void INSERT_TASK_zlascal( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_zlascal_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
     /* Insert the task */
     rt_starpu_insert_task(
         &cl_zlascal,
@@ -103,7 +97,7 @@ void INSERT_TASK_zlascal( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_zlaset.c b/runtime/starpu/codelets/codelet_zlaset.c
index 95805c0142f2b966125bac51b9290bcf0f324bdf..51eb352afbf9cdffe31e0835c0ef4898261d686c 100644
--- a/runtime/starpu/codelets/codelet_zlaset.c
+++ b/runtime/starpu/codelets/codelet_zlaset.c
@@ -60,9 +60,6 @@ void INSERT_TASK_zlaset( const RUNTIME_option_t *options,
 {
     struct cl_zlaset_args_s *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid;
     int                      exec = 0;
     char                    *cl_name = "zlaset";
 
@@ -85,9 +82,6 @@ void INSERT_TASK_zlaset( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_zlaset_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
     /* Insert the task */
     rt_starpu_insert_task(
         &cl_zlaset,
@@ -98,7 +92,7 @@ void INSERT_TASK_zlaset( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_zlaset2.c b/runtime/starpu/codelets/codelet_zlaset2.c
index c80973145ddb83b7340575cbe078499f8ef47bb9..6d6eeb6be3e1fbc43d7797577c1d913d5c88a858 100644
--- a/runtime/starpu/codelets/codelet_zlaset2.c
+++ b/runtime/starpu/codelets/codelet_zlaset2.c
@@ -55,8 +55,6 @@ void INSERT_TASK_zlaset2(const RUNTIME_option_t *options,
 
     struct starpu_codelet *codelet = &cl_zlaset2;
     void (*callback)(void*) = options->profiling ? cl_zlaset2_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_W(A, Am, An);
@@ -71,7 +69,7 @@ void INSERT_TASK_zlaset2(const RUNTIME_option_t *options,
         STARPU_W,      RTBLKADDR(A, CHAMELEON_Complex64_t, Am, An),
         STARPU_PRIORITY,    options->priority,
         STARPU_CALLBACK,    callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zlaset2",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zlatro.c b/runtime/starpu/codelets/codelet_zlatro.c
index 6ec3e055104fdd2a5c434032bbc8cbbd435be48b..7d81ae476ec323dcba0385c6d7fde7dc6161e34f 100644
--- a/runtime/starpu/codelets/codelet_zlatro.c
+++ b/runtime/starpu/codelets/codelet_zlatro.c
@@ -65,8 +65,6 @@ void INSERT_TASK_zlatro( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_zlatro;
     void (*callback)(void*) = NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -83,7 +81,7 @@ void INSERT_TASK_zlatro( const RUNTIME_option_t *options,
         STARPU_W,        RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn),
         STARPU_PRIORITY, options->priority,
         STARPU_CALLBACK, callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zlatro",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zlauum.c b/runtime/starpu/codelets/codelet_zlauum.c
index 31f8012645c2065892434d153151db5f9a6642b8..db4ab89abbe50d639cf8dcacdc4f5221b61107c8 100644
--- a/runtime/starpu/codelets/codelet_zlauum.c
+++ b/runtime/starpu/codelets/codelet_zlauum.c
@@ -57,9 +57,6 @@ void INSERT_TASK_zlauum( const RUNTIME_option_t *options,
 {
     struct cl_zlauum_args_s *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid;
     int                      exec = 0;
     char                    *cl_name = "zlauum";
 
@@ -79,9 +76,6 @@ void INSERT_TASK_zlauum( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_zlauum_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
 #if defined(CHAMELEON_KERNELS_TRACE)
     {
         char *cl_fullname;
@@ -100,7 +94,7 @@ void INSERT_TASK_zlauum( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_zplghe.c b/runtime/starpu/codelets/codelet_zplghe.c
index 68bf93fc960e44beeed0468da28694d82562fce5..b14c32003de0cc524aea868aad1ff8a7302925ac 100644
--- a/runtime/starpu/codelets/codelet_zplghe.c
+++ b/runtime/starpu/codelets/codelet_zplghe.c
@@ -62,9 +62,6 @@ void INSERT_TASK_zplghe( const RUNTIME_option_t *options,
 {
     struct cl_zplghe_args_s *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid;
     int                      exec = 0;
     char                    *cl_name = "zplghe";
 
@@ -89,9 +86,6 @@ void INSERT_TASK_zplghe( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_zplghe_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
     /* Insert the task */
     rt_starpu_insert_task(
         &cl_zplghe,
@@ -102,7 +96,7 @@ void INSERT_TASK_zplghe( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_zplgsy.c b/runtime/starpu/codelets/codelet_zplgsy.c
index 2d342bac33f25e4e3e5ff60be624fe0d81b798c5..12f9497131d92719fbbe2367b02a9945e2c534de 100644
--- a/runtime/starpu/codelets/codelet_zplgsy.c
+++ b/runtime/starpu/codelets/codelet_zplgsy.c
@@ -62,9 +62,6 @@ void INSERT_TASK_zplgsy( const RUNTIME_option_t *options,
 {
     struct cl_zplgsy_args_s *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid;
     int                      exec = 0;
     char                    *cl_name = "zplgsy";
 
@@ -89,9 +86,6 @@ void INSERT_TASK_zplgsy( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_zplgsy_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
     /* Insert the task */
     rt_starpu_insert_task(
         &cl_zplgsy,
@@ -102,7 +96,7 @@ void INSERT_TASK_zplgsy( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_zplrnt.c b/runtime/starpu/codelets/codelet_zplrnt.c
index 36191f43e2486467220f6ee4cda694cd857c1d4a..588e25a57d24566f359ea66f1d4483dca311c807 100644
--- a/runtime/starpu/codelets/codelet_zplrnt.c
+++ b/runtime/starpu/codelets/codelet_zplrnt.c
@@ -62,9 +62,6 @@ void INSERT_TASK_zplrnt( const RUNTIME_option_t *options,
 {
     struct cl_zplrnt_args_s *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid;
     int                      exec = 0;
     char                    *cl_name = "zplrnt";
 
@@ -88,9 +85,6 @@ void INSERT_TASK_zplrnt( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_zplrnt_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
     /* Insert the task */
     rt_starpu_insert_task(
         &cl_zplrnt,
@@ -101,7 +95,7 @@ void INSERT_TASK_zplrnt( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_zplssq.c b/runtime/starpu/codelets/codelet_zplssq.c
index 187ceb3e66270737e4f281cb8d90c9d7d7b32f1c..1f5af5516999663214c5c85ca9ed51edbb3cd1d4 100644
--- a/runtime/starpu/codelets/codelet_zplssq.c
+++ b/runtime/starpu/codelets/codelet_zplssq.c
@@ -58,8 +58,6 @@ void INSERT_TASK_zplssq( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_zplssq;
     void (*callback)(void*) = options->profiling ? cl_zplssq_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(  IN,  INm,  INn  );
@@ -75,7 +73,7 @@ void INSERT_TASK_zplssq( const RUNTIME_option_t *options,
         STARPU_RW, RTBLKADDR( OUT, double, OUTm, OUTn ),
         STARPU_PRIORITY,    options->priority,
         STARPU_CALLBACK,    callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zplssq",
 #endif
@@ -109,8 +107,6 @@ void INSERT_TASK_zplssq2( const RUNTIME_option_t *options, int N,
 {
     struct starpu_codelet *codelet = &cl_zplssq2;
     void (*callback)(void*) = options->profiling ? cl_zplssq2_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_RW( RESULT, RESULTm, RESULTn );
@@ -122,7 +118,7 @@ void INSERT_TASK_zplssq2( const RUNTIME_option_t *options, int N,
         STARPU_RW, RTBLKADDR(RESULT, double, RESULTm, RESULTn),
         STARPU_PRIORITY,    options->priority,
         STARPU_CALLBACK,    callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zplssq2",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zpotrf.c b/runtime/starpu/codelets/codelet_zpotrf.c
index b0f42d459e51bed0c96b41bdde85256a06ca229a..24d2fd7e2e9ec571f9e81093f22c55d80c4b0bc1 100644
--- a/runtime/starpu/codelets/codelet_zpotrf.c
+++ b/runtime/starpu/codelets/codelet_zpotrf.c
@@ -70,9 +70,6 @@ void INSERT_TASK_zpotrf( const RUNTIME_option_t *options,
 {
     struct cl_zpotrf_args_s *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid;
     int                      exec = 0;
     char                    *cl_name = "zpotrf";
 
@@ -95,9 +92,6 @@ void INSERT_TASK_zpotrf( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_zpotrf_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
 #if defined(CHAMELEON_KERNELS_TRACE)
     {
         char *cl_fullname;
@@ -116,7 +110,7 @@ void INSERT_TASK_zpotrf( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_zssssm.c b/runtime/starpu/codelets/codelet_zssssm.c
index abad2f5af007c9ded4901b3306bc4912caea355c..9690730340c8cb50734dae21c7175a19dc14f2a1 100644
--- a/runtime/starpu/codelets/codelet_zssssm.c
+++ b/runtime/starpu/codelets/codelet_zssssm.c
@@ -69,8 +69,6 @@ void INSERT_TASK_zssssm( const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_zssssm;
     void (*callback)(void*) = options->profiling ? cl_zssssm_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_RW(A1, A1m, A1n);
@@ -94,7 +92,7 @@ void INSERT_TASK_zssssm( const RUNTIME_option_t *options,
         STARPU_VALUE,          &IPIV,                      sizeof(int*),
         STARPU_PRIORITY,    options->priority,
         STARPU_CALLBACK,    callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zssssm",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zsymm.c b/runtime/starpu/codelets/codelet_zsymm.c
index 5391f0da8fc11944e35a5281297bc027ac90fb86..e03e56be3c5a478db1293572ea5831c9da96414f 100644
--- a/runtime/starpu/codelets/codelet_zsymm.c
+++ b/runtime/starpu/codelets/codelet_zsymm.c
@@ -114,8 +114,6 @@ void INSERT_TASK_zsymm(const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_zsymm;
     void (*callback)(void*) = options->profiling ? cl_zsymm_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
     int accessC = ( beta == 0. ) ? STARPU_W : STARPU_RW;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -137,7 +135,7 @@ void INSERT_TASK_zsymm(const RUNTIME_option_t *options,
         accessC,                RTBLKADDR(C, CHAMELEON_Complex64_t, Cm, Cn),
         STARPU_PRIORITY,    options->priority,
         STARPU_CALLBACK,    callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zsymm",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zsyr2k.c b/runtime/starpu/codelets/codelet_zsyr2k.c
index f26bfd8f4ff0272f39567dbb6dbb5f56cd84ad34..5a5c5478751575d320f9612d00920510f0de20db 100644
--- a/runtime/starpu/codelets/codelet_zsyr2k.c
+++ b/runtime/starpu/codelets/codelet_zsyr2k.c
@@ -110,8 +110,6 @@ void INSERT_TASK_zsyr2k(const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_zsyr2k;
     void (*callback)(void*) = options->profiling ? cl_zsyr2k_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
     int accessC = ( beta == 0. ) ? STARPU_W : STARPU_RW;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -133,7 +131,7 @@ void INSERT_TASK_zsyr2k(const RUNTIME_option_t *options,
         accessC,                  RTBLKADDR(C, CHAMELEON_Complex64_t, Cm, Cn),
         STARPU_PRIORITY,    options->priority,
         STARPU_CALLBACK,    callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zsyr2k",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zsyrk.c b/runtime/starpu/codelets/codelet_zsyrk.c
index 49a16f71bbfec0754d540caf48cdd0ed6540a866..ee6f6aa538eafae32c2b1e6f57b7dc88dd4402db 100644
--- a/runtime/starpu/codelets/codelet_zsyrk.c
+++ b/runtime/starpu/codelets/codelet_zsyrk.c
@@ -101,9 +101,7 @@ void INSERT_TASK_zsyrk( const RUNTIME_option_t *options,
 
     struct cl_zsyrk_args_s *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid, accessC;
+    int                      accessC;
     int                      exec = 0;
     char                    *cl_name = "zsyrk";
 
@@ -129,9 +127,6 @@ void INSERT_TASK_zsyrk( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_zsyrk_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
     /* Reduce the C access if needed */
     accessC = ( beta == 0. ) ? STARPU_W : STARPU_RW;
 
@@ -154,7 +149,7 @@ void INSERT_TASK_zsyrk( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_zsyssq.c b/runtime/starpu/codelets/codelet_zsyssq.c
index 0d1fe24bb325ca34001d22c3f78d1b0531cfc2e6..5a0836d0efd00929c92dda8e99632e76d47962e9 100644
--- a/runtime/starpu/codelets/codelet_zsyssq.c
+++ b/runtime/starpu/codelets/codelet_zsyssq.c
@@ -52,8 +52,6 @@ void INSERT_TASK_zsyssq( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_zsyssq;
     void (*callback)(void*) = options->profiling ? cl_zgessq_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -69,7 +67,7 @@ void INSERT_TASK_zsyssq( const RUNTIME_option_t *options,
         STARPU_RW,       RTBLKADDR(SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn),
         STARPU_PRIORITY, options->priority,
         STARPU_CALLBACK, callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zsyssq",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zsytrf_nopiv.c b/runtime/starpu/codelets/codelet_zsytrf_nopiv.c
index c8f9eb4798cedef9c98d2d8512aca788e00878ce..340d37adae1a9c77951bff673cb4844abc29007b 100644
--- a/runtime/starpu/codelets/codelet_zsytrf_nopiv.c
+++ b/runtime/starpu/codelets/codelet_zsytrf_nopiv.c
@@ -55,8 +55,6 @@ void INSERT_TASK_zsytrf_nopiv( const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_zsytrf_nopiv;
     void (*callback)(void*) = options->profiling ? cl_zsytrf_nopiv_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_RW(A, Am, An);
@@ -71,7 +69,7 @@ void INSERT_TASK_zsytrf_nopiv( const RUNTIME_option_t *options,
         /* STARPU_SCRATCH,   options->ws_worker, */
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zsytrf_nopiv",
 #endif
diff --git a/runtime/starpu/codelets/codelet_ztplqt.c b/runtime/starpu/codelets/codelet_ztplqt.c
index 184857254fbc6efac264eb12addbfed80a08d53a..90ef69afc2a63352bc50a2148262b0ff5682b2ff 100644
--- a/runtime/starpu/codelets/codelet_ztplqt.c
+++ b/runtime/starpu/codelets/codelet_ztplqt.c
@@ -59,8 +59,6 @@ void INSERT_TASK_ztplqt( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_ztplqt;
     void (*callback)(void*) = options->profiling ? cl_ztplqt_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_RW(A, Am, An);
@@ -81,7 +79,7 @@ void INSERT_TASK_ztplqt( const RUNTIME_option_t *options,
         STARPU_SCRATCH,   options->ws_worker,
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_USE_MPI)
         STARPU_EXECUTE_ON_NODE, B->get_rankof(B, Bm, Bn),
 #endif
diff --git a/runtime/starpu/codelets/codelet_ztpmlqt.c b/runtime/starpu/codelets/codelet_ztpmlqt.c
index 52a53739b8538cdaa886e33e320fdf2d55ebde66..076144bc9749dd74d1adde6e19cb7f546de5dcb7 100644
--- a/runtime/starpu/codelets/codelet_ztpmlqt.c
+++ b/runtime/starpu/codelets/codelet_ztpmlqt.c
@@ -105,8 +105,6 @@ void INSERT_TASK_ztpmlqt( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_ztpmlqt;
     void (*callback)(void*) = options->profiling ? cl_ztpmlqt_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(V, Vm, Vn);
@@ -133,7 +131,7 @@ void INSERT_TASK_ztpmlqt( const RUNTIME_option_t *options,
         STARPU_SCRATCH,   options->ws_worker,
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_USE_MPI)
         STARPU_EXECUTE_ON_NODE, B->get_rankof(B, Bm, Bn),
 #endif
diff --git a/runtime/starpu/codelets/codelet_ztpmqrt.c b/runtime/starpu/codelets/codelet_ztpmqrt.c
index 78eb481dfce1ab0821eb0b981df3c0a831f1b1fd..66461e6c45c5773c4bf4419389fb3423a53b6112 100644
--- a/runtime/starpu/codelets/codelet_ztpmqrt.c
+++ b/runtime/starpu/codelets/codelet_ztpmqrt.c
@@ -105,8 +105,6 @@ void INSERT_TASK_ztpmqrt( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_ztpmqrt;
     void (*callback)(void*) = options->profiling ? cl_ztpmqrt_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(V, Vm, Vn);
@@ -133,7 +131,7 @@ void INSERT_TASK_ztpmqrt( const RUNTIME_option_t *options,
         STARPU_SCRATCH,   options->ws_worker,
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_USE_MPI)
         STARPU_EXECUTE_ON_NODE, B->get_rankof(B, Bm, Bn),
 #endif
diff --git a/runtime/starpu/codelets/codelet_ztpqrt.c b/runtime/starpu/codelets/codelet_ztpqrt.c
index 3baed4ce743acc143205ce567bd20730268de53e..aab476553249d2f27ca4fdb9b12abde6c2b2550d 100644
--- a/runtime/starpu/codelets/codelet_ztpqrt.c
+++ b/runtime/starpu/codelets/codelet_ztpqrt.c
@@ -60,8 +60,6 @@ void INSERT_TASK_ztpqrt( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_ztpqrt;
     void (*callback)(void*) = options->profiling ? cl_ztpqrt_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_RW(A, Am, An);
@@ -82,7 +80,7 @@ void INSERT_TASK_ztpqrt( const RUNTIME_option_t *options,
         STARPU_SCRATCH,   options->ws_worker,
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_USE_MPI)
         STARPU_EXECUTE_ON_NODE, B->get_rankof(B, Bm, Bn),
 #endif
diff --git a/runtime/starpu/codelets/codelet_ztradd.c b/runtime/starpu/codelets/codelet_ztradd.c
index d59f03a5f3e4e9695c728f4eeb142add91e5192f..f3c0493a2ddc179e2c5f0728bd10fcc25944a840 100644
--- a/runtime/starpu/codelets/codelet_ztradd.c
+++ b/runtime/starpu/codelets/codelet_ztradd.c
@@ -67,9 +67,7 @@ void INSERT_TASK_ztradd( const RUNTIME_option_t *options,
 
     struct cl_ztradd_args_s *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid, accessB;
+    int                      accessB;
     int                      exec = 0;
     char                    *cl_name = "ztradd";
 
@@ -95,9 +93,6 @@ void INSERT_TASK_ztradd( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_ztradd_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
     /* Reduce the B access if needed */
     accessB = ( beta == 0. ) ? STARPU_W : STARPU_RW;
 
@@ -112,7 +107,7 @@ void INSERT_TASK_ztradd( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_ztrasm.c b/runtime/starpu/codelets/codelet_ztrasm.c
index 5eb7835b2f4375118c6578faefce1675d0d4b4d6..8a84b7d4bc9bd151ad76890c7ebd91ddea68f883 100644
--- a/runtime/starpu/codelets/codelet_ztrasm.c
+++ b/runtime/starpu/codelets/codelet_ztrasm.c
@@ -55,8 +55,6 @@ void INSERT_TASK_ztrasm( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_ztrasm;
     void (*callback)(void*) = options->profiling ? cl_ztrasm_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -74,7 +72,7 @@ void INSERT_TASK_ztrasm( const RUNTIME_option_t *options,
         STARPU_RW,       RTBLKADDR(B, double, Bm, Bn),
         STARPU_PRIORITY, options->priority,
         STARPU_CALLBACK, callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "ztrasm",
 #endif
diff --git a/runtime/starpu/codelets/codelet_ztrmm.c b/runtime/starpu/codelets/codelet_ztrmm.c
index 887ff71d3c7c237d924afe849858ea8d4ba99979..1c6a2901c97437f4699d9a1045b2d0d0f0af64d4 100644
--- a/runtime/starpu/codelets/codelet_ztrmm.c
+++ b/runtime/starpu/codelets/codelet_ztrmm.c
@@ -96,9 +96,6 @@ void INSERT_TASK_ztrmm( const RUNTIME_option_t *options,
 {
     struct cl_ztrmm_args_s *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid;
     int                      exec = 0;
     char                    *cl_name = "ztrmm";
 
@@ -125,9 +122,6 @@ void INSERT_TASK_ztrmm( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_ztrmm_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
 #if defined(CHAMELEON_KERNELS_TRACE)
     {
         char *cl_fullname;
@@ -147,7 +141,7 @@ void INSERT_TASK_ztrmm( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_ztrsm.c b/runtime/starpu/codelets/codelet_ztrsm.c
index 2aa43232e8404cfa31431ba7fb3779d3ff0c9e92..423e95fc943f02178d184285cbbb0acc5a8dc5ac 100644
--- a/runtime/starpu/codelets/codelet_ztrsm.c
+++ b/runtime/starpu/codelets/codelet_ztrsm.c
@@ -97,9 +97,6 @@ void INSERT_TASK_ztrsm( const RUNTIME_option_t *options,
 {
     struct cl_ztrsm_args_s  *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid;
     int                      exec = 0;
     char                    *cl_name = "ztrsm";
 
@@ -126,9 +123,6 @@ void INSERT_TASK_ztrsm( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_ztrsm_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
 #if defined(CHAMELEON_KERNELS_TRACE)
     {
         char *cl_fullname;
@@ -148,7 +142,7 @@ void INSERT_TASK_ztrsm( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_ztrssq.c b/runtime/starpu/codelets/codelet_ztrssq.c
index 07f433a746e687db7c25b25fd196bace31576c82..5476bc998bec3d6dd43eb511ebd86d9149e570e3 100644
--- a/runtime/starpu/codelets/codelet_ztrssq.c
+++ b/runtime/starpu/codelets/codelet_ztrssq.c
@@ -54,8 +54,6 @@ void INSERT_TASK_ztrssq( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_ztrssq;
     void (*callback)(void*) = options->profiling ? cl_ztrasm_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -72,7 +70,7 @@ void INSERT_TASK_ztrssq( const RUNTIME_option_t *options,
         STARPU_RW,       RTBLKADDR(SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn),
         STARPU_PRIORITY, options->priority,
         STARPU_CALLBACK, callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "ztrssq",
 #endif
diff --git a/runtime/starpu/codelets/codelet_ztrtri.c b/runtime/starpu/codelets/codelet_ztrtri.c
index 9605d034eca04fbced137f051f54b962706c5308..22b53d92b6adc6dc6bb96435e3da5d486d183528 100644
--- a/runtime/starpu/codelets/codelet_ztrtri.c
+++ b/runtime/starpu/codelets/codelet_ztrtri.c
@@ -67,9 +67,6 @@ void INSERT_TASK_ztrtri( const RUNTIME_option_t *options,
 {
     struct cl_ztrtri_args_s *clargs = NULL;
     void (*callback)(void*);
-    RUNTIME_request_t       *request  = options->request;
-    starpu_option_request_t *schedopt = (starpu_option_request_t *)(request->schedopt);
-    int                      workerid;
     int                      exec = 0;
     char                    *cl_name = "ztrtri";
 
@@ -93,9 +90,6 @@ void INSERT_TASK_ztrtri( const RUNTIME_option_t *options,
     /* Callback fro profiling information */
     callback = options->profiling ? cl_ztrtri_callback : NULL;
 
-    /* Fix the worker id */
-    workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
-
 #if defined(CHAMELEON_KERNELS_TRACE)
     {
         char *cl_fullname;
@@ -114,7 +108,7 @@ void INSERT_TASK_ztrtri( const RUNTIME_option_t *options,
         /* Common task arguments */
         STARPU_PRIORITY,          options->priority,
         STARPU_CALLBACK,          callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME,              cl_name,
 #endif
diff --git a/runtime/starpu/codelets/codelet_ztsmlq_hetra1.c b/runtime/starpu/codelets/codelet_ztsmlq_hetra1.c
index 882b41c84b2a36e847b9d862235270b8c9fa9ca1..a12c11830d81bf33ce8a965e8bb761c2987b139f 100644
--- a/runtime/starpu/codelets/codelet_ztsmlq_hetra1.c
+++ b/runtime/starpu/codelets/codelet_ztsmlq_hetra1.c
@@ -75,8 +75,6 @@ void INSERT_TASK_ztsmlq_hetra1( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_ztsmlq_hetra1;
     void (*callback)(void*) = options->profiling ? cl_ztsmlq_hetra1_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     int ldWORK = side == ChamLeft ? ib : nb;
 
@@ -105,7 +103,7 @@ void INSERT_TASK_ztsmlq_hetra1( const RUNTIME_option_t *options,
         STARPU_SCRATCH,   options->ws_worker,
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "ztsmlq_hetra1",
 #endif
diff --git a/runtime/starpu/codelets/codelet_ztsmqr_hetra1.c b/runtime/starpu/codelets/codelet_ztsmqr_hetra1.c
index 586b59e90036c7a90c705fb885def2fd497d4430..b70d4e1285ebc153a03b29e8e470346b29e2a990 100644
--- a/runtime/starpu/codelets/codelet_ztsmqr_hetra1.c
+++ b/runtime/starpu/codelets/codelet_ztsmqr_hetra1.c
@@ -75,8 +75,6 @@ void INSERT_TASK_ztsmqr_hetra1( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_ztsmqr_hetra1;
     void (*callback)(void*) = options->profiling ? cl_ztsmqr_hetra1_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     int ldWORK = side == ChamLeft ? ib : nb;
 
@@ -105,7 +103,7 @@ void INSERT_TASK_ztsmqr_hetra1( const RUNTIME_option_t *options,
         STARPU_SCRATCH,   options->ws_worker,
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "ztsmqr_hetra1",
 #endif
diff --git a/runtime/starpu/codelets/codelet_ztstrf.c b/runtime/starpu/codelets/codelet_ztstrf.c
index 95f47124f93c02fe27c6752c5d367691d9071d69..bd6d496299034ee2e5a8a319648b17126c4a64b7 100644
--- a/runtime/starpu/codelets/codelet_ztstrf.c
+++ b/runtime/starpu/codelets/codelet_ztstrf.c
@@ -82,8 +82,6 @@ void INSERT_TASK_ztstrf( const RUNTIME_option_t *options,
     (void)nb;
     struct starpu_codelet *codelet = &cl_ztstrf;
     void (*callback)(void*) = options->profiling ? cl_ztstrf_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
     CHAMELEON_starpu_ws_t *d_work = (CHAMELEON_starpu_ws_t*)(options->ws_host);
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -111,7 +109,7 @@ void INSERT_TASK_ztstrf( const RUNTIME_option_t *options,
         STARPU_VALUE,    &(options->request),        sizeof(RUNTIME_request_t*),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "ztstrf",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zunmlq.c b/runtime/starpu/codelets/codelet_zunmlq.c
index 18a3b661226c808275776221c078818434a0fd84..e0d55765aaa4479c7657426892c1b148f9d4ecb8 100644
--- a/runtime/starpu/codelets/codelet_zunmlq.c
+++ b/runtime/starpu/codelets/codelet_zunmlq.c
@@ -108,8 +108,6 @@ void INSERT_TASK_zunmlq( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_zunmlq;
     void (*callback)(void*) = options->profiling ? cl_zunmlq_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -133,7 +131,7 @@ void INSERT_TASK_zunmlq( const RUNTIME_option_t *options,
         STARPU_VALUE,    &nb,                sizeof(int),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zunmlq",
 #endif
diff --git a/runtime/starpu/codelets/codelet_zunmqr.c b/runtime/starpu/codelets/codelet_zunmqr.c
index f7f29d45da3be749db83c8d2b6f9a7695d09f575..58cad3e8aec870a730452afea146d60a3d78c160 100644
--- a/runtime/starpu/codelets/codelet_zunmqr.c
+++ b/runtime/starpu/codelets/codelet_zunmqr.c
@@ -107,8 +107,6 @@ void INSERT_TASK_zunmqr( const RUNTIME_option_t *options,
 {
     struct starpu_codelet *codelet = &cl_zunmqr;
     void (*callback)(void*) = options->profiling ? cl_zunmqr_callback : NULL;
-    starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt);
-    int workerid = (schedopt == NULL) ? -1 : schedopt->workerid;
 
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_R(A, Am, An);
@@ -132,7 +130,7 @@ void INSERT_TASK_zunmqr( const RUNTIME_option_t *options,
         STARPU_VALUE,    &nb,                sizeof(int),
         STARPU_PRIORITY,  options->priority,
         STARPU_CALLBACK,  callback,
-        STARPU_EXECUTE_ON_WORKER, workerid,
+        STARPU_EXECUTE_ON_WORKER, options->workerid,
 #if defined(CHAMELEON_CODELETS_HAVE_NAME)
         STARPU_NAME, "zunmqr",
 #endif
diff --git a/runtime/starpu/control/runtime_options.c b/runtime/starpu/control/runtime_options.c
index 6687984b2d56f62bb7a8c1369bab5c3191c10405..d95cbf865413d98ac079fd0ea1e5768739e6b8b4 100644
--- a/runtime/starpu/control/runtime_options.c
+++ b/runtime/starpu/control/runtime_options.c
@@ -21,18 +21,20 @@
  */
 #include "chameleon_starpu.h"
 
-void RUNTIME_options_init( RUNTIME_option_t *option, CHAM_context_t *chamctxt,
+void RUNTIME_options_init( RUNTIME_option_t *options, CHAM_context_t *chamctxt,
                            RUNTIME_sequence_t *sequence, RUNTIME_request_t *request )
 {
-    option->sequence   = sequence;
-    option->request    = request;
-    option->profiling  = CHAMELEON_PROFILING == CHAMELEON_TRUE;
-    option->parallel   = CHAMELEON_PARALLEL == CHAMELEON_TRUE;
-    option->priority   = RUNTIME_PRIORITY_MIN;
-    option->ws_wsize   = 0;
-    option->ws_hsize   = 0;
-    option->ws_worker  = NULL;
-    option->ws_host    = NULL;
+    starpu_option_request_t* schedopt = (starpu_option_request_t *)(request->schedopt);
+    options->sequence  = sequence;
+    options->request   = request;
+    options->profiling = CHAMELEON_PROFILING == CHAMELEON_TRUE;
+    options->parallel  = CHAMELEON_PARALLEL == CHAMELEON_TRUE;
+    options->priority  = RUNTIME_PRIORITY_MIN;
+    options->workerid  = (schedopt == NULL) ? -1 : schedopt->workerid;
+    options->ws_wsize  = 0;
+    options->ws_hsize  = 0;
+    options->ws_worker = NULL;
+    options->ws_host   = NULL;
     return;
 }