diff --git a/ChangeLog b/ChangeLog
index 23cd6845ae17427484f1122274166e723f43554b..545761d09776fcc7b48035e90992eff90d4b6227 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 chameleon-1.4.0
 ------------------------------------------------------------------------
+ - StarPU: Update the minimum requirement from 1.3 to 1.4
  - StarPU: When using starpu > 1.4.8, use the new distributed submit interface in the codelets instead of the classical insert task interface.
  - ci: use -Werror to prevent from adding warning to the code
  - Fix: all warning reported by the switch to -Werror
diff --git a/runtime/starpu/CMakeLists.txt b/runtime/starpu/CMakeLists.txt
index 4fe2a9e765e1bd62b8f6b85df32ddf7630beccd3..e7f330d1be0fc38d4e66eb8fa9baf5889ca77dd9 100644
--- a/runtime/starpu/CMakeLists.txt
+++ b/runtime/starpu/CMakeLists.txt
@@ -36,7 +36,7 @@ include(CheckSymbolExists)
 include(CheckStructHasMember)
 include(CheckCSourceRuns)
 
-set(CHAMELEON_STARPU_VERSION "1.3" CACHE STRING "necessary STARPU API version")
+set(CHAMELEON_STARPU_VERSION "1.4" CACHE STRING "necessary STARPU API version")
 
 find_package(STARPU ${CHAMELEON_STARPU_VERSION} REQUIRED)
 
diff --git a/runtime/starpu/include/chameleon_starpu_internal.h b/runtime/starpu/include/chameleon_starpu_internal.h
index 9beea7b0eb9f1624692989d7053e6e282ae25250..c202955a80a5454fdb7c64bbb1f9db5ccd29db17 100644
--- a/runtime/starpu/include/chameleon_starpu_internal.h
+++ b/runtime/starpu/include/chameleon_starpu_internal.h
@@ -347,7 +347,7 @@ starpu_cham_exchange_data_before_execution( const RUNTIME_option_t
                                             int                                     An,
                                             enum starpu_data_access_mode            mode )
 {
-    unsigned              need_submit = 0;
+    unsigned              need_submit = params.do_execute;
     starpu_data_handle_t *ptrtile     = chameleon_starpu_data_gethandle( A, Am, An );
 
     /*
@@ -369,7 +369,7 @@ starpu_cham_exchange_data_before_execution( const RUNTIME_option_t
         need_submit = 1;
     }
 
-    if ( !need_submit && !params->do_execute ) {
+    if ( !need_submit ) {
         return;
     }
 
diff --git a/runtime/starpu/include/runtime_codelet_profile.h b/runtime/starpu/include/runtime_codelet_profile.h
index 361aeeb75bdcb0577c68e7fc883c95a4dcf43d2b..eac734b1fc5294e0c728e336c7cad593a6406c59 100644
--- a/runtime/starpu/include/runtime_codelet_profile.h
+++ b/runtime/starpu/include/runtime_codelet_profile.h
@@ -73,7 +73,6 @@
 
 #define CHAMELEON_CL_CB_HEADER(name)                    \
     extern struct starpu_perfmodel*cl_##name##_save;    \
-    extern struct starpu_perfmodel cl_##name##_fake;    \
     void cl_##name##_callback();                        \
     void profiling_display_##name##_info(void)
 
diff --git a/runtime/starpu/include/runtime_codelets.h b/runtime/starpu/include/runtime_codelets.h
index e274d643a2e118fd4a3f984beec2ce22bae281e9..8e5b5b891ae66c390812265b8b3eb8e339bb2a69 100644
--- a/runtime/starpu/include/runtime_codelets.h
+++ b/runtime/starpu/include/runtime_codelets.h
@@ -54,7 +54,7 @@
 #if defined(CHAMELEON_USE_CUDA)
 #define CODELET_GPU_FIELDS( gpu_func_name, gpu_flags )                 \
         CODELET_CUDA_FLAGS( gpu_flags )                                \
-        .cuda_func = ((gpu_func_name)),
+        .cuda_funcs = {(gpu_func_name)},
 #elif defined(CHAMELEON_USE_HIP)
 #define CODELET_GPU_FIELDS( gpu_func_name, gpu_flags )                 \
         CODELET_HIP_FLAGS( gpu_flags )                                 \
@@ -64,11 +64,6 @@
 #endif
 
 #define CODELETS_ALL(cl_name, cpu_func_name, gpu_func_name, _original_location_, gpu_flags) \
-    struct starpu_perfmodel cl_##cl_name##_fake = {                     \
-        .type   = STARPU_HISTORY_BASED,                                 \
-        .symbol = "fake_"#cl_name                                       \
-    };                                                                  \
-                                                                        \
     struct starpu_perfmodel cl_##cl_name##_model = {                    \
         .type   = STARPU_HISTORY_BASED,                                 \
         .symbol = ""#cl_name                                            \
@@ -76,7 +71,7 @@
                                                                         \
     struct starpu_codelet cl_##cl_name = {                              \
         .where     = (_original_location_),                             \
-        .cpu_func  = ((cpu_func_name)),                                 \
+        .cpu_funcs = {(cpu_func_name)},                                 \
         CODELET_GPU_FIELDS( gpu_func_name, gpu_flags )                  \
         .nbuffers  = STARPU_VARIABLE_NBUFFERS,                          \
         .model     = &cl_##cl_name##_model,                             \
@@ -92,11 +87,6 @@
     void cl_##cl_name##_restore_where(void)                             \
     {                                                                   \
         cl_##cl_name.where = (_original_location_);                     \
-    }                                                                   \
-                                                                        \
-    void cl_##cl_name##_restore_model(void)                             \
-    {                                                                   \
-        cl_##cl_name.model = &cl_##cl_name##_model;                     \
     }
 
 #if defined(CHAMELEON_SIMULATION)
@@ -117,8 +107,6 @@
 
 #define CODELETS_ALL_HEADER(name)                            \
      CHAMELEON_CL_CB_HEADER(name);                           \
-     void cl_##name##_load_fake_model(void);                 \
-     void cl_##name##_restore_model(void);                   \
      extern struct starpu_codelet cl_##name;                 \
      void cl_##name##_restrict_where(uint32_t where);        \
      void cl_##name##_restore_where(void)
diff --git a/runtime/starpu/include/runtime_profiling.h b/runtime/starpu/include/runtime_profiling.h
index e366c620ce779e6af9abcd8f44151ac89543e791..dd71ca13fccd61d0c9d043825ab168e2dfedd8b6 100644
--- a/runtime/starpu/include/runtime_profiling.h
+++ b/runtime/starpu/include/runtime_profiling.h
@@ -43,14 +43,4 @@ void RUNTIME_profiling_cdisplay_all(void);
 void RUNTIME_profiling_ddisplay_all(void);
 void RUNTIME_profiling_sdisplay_all(void);
 
-void CHAMELEON_zload_FakeModel();
-void CHAMELEON_cload_FakeModel();
-void CHAMELEON_dload_FakeModel();
-void CHAMELEON_sload_FakeModel();
-
-void CHAMELEON_zrestore_Model();
-void CHAMELEON_crestore_Model();
-void CHAMELEON_drestore_Model();
-void CHAMELEON_srestore_Model();
-
 #endif /* _runtime_profiling_h_ */