diff --git a/CMakeLists.txt b/CMakeLists.txt
index 87a112eb8a9e80bcb91d68a21d8690481138825d..0f1e8980a0a3e55f651a7dcd1dbe46ab8686d9f0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -308,7 +308,7 @@ endif()
 mark_as_advanced(CHAMELEON_COPY_DIAG)
 
 # If ON generates vendor_ztesting in testings
-option(CHAMELEON_TESTINGS_VENDOR "Generate testings of the blas / lapack vendor (e.g. intel MKL MT)" OFF)
+cmake_dependent_option(CHAMELEON_TESTINGS_VENDOR "Generate testings of the blas / lapack vendor (e.g. intel MKL MT)" OFF "NOT CHAMELEON_SIMULATION" OFF)
 
 # If ON enable the use of multithreaded kernels such as Intel MKL MT
 option(CHAMELEON_KERNELS_MT "Use multithreaded kernels (e.g. intel MKL MT)" OFF)
@@ -688,12 +688,12 @@ endif()
 
 set(CHAMELEON_SOURCES_TARGETS "" CACHE INTERNAL "List of targets of sources")
 
-if (NOT CHAMELEON_SIMULATION)
-  ###############################################################################
-  # coreblas library (kernels for CPUs, interface to cblas/lapacke) #
-  ###################################################################
-  add_subdirectory(coreblas)
+###############################################################################
+# coreblas library (kernels for CPUs, interface to cblas/lapacke) #
+###################################################################
+add_subdirectory(coreblas)
 
+if (NOT CHAMELEON_SIMULATION)
   ###############################################################################
   # gpucublas library (kernels for GPUs, interface to cublas or hibblas) #
   ########################################################################
diff --git a/cmake_modules/gitlab-ci-initial-cache.cmake b/cmake_modules/gitlab-ci-initial-cache.cmake
index 47dd8110e5a675dce5007eb33b557d4804343115..4bc29ea3b084cc555552b97844f2a95a7df5857f 100644
--- a/cmake_modules/gitlab-ci-initial-cache.cmake
+++ b/cmake_modules/gitlab-ci-initial-cache.cmake
@@ -7,6 +7,7 @@ set(CMAKE_C_FLAGS "-Werror")
 option(MORSE_ENABLE_WARNING  "Enable warning messages"        ON)
 option(MORSE_ENABLE_COVERAGE "Enable flags for coverage test" ON)
 
+set(CHAMELEON_TESTINGS_VENDOR ON CACHE BOOL "")
 set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "")
 
 set(BLA_VENDOR "Generic" CACHE STRING "Set to one of the BLAS/LAPACK Vendors to search for BLAS only from the specified vendor.")
diff --git a/cmake_modules/morse_cmake b/cmake_modules/morse_cmake
index 7c5567ca9575d13f5d9d87a19ffebb35dfdea79b..92987016f5342650fa8b88553708c6dad44052bd 160000
--- a/cmake_modules/morse_cmake
+++ b/cmake_modules/morse_cmake
@@ -1 +1 @@
-Subproject commit 7c5567ca9575d13f5d9d87a19ffebb35dfdea79b
+Subproject commit 92987016f5342650fa8b88553708c6dad44052bd
diff --git a/compute/CMakeLists.txt b/compute/CMakeLists.txt
index d60af1f6018b8c13545da8e74bd5d8477dd1d69e..e072cc91ec417665593b366000468ad933374cbd 100644
--- a/compute/CMakeLists.txt
+++ b/compute/CMakeLists.txt
@@ -341,6 +341,9 @@ elseif(CHAMELEON_SCHED_OPENMP)
 endif()
 if (CHAMELEON_SIMULATION)
   target_include_directories(chameleon PUBLIC $<BUILD_INTERFACE:${CHAMELEON_SOURCE_DIR}/coreblas/include>)
+  add_dependencies(chameleon
+    coreblas_include
+  )
 else()
   target_link_libraries(chameleon PUBLIC coreblas)
 endif()
diff --git a/compute/pzgetrf.c b/compute/pzgetrf.c
index ccd05fbcc551caa52d851a33601cbcda944af5a8..91724fd6a5ca4212598a5219b7e441bf200b21f5 100644
--- a/compute/pzgetrf.c
+++ b/compute/pzgetrf.c
@@ -201,7 +201,6 @@ chameleon_pzgetrf_panel_facto_blocked( struct chameleon_pzgetrf_s *ws,
                     ipiv );
             }
 
