diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8897baaaefff4bc1ff72738f6bf0ced1cb03319e..a0a0318583a6d8bbcd2f37571c5611d402ce045e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -9,7 +9,19 @@ starpu:
     - ctest -R test_shm_s
     - cmake .. -DCHAMELEON_USE_MPI=ON -DCMAKE_INSTALL_PREFIX=$PWD/install
     - make -j2
-    - ctest -R mpi_s
+    - ctest -V -R mpi_s
+
+starpu-simgrid:
+  script:
+    - git submodule init
+    - git submodule update
+    - mkdir build
+    - cd build
+    - . $HOME/spack/share/spack/setup-env.sh
+    - spack load hwloc && spack load fxt && spack load simgrid && spack load starpu
+    - cmake .. -DCHAMELEON_SIMULATION=ON -DCHAMELEON_USE_CUDA=ON -DCHAMELEON_USE_MAGMA=OFF -DCHAMELEON_USE_MPI=OFF
+    - make -j2
+    - ctest -V
 
 quark:
   script:
@@ -19,4 +31,4 @@ quark:
     - cd build
     - cmake .. -DCHAMELEON_SCHED_QUARK=ON
     - make -j2
-    - ctest -R test_shm_s
\ No newline at end of file
+    - ctest -V -R test_shm_s
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 574141293409522be8fc97b393f009d623c744fa..1d292a9084f0749f5f778cbbfa447ba4b957dd32 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -559,7 +559,7 @@ else (NOT CHAMELEON_SIMULATION)
         "   else set CHAMELEON_USE_CUDA=OFF. The same idea is applicable with MAGMA."
         "${ColourReset}")
     endif()
-    if(NOT CHAMELEON_USE_MAGMA)
+    if(NOT DEFINED CHAMELEON_USE_MAGMA)
         message(WARNING "${BoldBlue}"
         "In simulation mode CHAMELEON_USE_CUDA and CHAMELEON_USE_MAGMA should be set to"
         "   ensure that the user is aware of the version to be used. If Chameleon's"
@@ -1088,14 +1088,14 @@ if(_match_ifort)
 endif(_match_ifort)
 
 # Testing executables
-if(CHAMELEON_ENABLE_EXAMPLE)
+if(CHAMELEON_ENABLE_EXAMPLE AND NOT CHAMELEON_SIMULATION)
   add_subdirectory(example)
-endif(CHAMELEON_ENABLE_EXAMPLE)
+endif(CHAMELEON_ENABLE_EXAMPLE AND NOT CHAMELEON_SIMULATION)
 
 # Testing executables
-if(CHAMELEON_ENABLE_TESTING)
+if(CHAMELEON_ENABLE_TESTING AND NOT CHAMELEON_SIMULATION)
   add_subdirectory(testing)
-endif(CHAMELEON_ENABLE_TESTING)
+endif(CHAMELEON_ENABLE_TESTING AND NOT CHAMELEON_SIMULATION)
 
 # Timing executables
 if(CHAMELEON_ENABLE_TIMING)
diff --git a/timing/CTestLists.cmake b/timing/CTestLists.cmake
index 0a60675daed77bc25860128db9d357b8a39f26ae..9b1eaa0aa78244192fb7318c3673ab24b0ca80f2 100644
--- a/timing/CTestLists.cmake
+++ b/timing/CTestLists.cmake
@@ -2,60 +2,67 @@
 # Check timing/
 #
 
-set(TEST_CMD_shm    --n_range=500:2000:500 --nb=320 )
-set(TEST_CMD_shmgpu --n_range=500:2000:500 --nb=320 --gpus=1)
-set(TEST_CMD_mpi    --n_range=500:2000:500 --nb=320 --p=2)
-set(TEST_CMD_mpigpu --n_range=500:2000:500 --nb=320 --p=2 --gpus=1)
+set(TEST_CMD_shm     --n_range=500:2000:500 --nb=320 )
+set(TEST_CMD_shmgpu  --n_range=500:2000:500 --nb=320 --gpus=1)
+set(TEST_CMD_mpi     --n_range=500:2000:500 --nb=320 --p=2)
+set(TEST_CMD_mpigpu  --n_range=500:2000:500 --nb=320 --p=2 --gpus=1)
 
 set(MPI_CMD_shm )
 set(MPI_CMD_shmgpu )
 set(MPI_CMD_mpi mpirun -np 4)
 set(MPI_CMD_mpigpu mpirun -np 4)
 
-set( TEST_CATEGORIES shm )
-if (CHAMELEON_USE_CUDA AND CUDA_FOUND)
-   set( TEST_CATEGORIES ${TEST_CATEGORIES} shmgpu )
+if (NOT CHAMELEON_SIMULATION)
+  set( TEST_CATEGORIES shm )
+  if (CHAMELEON_USE_CUDA AND CUDA_FOUND)
+    set( TEST_CATEGORIES ${TEST_CATEGORIES} shmgpu )
+  endif()
+else()
+  set( TEST_CATEGORIES simushm )
+  if (CHAMELEON_USE_CUDA AND CUDA_FOUND)
+    set( TEST_CATEGORIES ${TEST_CATEGORIES} simugpu )
+  endif()
 endif()
 
 set(TESTLIST
-    gels
-    gemm
-    getrf_incpiv
-    getrf_nopiv
-    geqrf
-    gelqf
-    posv
-    potrf
-    potri
-    )
+  gels
+  gemm
+  getrf_incpiv
+  getrf_nopiv
+  geqrf
+  gelqf
+  posv
+  potrf
+  potri
+  )
 
 set(CHAMELEON_PRECISIONS_ZC "c;z")
 set(TESTLIST_ZC
-    sytrf
-    )
+  sytrf
+  )
 
