diff --git a/include/chameleon/tasks.h b/include/chameleon/tasks.h
index 99d70dbade30332f9af8ce5397636f8023a10e24..bf9984ae7261ffe30bbf7e5dcf10478973d6d11e 100644
--- a/include/chameleon/tasks.h
+++ b/include/chameleon/tasks.h
@@ -35,6 +35,10 @@ BEGIN_C_DECLS
  */
 typedef enum chameleon_tasktype_e {
 
+  TASK_MAP_ONE,
+  TASK_MAP_TWO,
+  TASK_MAP_THREE,
+
   TASK_GEMM,
   TASK_HEMM,
   TASK_HER2K,
diff --git a/runtime/starpu/control/runtime_zlocality.c b/runtime/starpu/control/runtime_zlocality.c
index 92b47827f3dd65fb63cd7536396b162379d6e7c0..f0c9e375d26133a41e0c28e7df3f05587d338649 100644
--- a/runtime/starpu/control/runtime_zlocality.c
+++ b/runtime/starpu/control/runtime_zlocality.c
@@ -94,6 +94,10 @@ void RUNTIME_zlocality_allrestrict( uint32_t where )
    cl_zunmlq_restrict_where( where );
    cl_ztpmlqt_restrict_where( where );
 
+    /* map */
+    cl_map_one_restrict_where( where );
+    cl_map_two_restrict_where( where );
+    cl_map_three_restrict_where( where );
 }
 
 void RUNTIME_zlocality_onerestrict( cham_tasktype_t kernel, uint32_t where )
@@ -138,11 +142,15 @@ void RUNTIME_zlocality_onerestrict( cham_tasktype_t kernel, uint32_t where )
     case TASK_TPMQRT: cl_ztpmqrt_restrict_where( where ); break;
 
     /* LQ */
-   case TASK_GELQT:  cl_zgelqt_restrict_where( where ); break;
-   case TASK_TPLQT:  cl_ztplqt_restrict_where( where ); break;
-   case TASK_UNMLQ:  cl_zunmlq_restrict_where( where ); break;
-   case TASK_TPMLQT: cl_ztpmlqt_restrict_where( where ); break;
-
+    case TASK_GELQT:  cl_zgelqt_restrict_where( where ); break;
+    case TASK_TPLQT:  cl_ztplqt_restrict_where( where ); break;
+    case TASK_UNMLQ:  cl_zunmlq_restrict_where( where ); break;
+    case TASK_TPMLQT: cl_ztpmlqt_restrict_where( where ); break;
+
+    /* map */
+    case TASK_MAP_ONE: cl_map_one_restrict_where( where ); break;
+    case TASK_MAP_TWO: cl_map_two_restrict_where( where ); break;
+    case TASK_MAP_THREE: cl_map_three_restrict_where( where ); break;
     default:
       return;
     }
@@ -190,6 +198,10 @@ void RUNTIME_zlocality_allrestore( )
    cl_zunmlq_restore_where();
    cl_ztpmlqt_restore_where();
 
+    /* map */
+    cl_map_one_restore_where();
+    cl_map_two_restore_where();
+    cl_map_three_restore_where();
 }
 
 void RUNTIME_zlocality_onerestore( cham_tasktype_t kernel )
@@ -231,10 +243,15 @@ void RUNTIME_zlocality_onerestore( cham_tasktype_t kernel )
     case TASK_TPMQRT: cl_ztpmqrt_restore_where(); break;
 
     /* LQ */
-   case TASK_GELQT:  cl_zgelqt_restore_where(); break;
-   case TASK_TPLQT:  cl_ztplqt_restore_where(); break;
-   case TASK_UNMLQ:  cl_zunmlq_restore_where(); break;
-   case TASK_TPMLQT: cl_ztpmlqt_restore_where(); break;
+    case TASK_GELQT:  cl_zgelqt_restore_where(); break;
+    case TASK_TPLQT:  cl_ztplqt_restore_where(); break;
+    case TASK_UNMLQ:  cl_zunmlq_restore_where(); break;
+    case TASK_TPMLQT: cl_ztpmlqt_restore_where(); break;
+
+    /* map */
+    case TASK_MAP_ONE: cl_map_one_restore_where(); break;
+    case TASK_MAP_TWO: cl_map_two_restore_where(); break;
+    case TASK_MAP_THREE: cl_map_three_restore_where(); break;
 
     default:
       return;
diff --git a/runtime/starpu/include/runtime_codelet_z.h b/runtime/starpu/include/runtime_codelet_z.h
index 04dec2b63171d54526eb6bc7dd510464efc5e713..9f67c06f3e2bc0199208cb953363eec5d01965a0 100644
--- a/runtime/starpu/include/runtime_codelet_z.h
+++ b/runtime/starpu/include/runtime_codelet_z.h
@@ -143,6 +143,11 @@ CODELETS_HEADER(dlag2h);
 CODELETS_HEADER(hlag2d);
 #endif
 
+/* map */
+CODELETS_HEADER(map_one);
+CODELETS_HEADER(map_two);
+CODELETS_HEADER(map_three);
+
 struct cl_zgemm_args_s {
     cham_trans_t transA;
     cham_trans_t transB;