-
             if ( (b < (nbblock-1)) && (h == hmax-1) ) {
                 INSERT_TASK_zgetrf_blocked_trsm(
                     options,
@@ -281,7 +280,7 @@ chameleon_pzgetrf_panel_permute( struct chameleon_pzgetrf_s *ws,
                             A(k, n), U(k, n) );
 
         /*
-         * perm array is made of size tempkm for the first row espacially.
+         * perm array is made of size tempkm for the first row especially.
          * Otherwise, the final copy back to the tile may copy only a partial tile
          */
         INSERT_TASK_zlaswp_get( options, k*A->mb, tempkm,
diff --git a/coreblas/CMakeLists.txt b/coreblas/CMakeLists.txt
index 77f81f64b3b4692ae66471c42abe2600493bba0b..86ca1422fdbee0330ee06513c424839f539f8c94 100644
--- a/coreblas/CMakeLists.txt
+++ b/coreblas/CMakeLists.txt
@@ -30,8 +30,10 @@ if (CHAMELEON_USE_HMAT AND NOT CHAMELEON_HMAT_EXTERNAL)
   add_subdirectory(hmat-oss)
 endif()
 add_subdirectory(include)
-add_subdirectory(compute)
-add_subdirectory(eztrace_module)
+if (NOT CHAMELEON_SIMULATION)
+  add_subdirectory(compute)
+  add_subdirectory(eztrace_module)
+endif()
 
 ###
 ### END CMakeLists.txt
diff --git a/hqr b/hqr
index 7c1e401caa46db55f1fc99f7076d1cb9874fc0e4..6a87f9084f21536ff0f44a074ee44b56c55e1daa 160000
--- a/hqr
+++ b/hqr
@@ -1 +1 @@
-Subproject commit 7c1e401caa46db55f1fc99f7076d1cb9874fc0e4
+Subproject commit 6a87f9084f21536ff0f44a074ee44b56c55e1daa
diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt
index 97dbf8ad1ba4f55e703cb46f910f40f025ce70af..1519e6e23cb525baa15a1e92e85b1e8da7d7e77e 100644
--- a/testing/CMakeLists.txt
+++ b/testing/CMakeLists.txt
@@ -127,6 +127,7 @@ set(ZSRC
   testing_zcheck_polar_decomp.c
   testing_zprint.c
 )
+set(TESTING_SRCS)
 
 # Create one testing per precision with all files
 # -----------------------------------------------
@@ -175,6 +176,7 @@ foreach(_precision ${CHAMELEON_PRECISION} )
 
   target_link_libraries(${__target_name} PRIVATE chameleon_lapack)
   target_link_libraries(${__target_name} PRIVATE chameleon)
+  target_link_libraries(${__target_name} PRIVATE hqr)
   if(NOT CHAMELEON_SIMULATION)
     target_link_libraries(${__target_name} PRIVATE
       MORSE::LAPACKE
@@ -185,16 +187,42 @@ foreach(_precision ${CHAMELEON_PRECISION} )
   install(TARGETS ${__target_name}
     DESTINATION bin/ )
 
+  list(APPEND TESTING_SRCS ${${_precision}SRC_GENERATED})
 endforeach()
 
-# VENDOR api tests
-set(ZSRC_VENDOR
-  vendor_ztesting.c
-)
+# Force generation of sources
+# ---------------------------
+if ( TESTING_SRCS )
+  add_custom_target(testing_sources ALL SOURCES ${TESTING_SRCS})
+  set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};testing_sources" CACHE INTERNAL "List of targets of sources")
+endif()
 
+#
+# Build vendor testings
+# ---------------------
 if ( CHAMELEON_TESTINGS_VENDOR )
+
+  # VENDOR api tests
+  set(ZSRC_VENDOR
+    vendor_ztesting.c
+  )
+  set(VENDOR_SRCS)
+
+  # Get include properties
+  set( VENDORS_HDR_DEPS chameleon_lapack )
+  foreach( _dep ${VENDORS_HDR_DEPS} )
+    get_target_property( _${_dep}_INCLUDE_DIRECTORIES ${_dep} INCLUDE_DIRECTORIES )
+    if ( _${_dep}_INCLUDE_DIRECTORIES )
+      list( APPEND VENDOR_TESTINGS_INCLUDE_DIRECTORIES ${_${_dep}_INCLUDE_DIRECTORIES} )
+    endif()
+  endforeach()
+
   foreach(_precision ${CHAMELEON_PRECISION} )
 
+    if ( ${_precision} STREQUAL ds OR ${_precision} STREQUAL zc )
+      continue()
+    endif()
+
     precisions_rules_py(${_precision}SRC_VENDOR_GENERATED "${ZSRC_VENDOR}"
       PRECISIONS "${_precision}" )
 
@@ -243,30 +271,25 @@ if ( CHAMELEON_TESTINGS_VENDOR )
         MORSE::CBLAS)
     endif()
 
-    target_link_libraries(${__target_name} PRIVATE MORSE::M)
     target_link_libraries(${__target_name} PRIVATE chameleon)
+    target_link_libraries(${__target_name} PRIVATE MORSE::M)
+    if( VENDOR_TESTINGS_INCLUDE_DIRECTORIES )
+      target_include_directories(${__target_name} PRIVATE ${VENDOR_TESTINGS_INCLUDE_DIRECTORIES} )
+    endif()
 
     install(TARGETS ${__target_name}
       DESTINATION bin/ )
 
+    # Force generation of sources
+    # ---------------------------
+    list(APPEND VENDOR_SRCS ${${_precision}SRC_VENDOR_GENERATED})
   endforeach()
-endif()
 
-# Force generation of sources
-# ---------------------------
-set(TESTING_SRCS)
-foreach(_precision ${CHAMELEON_PRECISION})
-  list(APPEND TESTING_SRCS ${${_precision}SRC_GENERATED})
-endforeach()
-add_custom_target(testing_sources ALL SOURCES ${TESTING_SRCS})
-set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};testing_sources" CACHE INTERNAL "List of targets of sources")
-
-set(VENDOR_SRCS)
-foreach(_precision ${CHAMELEON_PRECISION})
-  list(APPEND VENDOR_SRCS ${${_precision}SRC_VENDOR_GENERATED})
-endforeach()
-add_custom_target(vendor_sources ALL SOURCES ${VENDOR_SRCS})
-set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};vendor_sources" CACHE INTERNAL "List of targets of sources")
+  if ( VENDOR_SRCS )
+    add_custom_target(vendor_sources ALL SOURCES ${VENDOR_SRCS})
+    set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};vendor_sources" CACHE INTERNAL "List of targets of sources")
+  endif()
+endif()
 
 #-------- Tests ---------
 include(CTestLists.cmake)
