From 3c0127190d2ebff8a8c55a7fcdded7c7f6077576 Mon Sep 17 00:00:00 2001 From: Florent Pruvost <florent.pruvost@inria.fr> Date: Wed, 19 Feb 2025 16:47:56 +0100 Subject: [PATCH 01/15] gitlab-ci-initial-cache.cmake: CMAKE_C_FLAGS must be set as a cache variable to be used, and thus activate -Werror --- cmake_modules/gitlab-ci-initial-cache.cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cmake_modules/gitlab-ci-initial-cache.cmake b/cmake_modules/gitlab-ci-initial-cache.cmake index 4bc29ea3b..0a436305c 100644 --- a/cmake_modules/gitlab-ci-initial-cache.cmake +++ b/cmake_modules/gitlab-ci-initial-cache.cmake @@ -2,7 +2,11 @@ set(BUILD_SHARED_LIBS "ON" CACHE BOOL "") set(CMAKE_INSTALL_PREFIX "$ENV{PWD}/install-$ENV{VERSION}" CACHE PATH "") set(CMAKE_VERBOSE_MAKEFILE "ON" CACHE BOOL "") -set(CMAKE_C_FLAGS "-Werror") +if(CMAKE_C_FLAGS) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror" CACHE STRING "") +else() + set(CMAKE_C_FLAGS "-Werror" CACHE STRING "") +endif() option(MORSE_ENABLE_WARNING "Enable warning messages" ON) option(MORSE_ENABLE_COVERAGE "Enable flags for coverage test" ON) -- GitLab From 6a4757c547fd3a8fc0bdc72004c023befeba8b81 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Wed, 19 Feb 2025 23:42:18 +0100 Subject: [PATCH 02/15] hmatoss: Fix envrionment variable name --- .gitlab/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/build.yml b/.gitlab/build.yml index 2d449df9d..1cc7ef411 100644 --- a/.gitlab/build.yml +++ b/.gitlab/build.yml @@ -23,7 +23,7 @@ build_hmat: SYSTEM: linux VERSION: hmat LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" - BUILD_OPTIONS: "-DCHAMELEON_USE_CUDA=OFF -DCHAMELEON_USE_MPI=ON -DCHAMELEON_USE_HMAT=ON" + BUILD_OPTIONS: "-DCHAMELEON_USE_CUDA=OFF -DCHAMELEON_USE_MPI=ON -DCHAMELEON_USE_HMATOSS=ON" build_openmp: extends: .build_script_linux -- GitLab From 72d8c07bddc6cdecedcc20e65db38b58860fd556 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Wed, 19 Feb 2025 23:55:39 +0100 Subject: [PATCH 03/15] debug: cast print pointers --- runtime/starpu/control/runtime_descriptor.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/starpu/control/runtime_descriptor.c b/runtime/starpu/control/runtime_descriptor.c index bf4fbd917..ea26e39c5 100644 --- a/runtime/starpu/control/runtime_descriptor.c +++ b/runtime/starpu/control/runtime_descriptor.c @@ -409,7 +409,7 @@ void *RUNTIME_data_getaddr( const CHAM_desc_t *A, int m, int n ) #if defined(CHAMELEON_KERNELS_TRACE) fprintf( stderr, "%s - %p registered with tag %ld\n", - tile->name, *ptrtile, A->mpitag + A->lmt * nn + mm ); + tile->name, (void*)(*ptrtile), A->mpitag + A->lmt * nn + mm ); #endif assert( *ptrtile ); return (void*)(*ptrtile); @@ -486,7 +486,7 @@ void *RUNTIME_data_getaddr_withconversion( const RUNTIME_option_t *options, #if defined(CHAMELEON_KERNELS_TRACE) fprintf( stderr, "%s - %p registered with tag %ld\n", - tile->name, *ptrtile, A->mpitag + shift ); + tile->name, (void*)(*ptrtile), A->mpitag + shift ); #endif assert( *ptrtile ); -- GitLab From 2ff910d9c138311831aa2033bcf58d99cb042d24 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Thu, 20 Feb 2025 00:14:57 +0100 Subject: [PATCH 04/15] cesca: Refactor cesca to avoid unitialized values --- coreblas/compute/core_zcesca.c | 59 ++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/coreblas/compute/core_zcesca.c b/coreblas/compute/core_zcesca.c index 447067ba7..c60044352 100644 --- a/coreblas/compute/core_zcesca.c +++ b/coreblas/compute/core_zcesca.c @@ -133,11 +133,6 @@ int CORE_zcesca( int center, int scale, CHAMELEON_Complex64_t *A, int LDA ) { int i, j; - CHAMELEON_Complex64_t gi, gj, g, rc, sqrc; - double di, dj; - - gj = 0.; - dj = 0.; /* Check input arguments */ if ( (center != 0) && (center != 1) ) { @@ -199,6 +194,11 @@ int CORE_zcesca( int center, int scale, if ( !( (center == 1) && (scale == 1) && (axis == ChamEltwise) ) ) { /* PCA case i.e. centered-scaled or bi-centering */ + CHAMELEON_Complex64_t gi = (CHAMELEON_Complex64_t)0.; + CHAMELEON_Complex64_t gj = (CHAMELEON_Complex64_t)0.; + CHAMELEON_Complex64_t g = (CHAMELEON_Complex64_t)0.; + double di = 0.; + double dj = 0.; if ( (center == 1) && (axis == ChamEltwise) ) { /* overall mean of values */ @@ -215,35 +215,40 @@ int CORE_zcesca( int center, int scale, dj = Dj[j*LDDJ]; } for(i = 0; i < Mt; i++) { - if ( (center == 1) && ( (axis == ChamRowwise) || (axis == ChamEltwise) ) ) { - /* mean of values of the row */ - gi = Gi[i] / ((double)N); - /* compute centered matrix factor */ - A[j*LDA+i] -= gi; - } - if ( (center == 1) && ( (axis == ChamColumnwise) || (axis == ChamEltwise) ) ) { - /* compute centered matrix factor */ - A[j*LDA+i] -= gj; - } - if ( (center == 1) && (axis == ChamEltwise) ) { - /* compute centered matrix factor */ - A[j*LDA+i] += g; - } - if ( (scale == 1) && (axis == ChamColumnwise) ) { - /* compute scaled matrix factor */ - A[j*LDA+i] /= dj; + if ( center == 1 ) { + if ( (axis == ChamRowwise) || (axis == ChamEltwise) ) { + /* mean of values of the row */ + gi = Gi[i] / ((double)N); + /* compute centered matrix factor */ + A[j*LDA+i] -= gi; + } + if ( (axis == ChamColumnwise) || (axis == ChamEltwise) ) { + /* compute centered matrix factor */ + A[j*LDA+i] -= gj; + } + if ( axis == ChamEltwise ) { + /* compute centered matrix factor */ + A[j*LDA+i] += g; + } } - if ( (scale == 1) && (axis == ChamRowwise) ) { - /* norm 2 of the row */ - di = Di[i]; - /* compute scaled matrix factor */ - A[j*LDA+i] /= di; + if ( scale == 1 ) { + if ( axis == ChamColumnwise ) { + /* compute scaled matrix factor */ + A[j*LDA+i] /= dj; + } + if ( axis == ChamRowwise ) { + /* norm 2 of the row */ + di = Di[i]; + /* compute scaled matrix factor */ + A[j*LDA+i] /= di; + } } } } } else { /* COA case */ + CHAMELEON_Complex64_t rc, sqrc; /* update the matrix */ for(j = 0; j < Nt; j++) { -- GitLab From c95c8457fedbe4bc449025740284463b24119401 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Mon, 17 Feb 2025 15:58:29 +0100 Subject: [PATCH 05/15] compute/pzgetrf: Fix unused variables --- compute/pzgetrf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compute/pzgetrf.c b/compute/pzgetrf.c index 863f1d2be..7e45749e3 100644 --- a/compute/pzgetrf.c +++ b/compute/pzgetrf.c @@ -662,7 +662,7 @@ chameleon_pzgetrf_panel_update( struct chameleon_pzgetrf_s *ws, const CHAMELEON_Complex64_t mzone = (CHAMELEON_Complex64_t)-1.0; CHAM_context_t *chamctxt = chameleon_context_self(); - int m, tempkm, tempmm, tempnn, rankAmn, p; + int m, tempkm, tempmm, tempnn, rankAmn; int lookahead = chamctxt->lookahead; int myq = A->myrank % chameleon_desc_datadist_get_iparam(A, 1); @@ -721,7 +721,7 @@ void chameleon_pzgetrf( struct chameleon_pzgetrf_s *ws, CHAM_context_t *chamctxt; RUNTIME_option_t options; - int k, m, n, tempkm, tempnn; + int k, m, n; int min_mnt = chameleon_min( A->mt, A->nt ); chamctxt = chameleon_context_self(); -- GitLab From 962f26dd7a5f3d79d34d7d9560d9baf494594c36 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Thu, 20 Feb 2025 00:40:00 +0100 Subject: [PATCH 06/15] compute/pzgetrf: silent warning when compiling without mpi --- compute/pzgetrf.c | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/compute/pzgetrf.c b/compute/pzgetrf.c index 7e45749e3..9a6ba171a 100644 --- a/compute/pzgetrf.c +++ b/compute/pzgetrf.c @@ -564,8 +564,8 @@ chameleon_pzgetrf_panel_update_ws( struct chameleon_pzgetrf_s *ws, int k, RUNTIME_option_t *options ) { - CHAM_context_t *chamctxt = chameleon_context_self(); - int m, n, tempmm, tempkn, tempkm, p, q, involved, np; + CHAM_context_t *chamctxt = chameleon_context_self(); + int m, tempmm, tempkn, tempkm, q; int lookahead = chamctxt->lookahead; int P = chameleon_desc_datadist_get_iparam(A, 0); int Q = chameleon_desc_datadist_get_iparam(A, 1); @@ -612,36 +612,41 @@ chameleon_pzgetrf_panel_update_ws( struct chameleon_pzgetrf_s *ws, } tempkm = A->get_blkdim( A, k, DIM_m, A->m ); - np = chameleon_desc_datadist_get_iparam(A, 1) * chameleon_desc_datadist_get_iparam(A, 0); #if defined(CHAMELEON_USE_MPI) - /* Send Akk for replicated trsm */ - if ( A->myrank == chameleon_getrankof_2d( A, k, k ) ) { - for ( p = 0; p < np; p++ ) { + { + int n, p, involved; + int np = chameleon_desc_datadist_get_iparam(A, 1) + * chameleon_desc_datadist_get_iparam(A, 0); + + /* Send Akk for replicated trsm */ + if ( A->myrank == chameleon_getrankof_2d( A, k, k ) ) { + for ( p = 0; p < np; p++ ) { + involved = 0; + for ( n = k+1; n < A->nt; n++ ) { + if ( chameleon_p_involved_in_panelk_2dbc( A, n, p ) ) { + involved = 1; + break; + } + } + if ( involved ) { + INSERT_TASK_zlacpy( options, ChamUpperLower, tempkm, tempkn, + A(k, k), Wu(p, k) ); + } + } + } + else { involved = 0; for ( n = k+1; n < A->nt; n++ ) { - if ( chameleon_p_involved_in_panelk_2dbc( A, n, p ) ) { + if ( chameleon_involved_in_panelk_2dbc( A, n ) ) { involved = 1; break; } } if ( involved ) { INSERT_TASK_zlacpy( options, ChamUpperLower, tempkm, tempkn, - A(k, k), Wu(p, k) ); - } - } - } - else { - involved = 0; - for ( n = k+1; n < A->nt; n++ ) { - if ( chameleon_involved_in_panelk_2dbc( A, n ) ) { - involved = 1; - break; + A(k, k), Wu(A->myrank, k) ); } } - if ( involved ) { - INSERT_TASK_zlacpy( options, ChamUpperLower, tempkm, tempkn, - A(k, k), Wu(A->myrank, k) ); - } } #else INSERT_TASK_zlacpy( options, ChamUpperLower, tempkm, tempkn, -- GitLab From b21a979cc02a11f4e5f850f5aa8b39c9e48d0050 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Thu, 20 Feb 2025 11:41:56 +0100 Subject: [PATCH 07/15] compute/gepdf: protect declaration of descriptors D1 and D2 --- compute/zgepdf_qr.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/compute/zgepdf_qr.c b/compute/zgepdf_qr.c index 6ea672f01..787813328 100644 --- a/compute/zgepdf_qr.c +++ b/compute/zgepdf_qr.c @@ -85,8 +85,11 @@ int CHAMELEON_zgepdf_qr_Tile( int doqr, int optid, CHAM_context_t *chamctxt; RUNTIME_sequence_t *sequence = NULL; RUNTIME_request_t request = RUNTIME_REQUEST_INITIALIZER; - CHAM_desc_t D1, *D1ptr = NULL; - CHAM_desc_t D2, *D2ptr = NULL; +#if defined(CHAMELEON_COPY_DIAG) + CHAM_desc_t D1, D2; +#endif + CHAM_desc_t *D1ptr = NULL; + CHAM_desc_t *D2ptr = NULL; int status; chamctxt = chameleon_context_self(); -- GitLab From 30bcd5516e47d8f9ab27456720404b7e3a65f53a Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Thu, 20 Feb 2025 09:49:47 +0100 Subject: [PATCH 08/15] testings: Protect declaration of api field for vendor testings --- testing/testing_zgemm.c | 3 ++- testing/testing_zgetrf.c | 2 ++ testing/testing_zhemm.c | 2 ++ testing/testing_zher2k.c | 2 ++ testing/testing_zherk.c | 2 ++ testing/testing_zlange.c | 2 ++ testing/testing_zlanhe.c | 2 ++ testing/testing_zlansy.c | 2 ++ testing/testing_zlantr.c | 2 ++ testing/testing_zlauum.c | 2 ++ testing/testing_zposv.c | 2 ++ testing/testing_zpotrf.c | 2 ++ testing/testing_zpotri.c | 2 ++ testing/testing_zpotrs.c | 2 ++ testing/testing_zsymm.c | 2 ++ testing/testing_zsyr2k.c | 2 ++ testing/testing_zsyrk.c | 2 ++ testing/testing_ztrmm.c | 2 ++ testing/testing_ztrsm.c | 2 ++ 19 files changed, 38 insertions(+), 1 deletion(-) diff --git a/testing/testing_zgemm.c b/testing/testing_zgemm.c index 666dde7aa..9d71f589c 100644 --- a/testing/testing_zgemm.c +++ b/testing/testing_zgemm.c @@ -140,7 +140,9 @@ testing_zgemm_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_trans_t transA = run_arg_get_trans( args, "transA", ChamNoTrans ); cham_trans_t transB = run_arg_get_trans( args, "transB", ChamNoTrans ); @@ -235,7 +237,6 @@ testing_zgemm_std( run_arg_list_t *args, int check ) free( B ); free( C ); - (void)api; (void)check; return hres; } diff --git a/testing/testing_zgetrf.c b/testing/testing_zgetrf.c index fca667603..1db2d0030 100644 --- a/testing/testing_zgetrf.c +++ b/testing/testing_zgetrf.c @@ -166,7 +166,9 @@ testing_zgetrf_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); int N = run_arg_get_int( args, "N", 1000 ); int M = run_arg_get_int( args, "M", N ); diff --git a/testing/testing_zhemm.c b/testing/testing_zhemm.c index 642cf04b9..35a69847e 100644 --- a/testing/testing_zhemm.c +++ b/testing/testing_zhemm.c @@ -133,7 +133,9 @@ testing_zhemm_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_side_t side = run_arg_get_side( args, "side", ChamLeft ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); diff --git a/testing/testing_zher2k.c b/testing/testing_zher2k.c index f0d9b8905..5fd3a40db 100644 --- a/testing/testing_zher2k.c +++ b/testing/testing_zher2k.c @@ -126,7 +126,9 @@ testing_zher2k_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_trans_t trans = run_arg_get_trans( args, "trans", ChamNoTrans ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); diff --git a/testing/testing_zherk.c b/testing/testing_zherk.c index f6b1be86d..f84e20b80 100644 --- a/testing/testing_zherk.c +++ b/testing/testing_zherk.c @@ -120,7 +120,9 @@ testing_zherk_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_trans_t trans = run_arg_get_trans( args, "trans", ChamNoTrans ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); diff --git a/testing/testing_zlange.c b/testing/testing_zlange.c index 710e02181..8daf2aae3 100644 --- a/testing/testing_zlange.c +++ b/testing/testing_zlange.c @@ -121,7 +121,9 @@ testing_zlange_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_normtype_t norm_type = run_arg_get_ntype( args, "norm", ChamMaxNorm ); int N = run_arg_get_int( args, "N", 1000 ); diff --git a/testing/testing_zlanhe.c b/testing/testing_zlanhe.c index 21ff4406d..fd457fabb 100644 --- a/testing/testing_zlanhe.c +++ b/testing/testing_zlanhe.c @@ -119,7 +119,9 @@ testing_zlanhe_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_normtype_t norm_type = run_arg_get_ntype( args, "norm", ChamMaxNorm ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); diff --git a/testing/testing_zlansy.c b/testing/testing_zlansy.c index b0db95639..dc9526aa3 100644 --- a/testing/testing_zlansy.c +++ b/testing/testing_zlansy.c @@ -119,7 +119,9 @@ testing_zlansy_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_normtype_t norm_type = run_arg_get_ntype( args, "norm", ChamMaxNorm ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); diff --git a/testing/testing_zlantr.c b/testing/testing_zlantr.c index e41eb2bcd..02f893a65 100644 --- a/testing/testing_zlantr.c +++ b/testing/testing_zlantr.c @@ -143,7 +143,9 @@ testing_zlantr_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_normtype_t norm_type = run_arg_get_ntype( args, "norm", ChamMaxNorm ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); diff --git a/testing/testing_zlauum.c b/testing/testing_zlauum.c index 401b1f6b5..fe064eaf7 100644 --- a/testing/testing_zlauum.c +++ b/testing/testing_zlauum.c @@ -93,7 +93,9 @@ testing_zlauum_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); int N = run_arg_get_int( args, "N", 1000 ); diff --git a/testing/testing_zposv.c b/testing/testing_zposv.c index 1ec3a85f5..c2a739a9d 100644 --- a/testing/testing_zposv.c +++ b/testing/testing_zposv.c @@ -115,7 +115,9 @@ testing_zposv_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); int N = run_arg_get_int( args, "N", 1000 ); diff --git a/testing/testing_zpotrf.c b/testing/testing_zpotrf.c index 264fb2711..971de441a 100644 --- a/testing/testing_zpotrf.c +++ b/testing/testing_zpotrf.c @@ -90,7 +90,9 @@ testing_zpotrf_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); int N = run_arg_get_int( args, "N", 1000 ); diff --git a/testing/testing_zpotri.c b/testing/testing_zpotri.c index 91ce688f9..bddbef90a 100644 --- a/testing/testing_zpotri.c +++ b/testing/testing_zpotri.c @@ -93,7 +93,9 @@ testing_zpotri_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); int N = run_arg_get_int( args, "N", 1000 ); diff --git a/testing/testing_zpotrs.c b/testing/testing_zpotrs.c index 718e3da1d..bc87dbe7a 100644 --- a/testing/testing_zpotrs.c +++ b/testing/testing_zpotrs.c @@ -105,7 +105,9 @@ testing_zpotrs_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); int N = run_arg_get_int( args, "N", 1000 ); diff --git a/testing/testing_zsymm.c b/testing/testing_zsymm.c index 56d6b331f..527be00a1 100644 --- a/testing/testing_zsymm.c +++ b/testing/testing_zsymm.c @@ -133,7 +133,9 @@ testing_zsymm_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_side_t side = run_arg_get_side( args, "side", ChamLeft ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); diff --git a/testing/testing_zsyr2k.c b/testing/testing_zsyr2k.c index e7a3506a8..d6cd91f50 100644 --- a/testing/testing_zsyr2k.c +++ b/testing/testing_zsyr2k.c @@ -126,7 +126,9 @@ testing_zsyr2k_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_trans_t trans = run_arg_get_trans( args, "trans", ChamNoTrans ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); diff --git a/testing/testing_zsyrk.c b/testing/testing_zsyrk.c index cede56702..4517f1fa0 100644 --- a/testing/testing_zsyrk.c +++ b/testing/testing_zsyrk.c @@ -120,7 +120,9 @@ testing_zsyrk_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_trans_t trans = run_arg_get_trans( args, "trans", ChamNoTrans ); cham_uplo_t uplo = run_arg_get_uplo( args, "uplo", ChamUpper ); diff --git a/testing/testing_ztrmm.c b/testing/testing_ztrmm.c index 96ad81fe7..3b69d3802 100644 --- a/testing/testing_ztrmm.c +++ b/testing/testing_ztrmm.c @@ -114,7 +114,9 @@ testing_ztrmm_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_trans_t trans = run_arg_get_trans( args, "trans", ChamNoTrans ); cham_side_t side = run_arg_get_side( args, "side", ChamLeft ); diff --git a/testing/testing_ztrsm.c b/testing/testing_ztrsm.c index 52cfd4017..aa7ef6353 100644 --- a/testing/testing_ztrsm.c +++ b/testing/testing_ztrsm.c @@ -109,7 +109,9 @@ testing_ztrsm_std( run_arg_list_t *args, int check ) int hres = 0; /* Read arguments */ +#if !defined(CHAMELEON_TESTINGS_VENDOR) int api = parameters_getvalue_int( "api" ); +#endif int nb = run_arg_get_nb( args ); cham_trans_t trans = run_arg_get_trans( args, "trans", ChamNoTrans ); cham_side_t side = run_arg_get_side( args, "side", ChamLeft ); -- GitLab From 807b82ec12c39c7a73692e4037f51a2e16ef45c7 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Thu, 20 Feb 2025 11:41:18 +0100 Subject: [PATCH 09/15] testing: fix uninitialized info_solution value --- testing/testing_zcheck_aux.c | 2 +- testing/testing_zcheck_svd.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/testing/testing_zcheck_aux.c b/testing/testing_zcheck_aux.c index 3eb81bfc6..d6b3158b8 100644 --- a/testing/testing_zcheck_aux.c +++ b/testing/testing_zcheck_aux.c @@ -631,7 +631,7 @@ int check_zscale_std( run_arg_list_t *args, cham_uplo_t uplo, int M, int N, CHAM */ int check_zscale( run_arg_list_t *args, cham_uplo_t uplo, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descAinit, CHAM_desc_t *descA ) { - int info_solution; + int info_solution = 0; int M = descA->m; int N = descA->n; int LDA = M; diff --git a/testing/testing_zcheck_svd.c b/testing/testing_zcheck_svd.c index 1bd74c699..6c6772ee2 100644 --- a/testing/testing_zcheck_svd.c +++ b/testing/testing_zcheck_svd.c @@ -227,7 +227,7 @@ int check_zgesvd_std( run_arg_list_t *args, cham_job_t jobu, cham_job_t jobvt, i int check_zgesvd( run_arg_list_t *args, cham_job_t jobu, cham_job_t jobvt, CHAM_desc_t *descAinit, CHAM_desc_t *descA, double *Sinit, double *S, CHAMELEON_Complex64_t *U, int LDU, CHAMELEON_Complex64_t *Vt, int LDVt ) { - int info_solution; + int info_solution = 0; int rank = CHAMELEON_Comm_rank(); CHAMELEON_Complex64_t *Ainit = NULL; CHAMELEON_Complex64_t *A = NULL; -- GitLab From ee83aef356463948bc36df26e5f9634f6d0651c8 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Thu, 20 Feb 2025 10:20:16 +0100 Subject: [PATCH 10/15] parsec/codelet: add missing priority --- runtime/parsec/codelets/codelet_zlag2c.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runtime/parsec/codelets/codelet_zlag2c.c b/runtime/parsec/codelets/codelet_zlag2c.c index cf302b584..6b3a42250 100644 --- a/runtime/parsec/codelets/codelet_zlag2c.c +++ b/runtime/parsec/codelets/codelet_zlag2c.c @@ -53,7 +53,8 @@ void INSERT_TASK_zlag2c( const RUNTIME_option_t *options, CHAM_tile_t *tileA = A->get_blktile( A, Am, An ); CHAM_tile_t *tileB = B->get_blktile( B, Bm, Bn ); - parsec_dtd_taskpool_insert_task(PARSEC_dtd_taskpool, CORE_zlag2c_parsec, "lag2c", + parsec_dtd_taskpool_insert_task( + PARSEC_dtd_taskpool, CORE_zlag2c_parsec, options->priority, "lag2c", sizeof(int), &m, VALUE, sizeof(int), &n, VALUE, PASSED_BY_REF, RTBLKADDR( A, CHAMELEON_Complex64_t, Am, An ), chameleon_parsec_get_arena_index( A ) | INPUT, -- GitLab From 2c404c92fab5b130879b07c3c85b01920b32b59b Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Thu, 20 Feb 2025 11:49:50 +0100 Subject: [PATCH 11/15] parsec/codelet: add missing return PARSEC_HOOK_RETURN_DONE --- runtime/parsec/codelets/codelet_ipiv.c | 3 +++ runtime/parsec/codelets/codelet_map.c | 9 +++++++++ runtime/parsec/codelets/codelet_zlaswp.c | 6 ++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/runtime/parsec/codelets/codelet_ipiv.c b/runtime/parsec/codelets/codelet_ipiv.c index e111c1e95..b6d582e5a 100644 --- a/runtime/parsec/codelets/codelet_ipiv.c +++ b/runtime/parsec/codelets/codelet_ipiv.c @@ -50,6 +50,9 @@ CORE_ipiv_to_perm_parsec( parsec_execution_stream_t *context, this_task, &m0, &m, &k, &ipiv, &perm, &invp ); CORE_ipiv_to_perm( m0, m, k, ipiv, perm, invp ); + + (void)context; + return PARSEC_HOOK_RETURN_DONE; } void INSERT_TASK_ipiv_to_perm( const RUNTIME_option_t *options, diff --git a/runtime/parsec/codelets/codelet_map.c b/runtime/parsec/codelets/codelet_map.c index 66087e230..6874d16e5 100644 --- a/runtime/parsec/codelets/codelet_map.c +++ b/runtime/parsec/codelets/codelet_map.c @@ -47,6 +47,9 @@ CORE_map_one_parsec( parsec_execution_stream_t *context, descA, &tileA ); free( pargs ); + + (void)context; + return PARSEC_HOOK_RETURN_DONE; } static inline int @@ -79,6 +82,9 @@ CORE_map_two_parsec( parsec_execution_stream_t *context, descA, &tileA, descB, &tileB ); free( pargs ); + + (void)context; + return PARSEC_HOOK_RETURN_DONE; } static inline int @@ -119,6 +125,9 @@ CORE_map_three_parsec( parsec_execution_stream_t *context, descA, &tileA, descB, &tileB, descC, &tileC ); free( pargs ); + + (void)context; + return PARSEC_HOOK_RETURN_DONE; } void INSERT_TASK_map( const RUNTIME_option_t *options, diff --git a/runtime/parsec/codelets/codelet_zlaswp.c b/runtime/parsec/codelets/codelet_zlaswp.c index fd938917d..12aaf7089 100644 --- a/runtime/parsec/codelets/codelet_zlaswp.c +++ b/runtime/parsec/codelets/codelet_zlaswp.c @@ -26,9 +26,10 @@ CORE_zlaswp_get_parsec( parsec_execution_stream_t *context, int m0, m, n, k, lda, ldb, *perm; CHAMELEON_Complex64_t *A, *B; - parsec_dtd_unpack_args( this_task, &m0, &m, &n, &k, &A, lda, &B, ldb, &perm ); + parsec_dtd_unpack_args( this_task, &m0, &m, &n, &k, &A, &lda, &B, &ldb, &perm ); CORE_zlaswp_get( m0, m, n, k, A, lda, B, ldb, perm ); + return PARSEC_HOOK_RETURN_DONE; } void INSERT_TASK_zlaswp_get( const RUNTIME_option_t *options, @@ -62,9 +63,10 @@ CORE_zlaswp_set_parsec( parsec_execution_stream_t *context, int m0, m, n, k, lda, ldb, *invp; CHAMELEON_Complex64_t *A, *B; - parsec_dtd_unpack_args( this_task, &m0, &m, &n, &k, &A, lda, &B, ldb, &invp ); + parsec_dtd_unpack_args( this_task, &m0, &m, &n, &k, &A, &lda, &B, &ldb, &invp ); CORE_zlaswp_set( m0, m, n, k, A, lda, B, ldb, invp ); + return PARSEC_HOOK_RETURN_DONE; } void INSERT_TASK_zlaswp_set( const RUNTIME_option_t *options, -- GitLab From 5245b134fa0a8fce737114c0cb5de9dd84148859 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Thu, 20 Feb 2025 10:22:01 +0100 Subject: [PATCH 12/15] quark/codelet: remove unused variable in lacpy --- runtime/quark/codelets/codelet_zlacpy.c | 1 - 1 file changed, 1 deletion(-) diff --git a/runtime/quark/codelets/codelet_zlacpy.c b/runtime/quark/codelets/codelet_zlacpy.c index 472dbe1ac..bf814013b 100644 --- a/runtime/quark/codelets/codelet_zlacpy.c +++ b/runtime/quark/codelets/codelet_zlacpy.c @@ -31,7 +31,6 @@ static inline void CORE_zlacpy_quark(Quark *quark) { cham_uplo_t uplo; int M, N; - int LDA, LDB; CHAM_tile_t *tileA, *tileB; quark_unpack_args_5(quark, uplo, M, N, tileA, tileB); -- GitLab From 01075844a5df4405738ec1e89fde331ff5b0cad0 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Wed, 19 Feb 2025 23:55:55 +0100 Subject: [PATCH 13/15] hip: Fix half definition when using hip --- gpuhipblas/compute/hip_hgemm.c | 10 +++++----- gpuhipblas/include/gpuhipblas.h | 10 +++++----- include/chameleon/types.h | 2 ++ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/gpuhipblas/compute/hip_hgemm.c b/gpuhipblas/compute/hip_hgemm.c index 784f7b00f..dbd6b1aad 100644 --- a/gpuhipblas/compute/hip_hgemm.c +++ b/gpuhipblas/compute/hip_hgemm.c @@ -19,11 +19,11 @@ int HIP_hgemm( cham_trans_t transa, cham_trans_t transb, int m, int n, int k, - const CHAMELEON_Real16_t *alpha, - const CHAMELEON_Real16_t *A, int lda, - const CHAMELEON_Real16_t *B, int ldb, - const CHAMELEON_Real16_t *beta, - CHAMELEON_Real16_t *C, int ldc, + const hipblasHalf *alpha, + const hipblasHalf *A, int lda, + const hipblasHalf *B, int ldb, + const hipblasHalf *beta, + hipblasHalf *C, int ldc, hipblasHandle_t handle ) { hipblasStatus_t rc; diff --git a/gpuhipblas/include/gpuhipblas.h b/gpuhipblas/include/gpuhipblas.h index 3a596b33e..ed9497798 100644 --- a/gpuhipblas/include/gpuhipblas.h +++ b/gpuhipblas/include/gpuhipblas.h @@ -62,11 +62,11 @@ BEGIN_C_DECLS int HIP_hgemm( cham_trans_t transa, cham_trans_t transb, int m, int n, int k, - const CHAMELEON_Real16_t *alpha, - const CHAMELEON_Real16_t *A, int lda, - const CHAMELEON_Real16_t *B, int ldb, - const CHAMELEON_Real16_t *beta, - CHAMELEON_Real16_t *C, int ldc, + const hipblasHalf *alpha, + const hipblasHalf *A, int lda, + const hipblasHalf *B, int ldb, + const hipblasHalf *beta, + hipblasHalf *C, int ldc, hipblasHandle_t handle ); END_C_DECLS diff --git a/include/chameleon/types.h b/include/chameleon/types.h index dbf3fc430..954b0c9be 100644 --- a/include/chameleon/types.h +++ b/include/chameleon/types.h @@ -109,6 +109,8 @@ typedef int8_t cham_bool_t; */ #if defined(__cplusplus) && defined(CHAMELEON_USE_CUDA) && (CUDA_VERSION >= 7500) typedef __half CHAMELEON_Real16_t; +#elif defined(CHAMELEON_USE_HIP) && defined(__HIP__) +typedef hipblasHalf CHAMELEON_Real16_t; #else /* use short for cuda older than 7.5 and non-cuda files * corresponding routines would not work anyway since there is no half precision */ -- GitLab From a90e170940b562d747c845a099e94ece94941e01 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Fri, 21 Feb 2025 00:56:10 +0100 Subject: [PATCH 14/15] starpu/cmake: Bugfix for the multiple definition of __HIP_PLATFORM_AMD__ to null and 1 --- runtime/starpu/CMakeLists.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/runtime/starpu/CMakeLists.txt b/runtime/starpu/CMakeLists.txt index 17e0ddd6c..801a1f89a 100644 --- a/runtime/starpu/CMakeLists.txt +++ b/runtime/starpu/CMakeLists.txt @@ -39,6 +39,17 @@ include(CheckCSourceRuns) set(CHAMELEON_STARPU_VERSION "1.3" CACHE STRING "necessary STARPU API version") find_package(STARPU ${CHAMELEON_STARPU_VERSION} REQUIRED) + +# Bug fix of hip defining to null the variable in the perl script used +# by starpu, and to 1 in the cmake targe file used by chameleon +# ------------------------------------------------------------- +get_target_property(_DEFS MORSE::STARPU INTERFACE_COMPILE_OPTIONS) +if (_DEFS) + list(TRANSFORM _DEFS REPLACE "-D__HIP_PLATFORM_AMD__=" "-D__HIP_PLATFORM_AMD__=1" ) + set_target_properties(MORSE::STARPU PROPERTIES INTERFACE_COMPILE_OPTIONS "${_DEFS}") +endif() +# ------------------------------------------------------------- + morse_export_imported_target(MORSE STARPU starpu chameleon) # check available functions -- GitLab From 2e328bb60327a2998d24f0cf91f7b78504cd4ad8 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Thu, 20 Feb 2025 10:54:50 +0100 Subject: [PATCH 15/15] starpu: Protect interface codelet in simulation mode --- compute/pzgebrd.c | 6 +++++- compute/zprint.c | 8 ++++++-- runtime/starpu/codelets/codelet_ipiv.c | 12 +++++------- runtime/starpu/codelets/codelet_zgetrf_blocked.c | 4 ++-- .../starpu/codelets/codelet_zgetrf_nopiv_percol.c | 2 +- runtime/starpu/interface/cppi_interface.c | 7 ++++++- 6 files changed, 25 insertions(+), 14 deletions(-) diff --git a/compute/pzgebrd.c b/compute/pzgebrd.c index fbb80e91f..40b50c32e 100644 --- a/compute/pzgebrd.c +++ b/compute/pzgebrd.c @@ -178,8 +178,11 @@ chameleon_pzgebrd_gb2bd( cham_job_t jobu, cham_job_t jobvt, CHAM_desc_t *A, CHAM_desc_t descAB; cham_uplo_t uplo; int M, N, MINMN, NB, LDAB, ABn; +#if !defined(CHAMELEON_SIMULATION) int info; int KL, KU; + char gbbrd_vect; +#endif chamctxt = chameleon_context_self(); if ( sequence->status != CHAMELEON_SUCCESS ) { @@ -205,13 +208,13 @@ chameleon_pzgebrd_gb2bd( cham_job_t jobu, cham_job_t jobvt, CHAM_desc_t *A, /* Convert matrix to band form */ chameleon_pztile2band( uplo, A, &descAB, sequence, request ); +#if !defined(CHAMELEON_SIMULATION) /* NCC = 0, C = NULL, we do not update any matrix with new singular vectors */ /* On exit, AB = U (S +~ E) VT */ KL = uplo == ChamUpper ? 0 : NB; KU = uplo == ChamUpper ? NB : 0; /* Manage the case where only singular values are required */ - char gbbrd_vect; if ( jobu == ChamNoVec ) { if ( jobvt == ChamNoVec ) { gbbrd_vect = 'N'; @@ -228,6 +231,7 @@ chameleon_pzgebrd_gb2bd( cham_job_t jobu, cham_job_t jobvt, CHAM_desc_t *A, gbbrd_vect = 'B'; } } +#endif CHAMELEON_Desc_Flush( A, sequence ); CHAMELEON_Desc_Flush( &descAB, sequence ); diff --git a/compute/zprint.c b/compute/zprint.c index 982a69154..61c1398fd 100644 --- a/compute/zprint.c +++ b/compute/zprint.c @@ -26,6 +26,7 @@ struct zprint_args_s { const char *header; }; +#if !defined(CHAMELEON_SIMULATION) static inline int zprint_cpu( void *op_args, cham_uplo_t uplo, int m, int n, int ndata, @@ -43,17 +44,20 @@ zprint_cpu( void *op_args, } assert( tileA->format & CHAMELEON_TILE_FULLRANK ); -#if !defined(CHAMELEON_SIMULATION) CORE_zprint( options->file, options->header, uplo, tempmm, tempnn, m, n, A, lda ); -#endif return 0; } +#endif static cham_map_operator_t zprint_map = { .name = "zprint", +#if !defined(CHAMELEON_SIMULATION) .cpufunc = zprint_cpu, +#else + .cpufunc = NULL, +#endif .cudafunc = NULL, .hipfunc = NULL, }; diff --git a/runtime/starpu/codelets/codelet_ipiv.c b/runtime/starpu/codelets/codelet_ipiv.c index 35de49f76..4498c63f3 100644 --- a/runtime/starpu/codelets/codelet_ipiv.c +++ b/runtime/starpu/codelets/codelet_ipiv.c @@ -21,16 +21,14 @@ static void cl_ipiv_init_cpu_func(void *descr[], void *cl_arg) { +#if !defined(CHAMELEON_SIMULATION) int *ipiv = (int *)STARPU_VECTOR_GET_PTR(descr[0]); + int i, m0, n; -#if !defined(CHAMELEON_SIMULATION) - { - int i, m0, n; - starpu_codelet_unpack_args( cl_arg, &m0, &n ); + starpu_codelet_unpack_args( cl_arg, &m0, &n ); - for( i=0; i<n; i++ ) { - ipiv[i] = m0 + i + 1; - } + for( i=0; i<n; i++ ) { + ipiv[i] = m0 + i + 1; } #endif } diff --git a/runtime/starpu/codelets/codelet_zgetrf_blocked.c b/runtime/starpu/codelets/codelet_zgetrf_blocked.c index eab7e0ec9..6bbc5f0c4 100644 --- a/runtime/starpu/codelets/codelet_zgetrf_blocked.c +++ b/runtime/starpu/codelets/codelet_zgetrf_blocked.c @@ -280,9 +280,9 @@ void INSERT_TASK_zgetrf_blocked_offdiag( const RUNTIME_option_t *options, 0 ); } -static const CHAMELEON_Complex64_t zone = (CHAMELEON_Complex64_t)1.0; - #if !defined(CHAMELEON_SIMULATION) +static const CHAMELEON_Complex64_t zone = (CHAMELEON_Complex64_t)1.0; + static void cl_zgetrf_blocked_trsm_cpu_func(void *descr[], void *cl_arg) { int m, n, h, ib; diff --git a/runtime/starpu/codelets/codelet_zgetrf_nopiv_percol.c b/runtime/starpu/codelets/codelet_zgetrf_nopiv_percol.c index d416997bc..eb85ee9df 100644 --- a/runtime/starpu/codelets/codelet_zgetrf_nopiv_percol.c +++ b/runtime/starpu/codelets/codelet_zgetrf_nopiv_percol.c @@ -23,10 +23,10 @@ CHAMELEON_CL_CB( zgetrf_nopiv_percol_diag, cti_handle_get_m(task->handles[0]), 0, 0, M ) CHAMELEON_CL_CB( zgetrf_nopiv_percol_trsm, cti_handle_get_m(task->handles[0]), 0, 0, M ) +#if !defined(CHAMELEON_SIMULATION) static const CHAMELEON_Complex64_t zone = (CHAMELEON_Complex64_t) 1.0; static const CHAMELEON_Complex64_t mzone = (CHAMELEON_Complex64_t)-1.0; -#if !defined(CHAMELEON_SIMULATION) static void cl_zgetrf_nopiv_percol_diag_cpu_func( void *descr[], void *cl_arg ) { CHAM_tile_t *tileA, *tileU; diff --git a/runtime/starpu/interface/cppi_interface.c b/runtime/starpu/interface/cppi_interface.c index 7efa721f4..d788c66d8 100644 --- a/runtime/starpu/interface/cppi_interface.c +++ b/runtime/starpu/interface/cppi_interface.c @@ -355,7 +355,9 @@ struct starpu_data_interface_ops cppi_ops = }; -static int compare_pivots( cham_flttype_t type, int h, void * redux, void * input ){ +#if !defined(CHAMELEON_SIMULATION) +static inline int +compare_pivots( cham_flttype_t type, int h, void * redux, void * input ){ if ( type == ChamRealFloat ) { float *valredux = redux; @@ -439,12 +441,14 @@ cl_cppi_redux_cpu_func(void *descr[], void *cl_arg) return; } +#endif /* * Codelet definition */ CODELETS_CPU(cppi_redux, cl_cppi_redux_cpu_func) +#if !defined(CHAMELEON_SIMULATION) static void cl_cppi_init_redux_cpu_func( void *descr[], void *cl_arg ) { @@ -460,6 +464,7 @@ cl_cppi_init_redux_cpu_func( void *descr[], void *cl_arg ) memset( cppi_redux->pivot.pivrow, 0, size ); memset( cppi_redux->pivot.diagrow, 0, size ); } +#endif /* * Codelet definition -- GitLab