diff --git a/CMakeLists.txt b/CMakeLists.txt
index 939cc192d8b3984f3fb71052fc24553830a89f1c..f6bf03d05860d84544e76aebd80ee9962d6534f3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -224,6 +224,10 @@ if(CHAMELEON_SCHED_STARPU)
     if(CHAMELEON_ENABLE_PRUNING_STATS)
         add_definitions(-DCHAMELEON_ENABLE_PRUNING_STATS)
     endif(CHAMELEON_ENABLE_PRUNING_STATS)
+
+    cmake_dependent_option(CHAMELEON_SIMULATION_EXTENDED
+      "Enable non GPU kernels to be simulated on GPU" OFF
+      "CHAMELEON_SIMULATION" OFF)
 endif()
 
 # Initially we need to generate files for different precisions
diff --git a/include/chameleon/config.h.in b/include/chameleon/config.h.in
index 10eb9136608e47c242bb7e4ad553b2b7531ca7e5..0ad3b485bcef131531d70a27a5471ef49bf7f060 100644
--- a/include/chameleon/config.h.in
+++ b/include/chameleon/config.h.in
@@ -50,6 +50,7 @@
 
 /* Simulation */
 #cmakedefine CHAMELEON_SIMULATION
+#cmakedefine CHAMELEON_SIMULATION_EXTENDED
 
 /* getopt */
 #cmakedefine CHAMELEON_HAVE_GETOPT_H
diff --git a/runtime/starpu/codelets/codelet_zpotrf.c b/runtime/starpu/codelets/codelet_zpotrf.c
index 35edf5234888074001c5ef18933b8259ae931219..f99cd3ce6c4bca4a5ee12873114d6a480619d34b 100644
--- a/runtime/starpu/codelets/codelet_zpotrf.c
+++ b/runtime/starpu/codelets/codelet_zpotrf.c
@@ -52,7 +52,11 @@ static void cl_zpotrf_cpu_func(void *descr[], void *cl_arg)
 /*
  * Codelet definition
  */
-CODELETS_CPU(zpotrf, cl_zpotrf_cpu_func)
+#if defined(CHAMELEON_SIMULATION) && defined(CHAMELEON_SIMULATION_EXTENDED)
+CODELETS( zpotrf, cl_zpotrf_cpu_func, cl_zpotrf_cuda_func, STARPU_CUDA_ASYNC )
+#else
+CODELETS_CPU( zpotrf, cl_zpotrf_cpu_func )
+#endif
 
 /**
  *