diff --git a/testing/testing_zcesca.c b/testing/testing_zcesca.c
index 612cd7ec657be77bcdb0f6b96ed7b41719390656..ffd874c5bed83c8f07b970b394b6a7c413076ce2 100644
--- a/testing/testing_zcesca.c
+++ b/testing/testing_zcesca.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zgeadd.c b/testing/testing_zgeadd.c
index b2d82433cdf58e29a7f260d4078d0c0529c7a529..696bde0c1273f09e2f5b791456e8e4715f035768 100644
--- a/testing/testing_zgeadd.c
+++ b/testing/testing_zgeadd.c
@@ -19,6 +19,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zgelqf.c b/testing/testing_zgelqf.c
index 381c2da9d89c2b248e58b13d4574cf024a0d6a30..d9a27009d4cd1164867f3f9e511fd4b136f5daa4 100644
--- a/testing/testing_zgelqf.c
+++ b/testing/testing_zgelqf.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zgelqf_hqr.c b/testing/testing_zgelqf_hqr.c
index ee4337bfcb4aafcffa8a0042e7a9b102dac16231..05f3fa77cb37d5f2452afea426f3a6e693c06df8 100644
--- a/testing/testing_zgelqf_hqr.c
+++ b/testing/testing_zgelqf_hqr.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zgelqs.c b/testing/testing_zgelqs.c
index d53fbbba60319174ded5ae03c9b00185af1560a6..b074ed40649d1bf1b298d3994c41d66bf15b0ec8 100644
--- a/testing/testing_zgelqs.c
+++ b/testing/testing_zgelqs.c
@@ -18,10 +18,10 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#include "control/common.h"
 
 static cham_fixdbl_t
 flops_zgelqs()