-foreach(cat ${TEST_CATEGORIES})
-    foreach(prec ${RP_CHAMELEON_PRECISIONS})
-        string(TOUPPER ${prec} PREC)
+if (NOT CHAMELEON_SIMULATION)
 
-        if (CHAMELEON_PREC_${PREC})
-            foreach(test ${TESTLIST})
-                add_test(time_${cat}_${prec}${test} ${MPI_CMD_${cat}} ./time_${prec}${test}_tile ${TEST_CMD_${cat}} --check --warmup)
-            endforeach()
-        endif()
+  foreach(cat ${TEST_CATEGORIES})
+    foreach(prec ${RP_CHAMELEON_PRECISIONS})
+      string(TOUPPER ${prec} PREC)
+      if (CHAMELEON_PREC_${PREC})
+        foreach(test ${TESTLIST})
+          add_test(time_${cat}_${prec}${test} ${MPI_CMD_${cat}} ./time_${prec}${test}_tile ${TEST_CMD_${cat}} --check --warmup)
+        endforeach()
+      endif()
     endforeach()
     foreach(prec ${CHAMELEON_PRECISIONS_ZC})
-        string(TOUPPER ${prec} PREC)
-
-        if (CHAMELEON_PREC_${PREC})
-            foreach(test ${TESTLIST_ZC})
-                add_test(time_${cat}_${prec}${test} ${MPI_CMD_${cat}} ./time_${prec}${test}_tile ${TEST_CMD_${cat}} --check --warmup)
-            endforeach()
-        endif()
+      string(TOUPPER ${prec} PREC)
+      if (CHAMELEON_PREC_${PREC})
+        foreach(test ${TESTLIST_ZC})
+          add_test(time_${cat}_${prec}${test} ${MPI_CMD_${cat}} ./time_${prec}${test}_tile ${TEST_CMD_${cat}} --check --warmup)
+        endforeach()
+      endif()
     endforeach()
-endforeach()
+  endforeach()
 
-if (CHAMELEON_USE_MPI AND MPI_C_FOUND)
+  if (CHAMELEON_USE_MPI AND MPI_C_FOUND)
     set( TEST_CATEGORIES mpi )
     set( TEST_CMD_mpi    --p=2 --n_range=2000:2000:1 --nb==32)
     set( TEST_CMD_mpigpu --p=2 --n_range=2000:2000:1 --nb==32 --gpus=1)
@@ -64,17 +71,36 @@ if (CHAMELEON_USE_MPI AND MPI_C_FOUND)
     #    set( TEST_CATEGORIES ${TEST_CATEGORIES} mpigpu )
     #endif()
     set(TESTLIST_MPI
-        potrf
-        )
+      potrf
+      )
     foreach(cat ${TEST_CATEGORIES})
-        foreach(prec ${RP_CHAMELEON_PRECISIONS})
-            string(TOUPPER ${prec} PREC)
+      foreach(prec ${RP_CHAMELEON_PRECISIONS})
+        string(TOUPPER ${prec} PREC)
 
-            if (CHAMELEON_PREC_${PREC})
-                foreach(test ${TESTLIST_MPI})
-                    add_test(time_${cat}_${prec}${test} ${MPI_CMD_${cat}} ./time_${prec}${test}_tile ${TEST_CMD_${cat}} --check --warmup)
-                endforeach()
-            endif()
-        endforeach()
+        if (CHAMELEON_PREC_${PREC})
+          foreach(test ${TESTLIST_MPI})
+            add_test(time_${cat}_${prec}${test} ${MPI_CMD_${cat}} ./time_${prec}${test}_tile ${TEST_CMD_${cat}} --check --warmup)
+          endforeach()
+        endif()
+      endforeach()
     endforeach()
-endif()
+  endif()
+
+else (NOT CHAMELEON_SIMULATION)
+
+  set(TEST_CMD_simushm --n_range=9600:9600:1    --nb=960 )
+  set(TEST_CMD_simugpu --n_range=9600:9600:1    --nb=960 --gpus=1)
+  set(RP_CHAMELEON_PRECISIONS_SIMU "s;d")
+  foreach(cat ${TEST_CATEGORIES})
+    foreach(prec ${RP_CHAMELEON_PRECISIONS_SIMU})
+      string(TOUPPER ${prec} PREC)
+      if (CHAMELEON_PREC_${PREC})
+        add_test(time_${cat}_${prec}potrf ${MPI_CMD_${cat}} ./time_${prec}potrf_tile ${TEST_CMD_${cat}})
+        set_tests_properties(time_${cat}_${prec}potrf PROPERTIES
+                             ENVIRONMENT "STARPU_HOME=${CMAKE_SOURCE_DIR}/simucore/perfmodels;STARPU_HOSTNAME=sirocco"
+                             )
+      endif()
+    endforeach()
+  endforeach()
+
+endif (NOT CHAMELEON_SIMULATION)