diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8f89d65c47f19efebacccf92390318f33c9af3bf..54275bb054632c724345c421450a8063c599cbf0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -68,7 +68,6 @@ else()
 endif()
 
 include(MorseInit)
-include(GenPkgConfig)
 
 # Ensure that the fortran compiler and c compiler specified are compatible
 # ------------------------------------------------------------------------
@@ -817,10 +816,11 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/CHAMELEONConfig.cmake ${CMAKE_CURRENT_
 ###############################################################################
 # Config files (pkg_config) #
 #############################
+include(ChameleonPkgConfig)
 
 # Create .pc file
 # ---------------
-generate_pkgconfig_file()
+chameleon_generate_pkgconfig_files()
 #------------------------------------------------------------------------------
 
 ###############################################################################
diff --git a/cmake_modules/ChameleonPkgConfig.cmake b/cmake_modules/ChameleonPkgConfig.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..15df826032481a17049eba238abf49f3b0061bb6
--- /dev/null
+++ b/cmake_modules/ChameleonPkgConfig.cmake
@@ -0,0 +1,146 @@
+###
+#
+# @file ChameleonPkgConfig.cmake
+#
+# @copyright 2012-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
+#                      Univ. Bordeaux. All rights reserved.
+#
+###
+#
+#  @project Chameleon
+#  @version 1.2.0
+#  @author Mathieu Faverge
+#  @author Florent Pruvost
+#  @author Abel Calluaud
+#  @date 2022-02-22
+#
+###
+include(GenPkgConfig)
+
+###
+#
+# GENERATE_PKGCONFIG_FILE: generate files chameleon_lapack.pc, chameleon.pc, coreblas.pc and gpucublas.pc or gpuhipblas.pc
+#
+###
+macro(chameleon_generate_pkgconfig_files)
+
+  # The link flags specific to this package and any required libraries
+  # that don't support PkgConfig
+  set(CHAMELEON_LAPACK_PKGCONFIG_LIBS chameleon_lapack)
+  set(CHAMELEON_PKGCONFIG_LIBS        chameleon       )
+  set(COREBLAS_PKGCONFIG_LIBS         coreblas        )
+  set(GPUCUBLAS_PKGCONFIG_LIBS        gpucublas       )
+  set(GPUHIPBLAS_PKGCONFIG_LIBS       gpuhipblas      )
+
+  # The link flags for private libraries required by this package but not
+  # exposed to applications
+  set(CHAMELEON_LAPACK_PKGCONFIG_LIBS_PRIVATE "")
+  set(CHAMELEON_PKGCONFIG_LIBS_PRIVATE        "")
+  set(COREBLAS_PKGCONFIG_LIBS_PRIVATE         "")
+  set(GPUCUBLAS_PKGCONFIG_LIBS_PRIVATE        "")
+  set(GPUHIPBLAS_PKGCONFIG_LIBS_PRIVATE       "")
+
+  # A list of packages required by this package
+  set(CHAMELEON_LAPACK_PKGCONFIG_REQUIRED "chameleon")
+  set(CHAMELEON_PKGCONFIG_REQUIRED        "hqr")
+  set(COREBLAS_PKGCONFIG_REQUIRED         "")
+  set(GPUCUBLAS_PKGCONFIG_REQUIRED        "")
+  set(GPUHIPBLAS_PKGCONFIG_REQUIRED       "")
+
+  # A list of private packages required by this package but not exposed to
+  # applications
+  set(CHAMELEON_LAPACK_PKGCONFIG_REQUIRED_PRIVATE "")
+  set(CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE        "")
+  set(COREBLAS_PKGCONFIG_REQUIRED_PRIVATE         "")
+  set(GPUCUBLAS_PKGCONFIG_REQUIRED_PRIVATE        "")
+  set(GPUHIPBLAS_PKGCONFIG_REQUIRED_PRIVATE       "")
+
+  if(CHAMELEON_SCHED_OPENMP)
+    list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_openmp)
+    list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE "${OpenMP_C_LIBRARIES}")
+  elseif(CHAMELEON_SCHED_PARSEC)
+    list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_parsec)
+    list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE "${PARSEC_LIBRARIES}")
+  elseif(CHAMELEON_SCHED_QUARK)
+    list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_quark)
+    list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE "${QUARK_LIBRARIES_DEP}")
+  elseif(CHAMELEON_SCHED_STARPU)
+    list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_starpu)
+    if ( CHAMELEON_SIMULATION )
+      # need PUBLIC here because simulation mode with starpu requires to replace the
+      # main function by a starpu main one
+      if ( CHAMELEON_USE_MPI )
+        list(APPEND CHAMELEON_PKGCONFIG_REQUIRED starpumpi-${CHAMELEON_STARPU_VERSION})
+      else()
+        list(APPEND CHAMELEON_PKGCONFIG_REQUIRED starpu-${CHAMELEON_STARPU_VERSION})
+      endif()
+    else()
+      if ( CHAMELEON_USE_MPI )
+        list(APPEND CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE starpumpi-${CHAMELEON_STARPU_VERSION})
+      else()
+        list(APPEND CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE starpu-${CHAMELEON_STARPU_VERSION})
+      endif()
+    endif()
+  endif()
+
+  if(NOT CHAMELEON_SIMULATION)
+
+    list(APPEND COREBLAS_PKGCONFIG_LIBS_PRIVATE
+      ${LAPACKE_LIBRARIES}
+      ${CBLAS_LIBRARIES}
+    )
+    list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "coreblas")
+
+    if(CHAMELEON_USE_CUDA)
+      list(APPEND GPUCUBLAS_PKGCONFIG_LIBS_PRIVATE ${CUDA_CUBLAS_LIBRARIES})
+      list(APPEND GPUCUBLAS_PKGCONFIG_REQUIRED "cuda")
+      list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "gpucublas")
+    endif()
+
+    if(CHAMELEON_USE_HIP)
+      list(APPEND GPUHIPBLAS_PKGCONFIG_LIBS_PRIVATE ${HIPBLAS_LIBRARIES})
+      list(APPEND GPUHIPBLAS_PKGCONFIG_LIBS_PRIVATE ${HIP_LIBRARIES})
+      list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "gpuhipblas")
+    endif()
+
+  endif(NOT CHAMELEON_SIMULATION)
+
+  list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE
+    ${M_LIBRARIES}
+  )
+
+  if(CHAMELEON_USE_MPI)
+    list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "mpi")
+  endif()
+
+  generate_pkgconfig_files(
+    ${CMAKE_SOURCE_DIR}/lib/pkgconfig/chameleon.pc.in
+    PROJECTNAME CHAMELEON )
+
+  generate_pkgconfig_files(
+    ${CMAKE_SOURCE_DIR}/lib/pkgconfig/chameleon_lapack.pc.in
+    PROJECTNAME CHAMELEON_LAPACK )
+
+  generate_pkgconfig_files(
+    ${CMAKE_SOURCE_DIR}/lib/pkgconfig/coreblas.pc.in
+    PROJECTNAME COREBLAS )
+
+  if(NOT CHAMELEON_SIMULATION)
+    if(CHAMELEON_USE_CUDA)
+      generate_pkgconfig_files(
+        ${CMAKE_SOURCE_DIR}/lib/pkgconfig/gpucublas.pc.in
+        PROJECTNAME GPUCUBLAS )
+    endif()
+
+    if(CHAMELEON_USE_HIP)
+      generate_pkgconfig_files(
+        ${CMAKE_SOURCE_DIR}/lib/pkgconfig/gpuhipblas.pc.in
+        PROJECTNAME GPUHIPBLAS )
+    endif()
+
+  endif(NOT CHAMELEON_SIMULATION)
+endmacro()
+
+##
+## @end file ChameleonPkgConfig.cmake
+##
diff --git a/cmake_modules/GenPkgConfig.cmake b/cmake_modules/GenPkgConfig.cmake
deleted file mode 100644
index 37bbfb8c1e4fccb932d5e4303bb268f3529c1359..0000000000000000000000000000000000000000
--- a/cmake_modules/GenPkgConfig.cmake
+++ /dev/null
@@ -1,224 +0,0 @@
-###
-#
-# @file GenPkgConfig.cmake
-#
-# @copyright 2009-2014 The University of Tennessee and The University of
-#                      Tennessee Research Foundation. All rights reserved.
-# @copyright 2012-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
-#                      Univ. Bordeaux. All rights reserved.
-#
-###
-#
-#  @project CHAMELEON
-#  CHAMELEON is a software package provided by:
-#     Inria Bordeaux - Sud-Ouest,
-#     Univ. of Tennessee,
-#     King Abdullah Univesity of Science and Technology
-#     Univ. of California Berkeley,
-#     Univ. of Colorado Denver.
-#
-# @version 1.2.0
-#  @author Cedric Castagnede
-#  @author Emmanuel Agullo
-#  @author Mathieu Faverge
-#  @author Florent Pruvost
-#  @date 2022-02-22
-#
-###
-
-###
-#
-# CONVERT_LIBSTYLE_TO_PKGCONFIG: convert a libraries list to follow the pkg-config style
-#                                used in CLEAN_LIB_LIST
-#
-###
-MACRO(CONVERT_LIBSTYLE_TO_PKGCONFIG _liblist)
-    set(${_liblist}_CPY "${${_liblist}}")
-    set(${_liblist} "")
-    foreach(_dep ${${_liblist}_CPY})
-        if (${_dep} MATCHES "^/")
-            get_filename_component(dep_libname ${_dep} NAME)
-            get_filename_component(dep_libdir  ${_dep} DIRECTORY)
-            STRING(REPLACE "lib"    "" dep_libname "${dep_libname}")
-            STRING(REPLACE ".so"    "" dep_libname "${dep_libname}")
-            STRING(REPLACE ".a"     "" dep_libname "${dep_libname}")
-            STRING(REPLACE ".dylib" "" dep_libname "${dep_libname}")
-            STRING(REPLACE ".dll"   "" dep_libname "${dep_libname}")
-            list(APPEND ${_liblist} -L${dep_libdir} -l${dep_libname})
-        elseif(NOT ${_dep} MATCHES "^-")
-            list(APPEND ${_liblist} "-l${_dep}")
-        else()
-            list(APPEND ${_liblist} ${_dep})
-        endif()
-    endforeach()
-ENDMACRO(CONVERT_LIBSTYLE_TO_PKGCONFIG)
-
-###
-#
-# CLEAN_LIB_LIST: clean libraries lists to follow the pkg-config style
-#                 used in GENERATE_PKGCONFIG_FILE
-#
-###
-MACRO(CLEAN_LIB_LIST _package)
-    list(REMOVE_DUPLICATES ${_package}_PKGCONFIG_LIBS)
-    list(REMOVE_DUPLICATES ${_package}_PKGCONFIG_LIBS_PRIVATE)
-    list(REMOVE_DUPLICATES ${_package}_PKGCONFIG_REQUIRED)
-    list(REMOVE_DUPLICATES ${_package}_PKGCONFIG_REQUIRED_PRIVATE)
-    CONVERT_LIBSTYLE_TO_PKGCONFIG(${_package}_PKGCONFIG_LIBS)
-    CONVERT_LIBSTYLE_TO_PKGCONFIG(${_package}_PKGCONFIG_LIBS_PRIVATE)
-    STRING(REPLACE ";" " " ${_package}_PKGCONFIG_LIBS "${${_package}_PKGCONFIG_LIBS}")
-    STRING(REPLACE ";" " " ${_package}_PKGCONFIG_LIBS_PRIVATE "${${_package}_PKGCONFIG_LIBS_PRIVATE}")
-    STRING(REPLACE ";" " " ${_package}_PKGCONFIG_REQUIRED "${${_package}_PKGCONFIG_REQUIRED}")
-    STRING(REPLACE ";" " " ${_package}_PKGCONFIG_REQUIRED_PRIVATE "${${_package}_PKGCONFIG_REQUIRED_PRIVATE}")
-ENDMACRO(CLEAN_LIB_LIST)
-
-###
-#
-# GENERATE_PKGCONFIG_FILE: generate files chameleon_lapack.pc, chameleon.pc, coreblas.pc and gpucublas.pc or gpuhipblas.pc
-#
-###
-MACRO(GENERATE_PKGCONFIG_FILE)
-
-    # The definitions that should be given to users (change the API)
-    set(CHAMELEON_LAPACK_PKGCONFIG_DEFINITIONS "")
-    set(CHAMELEON_PKGCONFIG_DEFINITIONS "")
-    set(COREBLAS_PKGCONFIG_DEFINITIONS "")
-    set(GPUCUBLAS_PKGCONFIG_DEFINITIONS "")
-    set(GPUHIPBLAS_PKGCONFIG_DEFINITIONS "")
-
-    # The link flags specific to this package and any required libraries
-    # that don't support PkgConfig
-    set(CHAMELEON_LAPACK_PKGCONFIG_LIBS "-lchameleon_lapack")
-    set(CHAMELEON_PKGCONFIG_LIBS "-lchameleon")
-    set(COREBLAS_PKGCONFIG_LIBS  "-lcoreblas")
-    set(GPUCUBLAS_PKGCONFIG_LIBS  "-lgpucublas")
-    set(GPUHIPBLAS_PKGCONFIG_LIBS  "-lgpuhipblas")
-
-    # The link flags for private libraries required by this package but not
-    # exposed to applications
-    set(CHAMELEON_LAPACK_PKGCONFIG_LIBS_PRIVATE "")
-    set(CHAMELEON_PKGCONFIG_LIBS_PRIVATE "")
-    set(COREBLAS_PKGCONFIG_LIBS_PRIVATE  "")
-    set(GPUCUBLAS_PKGCONFIG_LIBS_PRIVATE  "")
-    set(GPUHIPBLAS_PKGCONFIG_LIBS_PRIVATE  "")
-
-    # A list of packages required by this package
-    set(CHAMELEON_LAPACK_PKGCONFIG_REQUIRED "chameleon")
-    set(CHAMELEON_PKGCONFIG_REQUIRED "hqr")
-    set(COREBLAS_PKGCONFIG_REQUIRED  "")
-    set(GPUCUBLAS_PKGCONFIG_REQUIRED  "")
-    set(GPUHIPBLAS_PKGCONFIG_REQUIRED  "")
-
-    # A list of private packages required by this package but not exposed to
-    # applications
-    set(CHAMELEON_LAPACK_PKGCONFIG_REQUIRED_PRIVATE "")
-    set(CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE "")
-    set(COREBLAS_PKGCONFIG_REQUIRED_PRIVATE  "")
-    set(GPUCUBLAS_PKGCONFIG_REQUIRED_PRIVATE  "")
-    set(GPUHIPBLAS_PKGCONFIG_REQUIRED_PRIVATE  "")
-
-    if(CHAMELEON_SCHED_OPENMP)
-        list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_openmp)
-        list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE "${OpenMP_C_LIBRARIES}")
-    elseif(CHAMELEON_SCHED_PARSEC)
-        list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_parsec)
-        list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE "${PARSEC_LIBRARIES}")
-        elseif(CHAMELEON_SCHED_QUARK)
-        list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_quark)
-        list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE "${QUARK_LIBRARIES_DEP}")
-    elseif(CHAMELEON_SCHED_STARPU)
-        list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_starpu)
-        if ( CHAMELEON_SIMULATION )
-            # need PUBLIC here because simulation mode with starpu requires to replace the
-            # main function by a starpu main one
-            if ( CHAMELEON_USE_MPI )
-                list(APPEND CHAMELEON_PKGCONFIG_REQUIRED starpumpi-${CHAMELEON_STARPU_VERSION})
-            else()
-                list(APPEND CHAMELEON_PKGCONFIG_REQUIRED starpu-${CHAMELEON_STARPU_VERSION})
-            endif()
-        else()
-            if ( CHAMELEON_USE_MPI )
-                list(APPEND CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE starpumpi-${CHAMELEON_STARPU_VERSION})
-            else()
-                list(APPEND CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE starpu-${CHAMELEON_STARPU_VERSION})
-            endif()
-        endif()
-    endif()
-
-    if(NOT CHAMELEON_SIMULATION)
-
-        list(APPEND COREBLAS_PKGCONFIG_LIBS_PRIVATE
-        ${LAPACKE_LIBRARIES}
-        ${CBLAS_LIBRARIES}
-        )
-        list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "coreblas")
-
-        if(CHAMELEON_USE_CUDA)
-            list(APPEND GPUCUBLAS_PKGCONFIG_LIBS_PRIVATE ${CUDA_CUBLAS_LIBRARIES})
-            list(APPEND GPUCUBLAS_PKGCONFIG_REQUIRED "cuda")
-            list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "gpucublas")
-        endif()
-
-        if(CHAMELEON_USE_HIP)
-            list(APPEND GPUHIPBLAS_PKGCONFIG_LIBS_PRIVATE ${HIPBLAS_LIBRARIES})
-            list(APPEND GPUHIPBLAS_PKGCONFIG_LIBS_PRIVATE ${HIP_LIBRARIES})
-            list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "gpuhipblas")
-        endif()
-
-    endif(NOT CHAMELEON_SIMULATION)
-
-    list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE
-    ${M_LIBRARIES}
-    )
-
-    if(CHAMELEON_USE_MPI)
-        list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "mpi")
-    endif()
-
-    # Define required package
-    # -----------------------
-    CLEAN_LIB_LIST(CHAMELEON)
-    CLEAN_LIB_LIST(COREBLAS)
-    if(CHAMELEON_USE_CUDA)
-        CLEAN_LIB_LIST(GPUCUBLAS)
-    endif()
-    if(CHAMELEON_USE_HIP)
-        CLEAN_LIB_LIST(GPUHIPBLAS)
-    endif()
-
-    # Create .pc file
-    # ---------------
-    SET(_output_chameleon_lapack_file "${CMAKE_BINARY_DIR}/chameleon_lapack.pc")
-    SET(_output_chameleon_file "${CMAKE_BINARY_DIR}/chameleon.pc")
-    SET(_output_coreblas_file "${CMAKE_BINARY_DIR}/coreblas.pc")
-    if(CHAMELEON_USE_CUDA)
-        SET(_output_gpucublas_file "${CMAKE_BINARY_DIR}/gpucublas.pc")
-    endif()
-    if(CHAMELEON_USE_HIP)
-        SET(_output_gpuhipblas_file "${CMAKE_BINARY_DIR}/gpuhipblas.pc")
-    endif()
-
-    # TODO: add url of CHAMELEON releases in .pc file
-    CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/lib/pkgconfig/chameleon_lapack.pc.in" "${_output_chameleon_lapack_file}" @ONLY)
-    CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/lib/pkgconfig/chameleon.pc.in" "${_output_chameleon_file}" @ONLY)
-    CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/lib/pkgconfig/coreblas.pc.in" "${_output_coreblas_file}" @ONLY)
-    if(CHAMELEON_USE_CUDA)
-        CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/lib/pkgconfig/gpucublas.pc.in" "${_output_gpucublas_file}" @ONLY)
-    endif()
-    if(CHAMELEON_USE_HIP)
-        CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/lib/pkgconfig/gpuhipblas.pc.in" "${_output_gpuhipblas_file}" @ONLY)
-    endif()
-
-    # installation
-    # ------------
-    INSTALL(FILES ${_output_chameleon_lapack_file} DESTINATION lib/pkgconfig)
-    INSTALL(FILES ${_output_chameleon_file} DESTINATION lib/pkgconfig)
-    INSTALL(FILES ${_output_coreblas_file} DESTINATION lib/pkgconfig)
-    INSTALL(FILES ${_output_gpucublas_file} DESTINATION lib/pkgconfig)
-    INSTALL(FILES ${_output_gpuhipblas_file} DESTINATION lib/pkgconfig)
-
-ENDMACRO(GENERATE_PKGCONFIG_FILE)
-
-##
-## @end file GenPkgConfig.cmake
-##
diff --git a/compute/pzgered.c b/compute/pzgered.c
index 1051ee91f45370bba6cefbdb21d3b17a6862c99f..c43e9a0e4704b958bbe6380032f8c32ee3b060fe 100644
--- a/compute/pzgered.c
+++ b/compute/pzgered.c
@@ -162,7 +162,7 @@ void chameleon_pzgered( cham_uplo_t uplo, double prec, CHAM_desc_t *A,
     RUNTIME_option_t options;
     CHAM_desc_t Wcol;
     CHAM_desc_t Welt;
-    double gnorm, lnorm, threshold, eps;
+    double gnorm, threshold, eps;
 
     int workmt, worknt;
     int m, n;
@@ -233,16 +233,14 @@ void chameleon_pzgered( cham_uplo_t uplo, double prec, CHAM_desc_t *A,
         int nmax   = ( uplo == ChamLower ) ? chameleon_min(m+1, A->nt) : A->nt;
 
         for(n = nmin; n < nmax; n++) {
-            CHAM_tile_t *tile = A->get_blktile( A, m, n );
-
             int tempnn = ( n == (A->nt-1) ) ? A->n - n * A->nb : A->nb;
 
             /*
-                * u_{high} = 1e-16 (later should be application accuracy)
-                * u_{low} = 1e-8
-                * ||A_{i,j}||_F  < u_{high} * || A ||_F / (nt * u_{low})
-                * ||A_{i,j}||_F  < threshold / u_{low}
-                */
+             * u_{high} = 1e-16 (later should be application accuracy)
+             * u_{low} = 1e-8
+             * ||A_{i,j}||_F  < u_{high} * || A ||_F / (nt * u_{low})
+             * ||A_{i,j}||_F  < threshold / u_{low}
+             */
             INSERT_TASK_zgered( &options, threshold,
                                 tempmm, tempnn, A( m, n ), W( &Wcol, m, n ) );
         }
diff --git a/compute/pzhered.c b/compute/pzhered.c
index 97e171b3f11dd6a40ccb44e7d2f85ee41324b62f..cc32f4243c81dd2e63656cf9972850e53dddbd83 100644
--- a/compute/pzhered.c
+++ b/compute/pzhered.c
@@ -187,7 +187,7 @@ void chameleon_pzhered( cham_trans_t trans, cham_uplo_t uplo, double prec, CHAM_
     RUNTIME_option_t options;
     CHAM_desc_t Wcol;
     CHAM_desc_t Welt;
-    double gnorm, lnorm, threshold, eps;
+    double gnorm, threshold, eps;
 
     int workmt, worknt;
     int m, n;
@@ -263,17 +263,14 @@ void chameleon_pzhered( cham_trans_t trans, cham_uplo_t uplo, double prec, CHAM_
 
         for (n = nmin; n < nmax; n++)
         {
-            CHAM_tile_t *tile = A->get_blktile(A, m, n);
-
             int tempnn = (n == (A->nt - 1)) ? A->n - n * A->nb : A->nb;
 
             /*
-                * u_{high} = 1e-16 (later should be application accuracy)
-                * u_{low} = 1e-8
-                * ||A_{i,j}||_F  < u_{high} * || A ||_F / (nt * u_{low})
-                * ||A_{i,j}||_F  < threshold / u_{low}
-                */
-
+             * u_{high} = 1e-16 (later should be application accuracy)
+             * u_{low} = 1e-8
+             * ||A_{i,j}||_F  < u_{high} * || A ||_F / (nt * u_{low})
+             * ||A_{i,j}||_F  < threshold / u_{low}
+             */
             INSERT_TASK_zgered( &options, threshold,
                                 tempmm, tempnn, A( m, n ), W( &Wcol, m, n ) );
         }
diff --git a/runtime/starpu/codelets/codelet_zgetrf_batched.c b/runtime/starpu/codelets/codelet_zgetrf_batched.c
index d2a4778c51fd278dbc018eb878670d6809827799..1d4cb37da9bc6099305ddcf9eb4516fb17feaf52 100644
--- a/runtime/starpu/codelets/codelet_zgetrf_batched.c
+++ b/runtime/starpu/codelets/codelet_zgetrf_batched.c
@@ -16,6 +16,7 @@
  *
  * @author Matthieu Kuhn
  * @author Alycia Lisito
+ * @author Philippe Swartvagher
  * @date 2024-01-11
  * @precisions normal z -> c d s
  *
@@ -72,9 +73,7 @@ INSERT_TASK_zgetrf_panel_offdiag_batched( const RUNTIME_option_t *options,
                                           void **clargs_ptr,
                                           CHAM_ipiv_t *ipiv )
 {
-    CHAM_tile_t *tileA      = A->get_blktile( A, Am, An );
     int          task_num   = 0;
-    int          exec       = 0;
     int          batch_size = ((struct chameleon_pzgetrf_s *)ws)->batch_size;
     void (*callback)(void*) = NULL;
     struct cl_getrf_batched_args_t *clargs = *clargs_ptr;
@@ -82,7 +81,6 @@ INSERT_TASK_zgetrf_panel_offdiag_batched( const RUNTIME_option_t *options,
     /* Handle cache */
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_RW(A, Am, An);
-    exec = __chameleon_need_exec;
     CHAMELEON_END_ACCESS_DECLARATION;
 
     if ( clargs == NULL ) {
@@ -221,11 +219,9 @@ INSERT_TASK_zgetrf_panel_blocked_batched( const RUNTIME_option_t *options,
                                           void **clargs_ptr,
                                           CHAM_ipiv_t *ipiv )
 {
-    CHAM_tile_t *tileA      = A->get_blktile( A, Am, An );
     int          batch_size = ((struct chameleon_pzgetrf_s *)ws)->batch_size;
     int          ib         = ((struct chameleon_pzgetrf_s *)ws)->ib;
     int          task_num   = 0;
-    int          exec       = 0;
     void (*callback)(void*) = NULL;
     int accessU, access_npiv, access_ipiv, access_ppiv;
     struct cl_getrf_batched_args_t *clargs = *clargs_ptr;
@@ -233,7 +229,6 @@ INSERT_TASK_zgetrf_panel_blocked_batched( const RUNTIME_option_t *options,
     /* Handle cache */
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
     CHAMELEON_ACCESS_RW(A, Am, An);
-    exec = __chameleon_need_exec;
     CHAMELEON_END_ACCESS_DECLARATION;
 
     if ( clargs == NULL ) {
@@ -256,7 +251,7 @@ INSERT_TASK_zgetrf_panel_blocked_batched( const RUNTIME_option_t *options,
     clargs->tasks_nbr ++;
     /* Refine name */
     clargs->cl_name = chameleon_codelet_name( clargs->cl_name, 1,
-                                                A->get_blktile( A, Am, An ) );
+                                              A->get_blktile( A, Am, An ) );
 
     if ( clargs->tasks_nbr == batch_size ) {
         access_npiv = ( clargs->h == ipiv->n ) ? STARPU_R : STARPU_REDUX;
diff --git a/runtime/starpu/codelets/codelet_zlacpy.c b/runtime/starpu/codelets/codelet_zlacpy.c
index 53647940eac27d0b6ac51d7f2f64042100841b5e..2a3d9781e676d85507d0135848b25211d04e263a 100644
--- a/runtime/starpu/codelets/codelet_zlacpy.c
+++ b/runtime/starpu/codelets/codelet_zlacpy.c
@@ -44,6 +44,7 @@ static void cl_zlacpy_starpu_func(void *descr[], void *cl_arg)
     static const struct starpu_data_interface_ops *interface_ops = &starpu_interface_cham_tile_ops;
     const struct starpu_data_copy_methods         *copy_methods  = interface_ops->copy_methods;
     struct cl_zlacpy_args_s                       *clargs        = (struct cl_zlacpy_args_s *)cl_arg;
+    (void)clargs;
 
     int      workerid    = starpu_worker_get_id_check();
     unsigned memory_node = starpu_worker_get_memory_node( workerid );
@@ -52,6 +53,7 @@ static void cl_zlacpy_starpu_func(void *descr[], void *cl_arg)
     void *dst_interface = descr[1];
 
     int rc;
+    (void)rc;
 
     assert( clargs->displA == 0 );
     assert( clargs->displB == 0 );
diff --git a/testing/testing_zgemm_batch.c b/testing/testing_zgemm_batch.c
index c3a61d0349eb78b1a55d78e44578bbe09e6338ef..fbc65a546b59c5e821c074046ca85e262b56fb06 100644
--- a/testing/testing_zgemm_batch.c
+++ b/testing/testing_zgemm_batch.c
@@ -40,7 +40,6 @@ testing_zgemm_batch_desc( run_arg_list_t *args, int check )
     int                   async  = parameters_getvalue_int( "async" );
     int                   nb     = run_arg_get_int( args, "nb", 10 );
     int                   ib     = run_arg_get_int( args, "ib", 10 );
-    int                   P      = parameters_getvalue_int( "P" );
     cham_trans_t          transA = run_arg_get_trans( args, "transA", ChamNoTrans );
     cham_trans_t          transB = run_arg_get_trans( args, "transB", ChamNoTrans );
     int                   N      = run_arg_get_int( args, "N", 320 );
diff --git a/testing/testing_zherk_batch.c b/testing/testing_zherk_batch.c
index 4f149ea7032754f1774dd6a08a5c4a3f87962c28..076812827fc1c0543f978ff25a5cddee591a4f62 100644
--- a/testing/testing_zherk_batch.c
+++ b/testing/testing_zherk_batch.c
@@ -40,7 +40,6 @@ testing_zherk_batch_desc( run_arg_list_t *args, int check )
     int           async = parameters_getvalue_int( "async" );
     int           nb    = run_arg_get_int( args, "nb", 10 );
     int           ib    = run_arg_get_int( args, "ib", 10 );
-    int           P     = parameters_getvalue_int( "P" );
     cham_trans_t  trans = run_arg_get_trans( args, "trans", ChamNoTrans );
     cham_uplo_t   uplo  = run_arg_get_uplo( args, "uplo", ChamUpper );
     int           N     = run_arg_get_int( args, "N", 320 );
diff --git a/testing/testing_zpotrf_batch.c b/testing/testing_zpotrf_batch.c
index 27d17b301669c7069fbad63525e8a34ba890011c..29ef3b2f855a5794c4d80bdbd55a83096c20d89f 100644
--- a/testing/testing_zpotrf_batch.c
+++ b/testing/testing_zpotrf_batch.c
@@ -40,11 +40,9 @@ testing_zpotrf_batch_desc( run_arg_list_t *args, int check )
     int           async = parameters_getvalue_int( "async" );
     int           nb    = run_arg_get_int( args, "nb", 10 );
     int           ib    = run_arg_get_int( args, "ib", 10 );
-    int           P     = parameters_getvalue_int( "P" );
     cham_uplo_t   uplo  = run_arg_get_uplo( args, "uplo", ChamUpper );
     int           N     = run_arg_get_int( args, "N", 320 );
     int           seedA = run_arg_get_int( args, "seedA", testing_ialea() );
-    int           Q     = parameters_compute_q( P );
 
     /* Descriptors */
     CHAM_desc_t *descA;
diff --git a/testing/testing_ztrsm_batch.c b/testing/testing_ztrsm_batch.c
index 318aa33bd7636af7a518f28ebf48e3222058d22c..2c496065376c551469034f389ac491493b4868b4 100644
--- a/testing/testing_ztrsm_batch.c
+++ b/testing/testing_ztrsm_batch.c
@@ -40,7 +40,6 @@ testing_ztrsm_batch_desc( run_arg_list_t *args, int check )
     int                   async = parameters_getvalue_int( "async" );
     int                   nb    = run_arg_get_int( args, "nb", 10 );
     int                   ib    = run_arg_get_int( args, "ib", 10 );
-    int                   P     = parameters_getvalue_int( "P" );
     cham_trans_t          trans = run_arg_get_trans( args, "trans", ChamNoTrans );
     cham_side_t           side  = run_arg_get_side( args, "side", ChamLeft );
     cham_uplo_t           uplo  = run_arg_get_uplo( args, "uplo", ChamUpper );
@@ -52,8 +51,8 @@ testing_ztrsm_batch_desc( run_arg_list_t *args, int check )
     int                   seedB = run_arg_get_int( args, "seedB", testing_ialea() );
 
     /* Descriptors */
-    int          Am, An, Bm, Bn;
-    CHAM_desc_t *descA, *descB, *descC;
+    int          Am, An;
+    CHAM_desc_t *descA, *descB;
 
     alpha = run_arg_get_complex64( args, "alpha", alpha );