@@ -91,8 +91,8 @@ testing_zgelqs_desc( run_arg_list_t *args, int check )
     if ( check ) {
         CHAM_desc_t *descA0 = CHAMELEON_Desc_Copy( descA, CHAMELEON_MAT_ALLOC_TILE );
         CHAM_desc_t *descB  = CHAMELEON_Desc_Copy( descX, CHAMELEON_MAT_ALLOC_TILE );
-        CHAM_desc_t *subX   = chameleon_desc_submatrix( descX, 0, 0, N, NRHS );
-        CHAM_desc_t *subB   = chameleon_desc_submatrix( descB, 0, 0, M, NRHS );
+        CHAM_desc_t *subX   = CHAMELEON_Desc_SubMatrix( descX, 0, 0, N, NRHS );
+        CHAM_desc_t *subB   = CHAMELEON_Desc_SubMatrix( descB, 0, 0, M, NRHS );
 
         CHAMELEON_zplrnt_Tile( descA0, seedA );
         CHAMELEON_zplrnt_Tile( descB, seedB );
diff --git a/testing/testing_zgels.c b/testing/testing_zgels.c
index b9077566aeb4a19307d73cd7d226473fe29841cf..2bbb9feb0bdcd540b4e0ab2c53877802d5ee8adb 100644
--- a/testing/testing_zgels.c
+++ b/testing/testing_zgels.c
@@ -18,8 +18,8 @@
  * @precisions normal z -> c d s
  *
  */
-#include "../control/common.h"
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
@@ -115,12 +115,12 @@ testing_zgels_desc( run_arg_list_t *args, int check )
         CHAMELEON_zplrnt_Tile( descB, seedB );
 
         if ( trans == ChamNoTrans ) {
-            subX = chameleon_desc_submatrix( descX, 0, 0, N, NRHS );
-            subB = chameleon_desc_submatrix( descB, 0, 0, M, NRHS );
+            subX = CHAMELEON_Desc_SubMatrix( descX, 0, 0, N, NRHS );
+            subB = CHAMELEON_Desc_SubMatrix( descB, 0, 0, M, NRHS );
         }
         else {
-            subX = chameleon_desc_submatrix( descX, 0, 0, M, NRHS );
-            subB = chameleon_desc_submatrix( descB, 0, 0, N, NRHS );
+            subX = CHAMELEON_Desc_SubMatrix( descX, 0, 0, M, NRHS );
+            subB = CHAMELEON_Desc_SubMatrix( descB, 0, 0, N, NRHS );
         }
 
         /* Check the factorization and the residual */
diff --git a/testing/testing_zgels_hqr.c b/testing/testing_zgels_hqr.c
index 807740b5b949d3cd2c54d7b6e7d33f6654f6582a..3b95edfdf8a9cc6f87908e64214cae574df56911 100644
--- a/testing/testing_zgels_hqr.c
+++ b/testing/testing_zgels_hqr.c
@@ -18,8 +18,8 @@
  * @precisions normal z -> c d s
  *
  */
-#include "../control/common.h"
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
@@ -121,12 +121,12 @@ testing_zgels_hqr_desc( run_arg_list_t *args, int check )
         CHAMELEON_zplrnt_Tile( descB, seedB );
 
         if ( trans == ChamNoTrans ) {
-            subX = chameleon_desc_submatrix( descX, 0, 0, N, NRHS );
-            subB = chameleon_desc_submatrix( descB, 0, 0, M, NRHS );
+            subX = CHAMELEON_Desc_SubMatrix( descX, 0, 0, N, NRHS );
+            subB = CHAMELEON_Desc_SubMatrix( descB, 0, 0, M, NRHS );
         }
         else {
-            subX = chameleon_desc_submatrix( descX, 0, 0, M, NRHS );
-            subB = chameleon_desc_submatrix( descB, 0, 0, N, NRHS );
+            subX = CHAMELEON_Desc_SubMatrix( descX, 0, 0, M, NRHS );
+            subB = CHAMELEON_Desc_SubMatrix( descB, 0, 0, N, NRHS );
         }
 
         /* Check the factorization and the residual */
diff --git a/testing/testing_zgemm.c b/testing/testing_zgemm.c
index 8d4a0b20208fc247bdd4f114d34220253d86881e..bdba83de22fcbc012cd9ff9cc2eed82ad7c41428 100644
--- a/testing/testing_zgemm.c
+++ b/testing/testing_zgemm.c
@@ -19,11 +19,11 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
-#include <coreblas/cblas.h>
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
 #endif
 
diff --git a/testing/testing_zgenm2.c b/testing/testing_zgenm2.c
index cc46d1fc0b2d3198150ac966fd17f34ca400e176..5b52d3d8ac21d46f727116697ce0f33687564080 100644
--- a/testing/testing_zgenm2.c
+++ b/testing/testing_zgenm2.c
@@ -19,14 +19,15 @@
  *
  */
 #include <chameleon.h>
-#if !defined(CHAMELEON_SIMULATION)
-#include <coreblas/lapacke.h>
-#include <coreblas/cblas.h>
-#include <coreblas.h>
-#endif
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
+#if !defined(CHAMELEON_SIMULATION)
+#include <coreblas.h>
+#include <coreblas/cblas.h>
+#include <coreblas/lapacke.h>
+#endif
 
 static cham_fixdbl_t
 flops_zgenm2( int M, int N )
diff --git a/testing/testing_zgepdf_qdwh.c b/testing/testing_zgepdf_qdwh.c
index 46b852fd0860a04e9c79ecb92252a64682ce7f96..d6a620d6ae1ea1cd770cf7664b43f6b79ff556e7 100644
--- a/testing/testing_zgepdf_qdwh.c
+++ b/testing/testing_zgepdf_qdwh.c
@@ -19,14 +19,15 @@
  *
  */
 #include <chameleon.h>
-#if !defined(CHAMELEON_SIMULATION)
-#include <coreblas/lapacke.h>
-#include <coreblas/cblas.h>
-#include <coreblas.h>
-#endif
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
+#if !defined(CHAMELEON_SIMULATION)
+#include <coreblas.h>
+#include <coreblas/cblas.h>
+#include <coreblas/lapacke.h>
+#endif
 
 int
 testing_zgepdf_qdwh_desc( run_arg_list_t *args, int check )
diff --git a/testing/testing_zgepdf_qr.c b/testing/testing_zgepdf_qr.c
index ac7a9294c489f79dbeb765196cacea218cfbf619..3fe4e923332f00c6aed356068ce5e86bd3397439 100644
--- a/testing/testing_zgepdf_qr.c
+++ b/testing/testing_zgepdf_qr.c
@@ -19,16 +19,17 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include <chameleon/getenv.h>
+#include "testings.h"
+#include "testing_zcheck.h"
+#include <chameleon/flops.h>
 #if !defined(CHAMELEON_SIMULATION)
-#include <coreblas/lapacke.h>
-#include <coreblas/cblas.h>
 #include <coreblas.h>
+#include <coreblas/cblas.h>
+#include <coreblas/lapacke.h>
 #endif
 #include <libhqr.h>
-#include "testings.h"
-#include "testing_zcheck.h"
-#include <chameleon/flops.h>
 
 static cham_fixdbl_t
 flops_zgepdf_qr( int M, int N )
diff --git a/testing/testing_zgeqrf.c b/testing/testing_zgeqrf.c
index f1027c8e8f16cd9eb2e56e005c3e81117afc2cda..6e42d1154de22a90d35ebd8dc4ecfcf70c80b9ce 100644
--- a/testing/testing_zgeqrf.c
+++ b/testing/testing_zgeqrf.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zgeqrf_hqr.c b/testing/testing_zgeqrf_hqr.c
index 2a2cc91507a6194e8afcf65311a1c8018aee00a6..92670211b36745b71a21e60205e1a165410b6fa5 100644
--- a/testing/testing_zgeqrf_hqr.c
+++ b/testing/testing_zgeqrf_hqr.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zgeqrs.c b/testing/testing_zgeqrs.c
index db4a424c2459148bf04e039939e3c0f28938ac1f..4ee28eeba8bf0fc178cdd40c030477fd4ad68666 100644
--- a/testing/testing_zgeqrs.c
+++ b/testing/testing_zgeqrs.c
@@ -18,10 +18,10 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#include "control/common.h"
 
 int
 testing_zgeqrs_desc( run_arg_list_t *args, int check )
@@ -98,8 +98,8 @@ testing_zgeqrs_desc( run_arg_list_t *args, int check )
     if ( check ) {
         CHAM_desc_t *descA0 = CHAMELEON_Desc_Copy( descA, CHAMELEON_MAT_ALLOC_TILE );
         CHAM_desc_t *descB  = CHAMELEON_Desc_Copy( descX, CHAMELEON_MAT_ALLOC_TILE );
-        CHAM_desc_t *subX   = chameleon_desc_submatrix( descX, 0, 0, N, NRHS );
-        CHAM_desc_t *subB   = chameleon_desc_submatrix( descB, 0, 0, M, NRHS );
+        CHAM_desc_t *subX   = CHAMELEON_Desc_SubMatrix( descX, 0, 0, N, NRHS );
+        CHAM_desc_t *subB   = CHAMELEON_Desc_SubMatrix( descB, 0, 0, M, NRHS );
 
         CHAMELEON_zplrnt_Tile( descA0, seedA );
         CHAMELEON_zplrnt_Tile( descB, seedB );
diff --git a/testing/testing_zgesv_nopiv.c b/testing/testing_zgesv_nopiv.c
index 6c296a634d9ce572f684117f41b6bd3e2a319690..2a3c144383bbe4f5010936b931ab5d13ba4286d2 100644
--- a/testing/testing_zgesv_nopiv.c
+++ b/testing/testing_zgesv_nopiv.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zgesvd.c b/testing/testing_zgesvd.c
index f5367b2946518d12a9d3c96c3dfadd7b8cb06d91..aa4ce170c30f7b0e8bead4c83e9746aeac712b24 100644
--- a/testing/testing_zgesvd.c
+++ b/testing/testing_zgesvd.c
@@ -16,6 +16,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zgetrf.c b/testing/testing_zgetrf.c
index 89948378c86da23e40fdec46c91fbbeaea72f5b9..4b6cab659398633899b8b1d20b1b09ee814b9d71 100644
--- a/testing/testing_zgetrf.c
+++ b/testing/testing_zgetrf.c
@@ -21,11 +21,15 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
-#include <chameleon/getenv.h>
 #include <chameleon/flops.h>
+#include <chameleon/getenv.h>
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
+#include <coreblas.h>
 #include <coreblas/lapacke.h>
+#endif
 
 #if !defined(CHAMELEON_TESTINGS_VENDOR)
 int
diff --git a/testing/testing_zgetrf_nopiv.c b/testing/testing_zgetrf_nopiv.c
index 47004a5a2618648bba6ca730701d3166d68dab89..c37822782fc8e9c50274efc2a9ac0669f11be1d9 100644
--- a/testing/testing_zgetrf_nopiv.c
+++ b/testing/testing_zgetrf_nopiv.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zgetrs_nopiv.c b/testing/testing_zgetrs_nopiv.c
index 8083d3a147d345c3667ce42243bd7e7113f9c3bb..76f4eb190ff7dc958cfd32e3881ae78a5cbc7655 100644
--- a/testing/testing_zgetrs_nopiv.c
+++ b/testing/testing_zgetrs_nopiv.c
@@ -18,10 +18,11 @@
  *
  */
 #include <chameleon.h>
-#include <assert.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
+#include <assert.h>
 
 int
 testing_zgetrs_nopiv_desc( run_arg_list_t *args, int check )
diff --git a/testing/testing_zgram.c b/testing/testing_zgram.c
index af02a107f8875860b1c019545163e0327f35d96b..7577d086f7015aeff733f4b4f1211601ee45b8d0 100644
--- a/testing/testing_zgram.c
+++ b/testing/testing_zgram.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zhemm.c b/testing/testing_zhemm.c
index ddf32d41323d0dacfaeec1dab0d0573f6f005146..68943ea7664af83085b4165213acf609c8a4e097 100644
--- a/testing/testing_zhemm.c
+++ b/testing/testing_zhemm.c
@@ -19,12 +19,13 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
-#include <coreblas/cblas.h>
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
+#include <coreblas/cblas.h>
 #endif
 
 #if !defined(CHAMELEON_TESTINGS_VENDOR)
diff --git a/testing/testing_zher2k.c b/testing/testing_zher2k.c
index e4c3126326c400b43a46fdd3a1b6bfa10d6ab9ca..47d4efc251e20f95903ef1ea2472640d6b93fcc8 100644
--- a/testing/testing_zher2k.c
+++ b/testing/testing_zher2k.c
@@ -19,12 +19,13 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
-#include <coreblas/cblas.h>
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
+#include <coreblas/cblas.h>
 #endif
 
 #if !defined(CHAMELEON_TESTINGS_VENDOR)
diff --git a/testing/testing_zherk.c b/testing/testing_zherk.c
index 4f08355fab849ecfec17592a34f0cf6b57981cbf..7ef7fcfdb537b47ad360426af37634e58afd556b 100644
--- a/testing/testing_zherk.c
+++ b/testing/testing_zherk.c
@@ -19,12 +19,13 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
-#include <coreblas/cblas.h>
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
+#include <coreblas/cblas.h>
 #endif
 
 #if !defined(CHAMELEON_TESTINGS_VENDOR)
diff --git a/testing/testing_zlacpy.c b/testing/testing_zlacpy.c
index 3cb03f17f87cadbdccbae4ac16a41887552d98b8..6d7161f85ec59406457f971e3adb4a6887259378 100644
--- a/testing/testing_zlacpy.c
+++ b/testing/testing_zlacpy.c
@@ -20,6 +20,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zlange.c b/testing/testing_zlange.c
index 1faaa947b27ca4d037cc489988ded8e0a90f2d41..c2af1043ff046b9aaf08d84d6c966cc5a5fc4f91 100644
--- a/testing/testing_zlange.c
+++ b/testing/testing_zlange.c
@@ -20,15 +20,14 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if !defined(CHAMELEON_SIMULATION)
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
 #include <coreblas/lapacke.h>
 #endif
-#endif
 
 static cham_fixdbl_t
 flops_zlange( cham_normtype_t ntype, int _M, int _N )
diff --git a/testing/testing_zlanhe.c b/testing/testing_zlanhe.c
index a7e88a83142555f42fc405e8b0a3fcb56e82576f..1f2e700ea3982f95287f822b0f4751267c57224b 100644
--- a/testing/testing_zlanhe.c
+++ b/testing/testing_zlanhe.c
@@ -20,15 +20,14 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if !defined(CHAMELEON_SIMULATION)
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
 #include <coreblas/lapacke.h>
 #endif
-#endif
 
 static cham_fixdbl_t
 flops_zlanhe( cham_normtype_t ntype, int _N )
diff --git a/testing/testing_zlansy.c b/testing/testing_zlansy.c
index e93dca17019ee17f12ccdcab8a6a51a7bd478e89..3457c2ade082767e168f02fb7ba7626f97ddb5dc 100644
--- a/testing/testing_zlansy.c
+++ b/testing/testing_zlansy.c
@@ -20,15 +20,14 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if !defined(CHAMELEON_SIMULATION)
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
 #include <coreblas/lapacke.h>
 #endif
-#endif
 
 static cham_fixdbl_t
 flops_zlansy( cham_normtype_t ntype, int _N )
diff --git a/testing/testing_zlantr.c b/testing/testing_zlantr.c
index 154017ac233dba6c1e3a23c7a075ad74ecf1c821..2aeab234f6cc975f814b9aadba38565934a5f0a3 100644
--- a/testing/testing_zlantr.c
+++ b/testing/testing_zlantr.c
@@ -20,15 +20,14 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if !defined(CHAMELEON_SIMULATION)
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
 #include <coreblas/lapacke.h>
 #endif
-#endif
 
 static cham_fixdbl_t
 flops_zlantr( cham_normtype_t ntype, cham_uplo_t uplo, int _M, int _N )
diff --git a/testing/testing_zlascal.c b/testing/testing_zlascal.c
index cc6c64b1023de19e8fe5cd7ce868d884f454520b..8522f374343d8306588f5a1735426f6ce607481d 100644
--- a/testing/testing_zlascal.c
+++ b/testing/testing_zlascal.c
@@ -19,6 +19,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zlauum.c b/testing/testing_zlauum.c
index 956a2722cee2ee1fe8b5e202fd9e9b22be140d02..d2dbcb0729e4eef6ae878a6f4cac152b3871f8c8 100644
--- a/testing/testing_zlauum.c
+++ b/testing/testing_zlauum.c
@@ -20,6 +20,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zplrnk.c b/testing/testing_zplrnk.c
index f4267194e9005616c4e00069c4911b3c288ca8bf..ae90e179692013d2a737d2c847e01816fead7091 100644
--- a/testing/testing_zplrnk.c
+++ b/testing/testing_zplrnk.c
@@ -19,6 +19,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zpoinv.c b/testing/testing_zpoinv.c
index 5aa4f959f0803e52965d4461915253429ca884e6..ef8c54f487d95e79b208f86b09abcc55e35afa59 100644
--- a/testing/testing_zpoinv.c
+++ b/testing/testing_zpoinv.c
@@ -19,14 +19,15 @@
  *
  */
 #include <chameleon.h>
-#include <assert.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
-#include <coreblas/lapacke.h>
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
+#include <coreblas/lapacke.h>
 #endif
+#include <assert.h>
 
 static cham_fixdbl_t
 flops_zpoinv( int N )
diff --git a/testing/testing_zposv.c b/testing/testing_zposv.c
index 7bebd922a3bddcf0600bcff6df796e780d6262de..ee26532090eb8a90a0609c728ae9038f2b5b8974 100644
--- a/testing/testing_zposv.c
+++ b/testing/testing_zposv.c
@@ -19,15 +19,14 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if !defined(CHAMELEON_SIMULATION)
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
 #include <coreblas/lapacke.h>
 #endif
-#endif
 
 static cham_fixdbl_t
 flops_zposv( int N, int NRHS )
diff --git a/testing/testing_zpotrf.c b/testing/testing_zpotrf.c
index ae0f9950b71d3f6c7f62b851321252d6353e32d0..7a7179c7c801e18dea16420464f421318bf141a9 100644
--- a/testing/testing_zpotrf.c
+++ b/testing/testing_zpotrf.c
@@ -19,15 +19,14 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if !defined(CHAMELEON_SIMULATION)
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
 #include <coreblas/lapacke.h>
 #endif
-#endif
 
 #if !defined(CHAMELEON_TESTINGS_VENDOR)
 int
diff --git a/testing/testing_zpotri.c b/testing/testing_zpotri.c
index e2d0c8c9933bc35a2d10af5309ef5a78ede20633..5413ce848b8e2192a8755213f8caa06200217877 100644
--- a/testing/testing_zpotri.c
+++ b/testing/testing_zpotri.c
@@ -19,16 +19,15 @@
  *
  */
 #include <chameleon.h>
-#include <assert.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if !defined(CHAMELEON_SIMULATION)
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
 #include <coreblas/lapacke.h>
 #endif
-#endif
+#include <assert.h>
 
 #if !defined(CHAMELEON_TESTINGS_VENDOR)
 int
diff --git a/testing/testing_zpotrs.c b/testing/testing_zpotrs.c
index 647e96010a85b6309d6fb4391b2031717010f785..a2617709c9bfe47ca2f582e401abd2b98e39c76e 100644
--- a/testing/testing_zpotrs.c
+++ b/testing/testing_zpotrs.c
@@ -19,16 +19,15 @@
  *
  */
 #include <chameleon.h>
-#include <assert.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if !defined(CHAMELEON_SIMULATION)
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
 #include <coreblas/lapacke.h>
 #endif
-#endif
+#include <assert.h>
 
 #if !defined(CHAMELEON_TESTINGS_VENDOR)
 int
diff --git a/testing/testing_zprint.c b/testing/testing_zprint.c
index 70b52b5468904880ecc42a7a52e010dc8d3395ee..158223027113054b1c3b2b891a00be6fb5cbfd81 100644
--- a/testing/testing_zprint.c
+++ b/testing/testing_zprint.c
@@ -19,6 +19,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zsymm.c b/testing/testing_zsymm.c
index 80d7fe43434a2830278d2f6da52554720763c20c..18191f8d5017b1243b1841de90daf687c30adc07 100644
--- a/testing/testing_zsymm.c
+++ b/testing/testing_zsymm.c
@@ -19,12 +19,13 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
-#include <coreblas/cblas.h>
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
+#include <coreblas/cblas.h>
 #endif
 
 #if !defined(CHAMELEON_TESTINGS_VENDOR)
diff --git a/testing/testing_zsyr2k.c b/testing/testing_zsyr2k.c
index 831ea225398cb5b1af4ea39b8b37b420740d7197..d99fbd2d388fd71d214c2444c35ba18dd8c66d0b 100644
--- a/testing/testing_zsyr2k.c
+++ b/testing/testing_zsyr2k.c
@@ -19,12 +19,13 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
-#include <coreblas/cblas.h>
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
+#include <coreblas/cblas.h>
 #endif
 
 #if !defined(CHAMELEON_TESTINGS_VENDOR)
diff --git a/testing/testing_zsyrk.c b/testing/testing_zsyrk.c
index f862cb6d7fce5137f1482edf9157cc52c2ff2e58..588f164f4577ccb2520b2b9c58d030b383ec982f 100644
--- a/testing/testing_zsyrk.c
+++ b/testing/testing_zsyrk.c
@@ -19,12 +19,13 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
-#include <coreblas/cblas.h>
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
+#include <coreblas/cblas.h>
 #endif
 
 #if !defined(CHAMELEON_TESTINGS_VENDOR)
diff --git a/testing/testing_zsysv.c b/testing/testing_zsysv.c
index 86c2f3db672e1aa865143ca1d6de3272ddb588e6..d576a18da44cae540ac4a649c17276fc0af84453 100644
--- a/testing/testing_zsysv.c
+++ b/testing/testing_zsysv.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zsytrf.c b/testing/testing_zsytrf.c
index afb6f7c5c7dc45b3c6240b82b78996378933884c..0fac21defcbf6bb5ae0d09f1c9a1ae027e24ad29 100644
--- a/testing/testing_zsytrf.c
+++ b/testing/testing_zsytrf.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zsytrs.c b/testing/testing_zsytrs.c
index ecc5f00c4b9aa246a2c44bb3d9756f33cdb14b7b..046309e47f6181c2a7680413b05418587a706939 100644
--- a/testing/testing_zsytrs.c
+++ b/testing/testing_zsytrs.c
@@ -18,10 +18,11 @@
  *
  */
 #include <chameleon.h>
-#include <assert.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
+#include <assert.h>
 
 int
 testing_zsytrs_desc( run_arg_list_t *args, int check )
diff --git a/testing/testing_ztradd.c b/testing/testing_ztradd.c
index 7448ea8f45223424414b49a36ba20437e037dc79..22c61c0c513e2a06b6dbc03104c93acabd66c8d6 100644
--- a/testing/testing_ztradd.c
+++ b/testing/testing_ztradd.c
@@ -19,6 +19,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_ztrmm.c b/testing/testing_ztrmm.c
index f58bdb57de9b193aaaec79d646a4201b9897f1b8..9bed166b602058ba8c56993febfd6824ffce40ea 100644
--- a/testing/testing_ztrmm.c
+++ b/testing/testing_ztrmm.c
@@ -19,12 +19,13 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
-#include <coreblas/cblas.h>
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
+#include <coreblas/cblas.h>
 #endif
 
 #if !defined(CHAMELEON_TESTINGS_VENDOR)
diff --git a/testing/testing_ztrsm.c b/testing/testing_ztrsm.c
index 70d86b701f7a58d069b177fbd54710ecad7544d9..47d927e2475afc43efe2529167b78ed52955c997 100644
--- a/testing/testing_ztrsm.c
+++ b/testing/testing_ztrsm.c
@@ -19,12 +19,13 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if defined(CHAMELEON_TESTINGS_VENDOR)
-#include <coreblas/cblas.h>
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
+#include <coreblas/cblas.h>
 #endif
 
 #if !defined(CHAMELEON_TESTINGS_VENDOR)
diff --git a/testing/testing_ztrtri.c b/testing/testing_ztrtri.c
index 5dfd64bd267e941307367f8d47b44bfa0d94aabe..14cdbd3fdfc02660d20ffd3aa1c95fa347d2b7db 100644
--- a/testing/testing_ztrtri.c
+++ b/testing/testing_ztrtri.c
@@ -19,10 +19,11 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
-#if !defined(CHAMELEON_SIMULATION)
+#if defined(CHAMELEON_TESTINGS_VENDOR) || !defined(CHAMELEON_SIMULATION)
 #include <coreblas.h>
 #endif
 
diff --git a/testing/testing_zunglq.c b/testing/testing_zunglq.c
index 58f1e91ec66611c15aa1cf31121eebd8e4d30879..366860774758f6e68ebcc1a8fade021ef866deac 100644
--- a/testing/testing_zunglq.c
+++ b/testing/testing_zunglq.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zunglq_hqr.c b/testing/testing_zunglq_hqr.c
index cf3f989c91083eec860f0dea4954691cc80ced56..6c092e1223a1daf5034dcf3de0d2b82081b0a25e 100644
--- a/testing/testing_zunglq_hqr.c
+++ b/testing/testing_zunglq_hqr.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zungqr.c b/testing/testing_zungqr.c
index 8057bdc87e69fa96d72cde70369ec6f415b0d3f5..923c3b82eccf0033abe4d16525c1606887183a77 100644
--- a/testing/testing_zungqr.c
+++ b/testing/testing_zungqr.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zungqr_hqr.c b/testing/testing_zungqr_hqr.c
index fca691857aa7558198f3a343f6a194fa217d60cf..aa754dad992c262bff537566664b9e5769aa50cb 100644
--- a/testing/testing_zungqr_hqr.c
+++ b/testing/testing_zungqr_hqr.c
@@ -18,6 +18,7 @@
  *
  */
 #include <chameleon.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
diff --git a/testing/testing_zunmlq.c b/testing/testing_zunmlq.c
index ede0a7c88b22eb9023a999fe1166003bb590e8a9..bf75498aa3c063c5ba06186343f05657e507680c 100644
--- a/testing/testing_zunmlq.c
+++ b/testing/testing_zunmlq.c
@@ -18,10 +18,11 @@
  *
  */
 #include <chameleon.h>
-#include <assert.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
+#include <assert.h>
 
 int
 testing_zunmlq_desc( run_arg_list_t *args, int check )
diff --git a/testing/testing_zunmlq_hqr.c b/testing/testing_zunmlq_hqr.c
index 5e3676bb085ab93f3fe7100cf6545cb666a0950e..e21515c37337fa15e3074f6e54054fa6f274df45 100644
--- a/testing/testing_zunmlq_hqr.c
+++ b/testing/testing_zunmlq_hqr.c
@@ -18,10 +18,11 @@
  *
  */
 #include <chameleon.h>
-#include <assert.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
+#include <assert.h>
 
 int
 testing_zunmlq_hqr_desc( run_arg_list_t *args, int check )
diff --git a/testing/testing_zunmqr.c b/testing/testing_zunmqr.c
index 4c42ac186f283b23e64e71640e436094899d5fe2..980a9e29a80025366feb623aa4a8afdb9fd60261 100644
--- a/testing/testing_zunmqr.c
+++ b/testing/testing_zunmqr.c
@@ -18,10 +18,11 @@
  *
  */
 #include <chameleon.h>
-#include <assert.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
+#include <assert.h>
 
 int
 testing_zunmqr_desc( run_arg_list_t *args, int check )
diff --git a/testing/testing_zunmqr_hqr.c b/testing/testing_zunmqr_hqr.c
index aa9009b953c58cdc248e055b4e81f8dad05ce9b1..b4c750a500baccb8664c9cb092be52b0ce218408 100644
--- a/testing/testing_zunmqr_hqr.c
+++ b/testing/testing_zunmqr_hqr.c
@@ -18,10 +18,11 @@
  *
  */
 #include <chameleon.h>
-#include <assert.h>
+#include <chameleon_lapack.h>
 #include "testings.h"
 #include "testing_zcheck.h"
 #include <chameleon/flops.h>
+#include <assert.h>
 
 int
 testing_zunmqr_hqr_desc( run_arg_list_t *args, int check )
diff --git a/testing/testings.h b/testing/testings.h
index 3709f7be2616b209e7f22f210444f73ec32a22e3..2a3d369c30faf1da81a58277287fcb669d0c2eb5 100644
--- a/testing/testings.h
+++ b/testing/testings.h
@@ -20,7 +20,6 @@
 #ifndef _testings_h_
 #define _testings_h_
 
-#include <chameleon_lapack.h>
 #include <chameleon.h>
 #include <stdlib.h>
 #include <stdio.h>