From 445057a75f779b2a8f0f16c171af4582e2b45ff7 Mon Sep 17 00:00:00 2001 From: Philippe SWARTVAGHER <philippe.swartvagher@inria.fr> Date: Wed, 21 Jul 2021 16:58:58 +0200 Subject: [PATCH] runtime: Fix returned value by RUNTIME_Init and chack it's returned value when called --- control/control.c | 4 +--- include/chameleon/runtime.h | 4 ++-- runtime/openmp/control/runtime_control.c | 3 +-- runtime/parsec/control/runtime_control.c | 7 ++++--- runtime/quark/control/runtime_control.c | 4 ++-- runtime/starpu/codelets/codelet_zgemm.c | 2 +- runtime/starpu/control/runtime_control.c | 20 ++++++++++++-------- testing/chameleon_ztesting.c | 7 ++++++- 8 files changed, 29 insertions(+), 22 deletions(-) diff --git a/control/control.c b/control/control.c index e875a9003..5fc134b38 100644 --- a/control/control.c +++ b/control/control.c @@ -113,9 +113,7 @@ int __chameleon_initpar(int ncpus, int ncudas, int nthreads_per_worker) } #endif - RUNTIME_init( chamctxt, ncpus, ncudas, nthreads_per_worker ); - - return CHAMELEON_SUCCESS; + return RUNTIME_init( chamctxt, ncpus, ncudas, nthreads_per_worker ); } /** diff --git a/include/chameleon/runtime.h b/include/chameleon/runtime.h index 622f3ce75..f3e26f4f7 100644 --- a/include/chameleon/runtime.h +++ b/include/chameleon/runtime.h @@ -113,8 +113,8 @@ RUNTIME_disable( void *runtime_ctxt, int option ); * defines a better binding of the workers. * -1 to disable, or > 0 to enable. * - * @retval -1 on failure to initialize the runtime. - * @retval >0 on success to initialize the runtime. + * @retval CHAMELEON_SUCCESS on success to initialize the runtime. + * @retval CHAMELEON_ERR_NOT_INITIALIZED on failure to initialize the runtime. * */ int diff --git a/runtime/openmp/control/runtime_control.c b/runtime/openmp/control/runtime_control.c index 54f5f2e36..dd4491153 100644 --- a/runtime/openmp/control/runtime_control.c +++ b/runtime/openmp/control/runtime_control.c @@ -31,7 +31,6 @@ int RUNTIME_init( CHAM_context_t *chamctxt, int ncudas, int nthreads_per_worker ) { - int hres = 0; if ( ncudas > 0 ) { chameleon_warning( "RUNTIME_init_scheduler(OpenMP)", "GPUs are not supported for now"); } @@ -43,7 +42,7 @@ int RUNTIME_init( CHAM_context_t *chamctxt, chamctxt->nworkers = ncpus; chamctxt->nthreads_per_worker = nthreads_per_worker; - return hres; + return CHAMELEON_SUCCESS; } /** diff --git a/runtime/parsec/control/runtime_control.c b/runtime/parsec/control/runtime_control.c index e1e38570f..e673bdcef 100644 --- a/runtime/parsec/control/runtime_control.c +++ b/runtime/parsec/control/runtime_control.c @@ -34,7 +34,8 @@ int RUNTIME_init( CHAM_context_t *chamctxt, int ncudas, int nthreads_per_worker ) { - int hres = -1, default_ncores = -1; + int hres = CHAMELEON_ERR_NOT_INITIALIZED; + int default_ncores = -1; int *argc = (int *)malloc(sizeof(int)); *argc = 0; @@ -45,10 +46,10 @@ int RUNTIME_init( CHAM_context_t *chamctxt, chamctxt->parallel_enabled = CHAMELEON_TRUE; chamctxt->schedopt = (void *)parsec_init(default_ncores, argc, NULL); - if(NULL != chamctxt->schedopt) { + if ( NULL != chamctxt->schedopt ) { chamctxt->nworkers = ncpus; chamctxt->nthreads_per_worker = nthreads_per_worker; - hres = 0; + hres = CHAMELEON_SUCCESS; } free(argc); diff --git a/runtime/quark/control/runtime_control.c b/runtime/quark/control/runtime_control.c index f6475dc03..21ba5cc4e 100644 --- a/runtime/quark/control/runtime_control.c +++ b/runtime/quark/control/runtime_control.c @@ -32,7 +32,7 @@ int RUNTIME_init( CHAM_context_t *chamctxt, int ncudas, int nthreads_per_worker ) { - int hres = -1; + int hres = CHAMELEON_ERR_NOT_INITIALIZED; if ( ncudas > 0 ) { chameleon_warning( "RUNTIME_init_scheduler(quark)", "GPUs are not supported for now"); } @@ -46,7 +46,7 @@ int RUNTIME_init( CHAM_context_t *chamctxt, if(NULL != chamctxt->schedopt) { chamctxt->nworkers = ncpus; chamctxt->nthreads_per_worker = nthreads_per_worker; - hres = 0; + hres = CHAMELEON_SUCCESS; } return hres; diff --git a/runtime/starpu/codelets/codelet_zgemm.c b/runtime/starpu/codelets/codelet_zgemm.c index ccf375fdf..39d242c01 100644 --- a/runtime/starpu/codelets/codelet_zgemm.c +++ b/runtime/starpu/codelets/codelet_zgemm.c @@ -137,7 +137,7 @@ void INSERT_TASK_zgemm( const RUNTIME_option_t *options, CHAMELEON_ACCESS_RW(C, Cm, Cn); CHAMELEON_END_ACCESS_DECLARATION; - /* Callback fro profiling information */ + /* Callback for profiling information */ callback = options->profiling ? cl_zgemm_callback : NULL; /* Fix the worker id */ diff --git a/runtime/starpu/control/runtime_control.c b/runtime/starpu/control/runtime_control.c index 5f6ff018e..4cce08868 100644 --- a/runtime/starpu/control/runtime_control.c +++ b/runtime/starpu/control/runtime_control.c @@ -33,7 +33,8 @@ */ static int chameleon_starpu_init( starpu_conf_t *conf ) { - int hres; + int hres = CHAMELEON_SUCCESS; + int rc; #if defined(STARPU_USE_FXT) starpu_fxt_autostart_profiling(0); @@ -48,21 +49,23 @@ static int chameleon_starpu_init( starpu_conf_t *conf ) # endif # if defined(HAVE_STARPU_MPI_INIT_CONF) - hres = starpu_mpi_init_conf(NULL, NULL, !flag, MPI_COMM_WORLD, conf); + rc = starpu_mpi_init_conf(NULL, NULL, !flag, MPI_COMM_WORLD, conf); # else - hres = starpu_init(conf); - if (hres < 0) { - return hres; + rc = starpu_init(conf); + if (rc < 0) { + return CHAMELEON_ERR_NOT_INITIALIZED; } starpu_mpi_init(NULL, NULL, !flag); # endif } #else - hres = starpu_init(conf); + rc = starpu_init(conf); #endif - + if ( rc == -ENODEV ) { + hres = CHAMELEON_ERR_NOT_INITIALIZED; + } return hres; } @@ -72,7 +75,8 @@ int RUNTIME_init( CHAM_context_t *chamctxt, int nthreads_per_worker ) { starpu_conf_t *conf = (starpu_conf_t*)(chamctxt->schedopt); - int hres = -1; + int hres = CHAMELEON_ERR_NOT_INITIALIZED; + int rc = 0; /* StarPU was already initialized by an external library */ if (conf == NULL) { diff --git a/testing/chameleon_ztesting.c b/testing/chameleon_ztesting.c index 6aa508d5a..ca4850622 100644 --- a/testing/chameleon_ztesting.c +++ b/testing/chameleon_ztesting.c @@ -523,7 +523,12 @@ int main (int argc, char **argv) { profile = parameters_getvalue_int( "profile" ); forcegpu = parameters_getvalue_int( "forcegpu" ); - CHAMELEON_Init( ncores, ngpus ); + rc = CHAMELEON_Init( ncores, ngpus ); + + if ( rc != CHAMELEON_SUCCESS ) { + fprintf( stderr, "CHAMELEON_Init failed and returned %d.\n", rc ); + return EXIT_FAILURE; + } /* Set ncores to the right value */ if ( ncores == -1 ) { -- GitLab