From 39dbaf81a10b2bc2634543557aee5c880b8cbacf Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Mon, 11 Oct 2021 21:58:06 +0200 Subject: [PATCH] OpenMP: Fix issue that was preventing examples and testings to really use OpenMP --- include/chameleon.h | 35 +++++++++++++++++++++-------------- runtime/openmp/CMakeLists.txt | 2 +- testing/chameleon_ztesting.c | 6 ++++-- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/include/chameleon.h b/include/chameleon.h index 49e9e4d06..e34925827 100644 --- a/include/chameleon.h +++ b/include/chameleon.h @@ -188,26 +188,33 @@ int CHAMELEON_Recursive_Desc_Create( CHAM_desc_t **descptr, void *mat, cham_flt * */ #if defined(CHAMELEON_SCHED_OPENMP) -#define CHAMELEON_Init(nworkers, ncudas)\ - __chameleon_init(nworkers, ncudas);\ - _Pragma("omp parallel")\ - _Pragma("omp master")\ +#define CHAMELEON_Init( _nworkers_, _ncudas_ ) \ + __chameleon_init( (_nworkers_), (_ncudas_) ); \ + _Pragma("omp parallel") \ + _Pragma("omp master") \ { -#define CHAMELEON_InitPar(nworkers, ncudas, nthreads_per_worker)\ - __chameleon_initpar(nworkers, ncudas, nthreads_per_worker);\ + +#define CHAMELEON_InitPar( _nworkers_, _ncudas_, _nthreads_per_worker_ ) \ + __chameleon_initpar( (_nworkers_), (_ncudas_), (_nthreads_per_worker_) ); \ _Pragma("omp parallel")\ _Pragma("omp master")\ { -#define CHAMELEON_Finalize()\ - }\ + +#define CHAMELEON_Finalize() \ + } \ __chameleon_finalize(); + #else -#define CHAMELEON_Init(nworkers, ncudas)\ - __chameleon_init(nworkers, ncudas); -#define CHAMELEON_InitPar(nworkers, ncudas, nthreads_per_worker)\ - __chameleon_initpar(nworkers, ncudas, nthreads_per_worker); -#define CHAMELEON_Finalize()\ - __chameleon_finalize(); + +#define CHAMELEON_Init( _nworkers_, _ncudas_ ) \ + __chameleon_init( (_nworkers_), (_ncudas_) ); + +#define CHAMELEON_InitPar( _nworkers_, _ncudas_, _nthreads_per_worker_ ) \ + __chameleon_initpar( (_nworkers_), (_ncudas_), (_nthreads_per_worker_) ); + +#define CHAMELEON_Finalize() \ + __chameleon_finalize(); + #endif END_C_DECLS diff --git a/runtime/openmp/CMakeLists.txt b/runtime/openmp/CMakeLists.txt index 1fd0207ad..0a2242ff7 100644 --- a/runtime/openmp/CMakeLists.txt +++ b/runtime/openmp/CMakeLists.txt @@ -129,7 +129,7 @@ target_include_directories(chameleon_openmp PRIVATE $<BUILD_INTERFACE:${CHAMELEON_SOURCE_DIR}/coreblas/include> $<BUILD_INTERFACE:${CHAMELEON_BINARY_DIR}/coreblas/include>) -target_link_libraries(chameleon_openmp PRIVATE OpenMP::OpenMP_C) +target_link_libraries(chameleon_openmp PUBLIC OpenMP::OpenMP_C) target_link_libraries(chameleon_openmp PRIVATE coreblas) target_link_libraries(chameleon_openmp PRIVATE MORSE::M) diff --git a/testing/chameleon_ztesting.c b/testing/chameleon_ztesting.c index 667365665..7a47afc1b 100644 --- a/testing/chameleon_ztesting.c +++ b/testing/chameleon_ztesting.c @@ -629,7 +629,7 @@ int main (int argc, char **argv) { if ( rc != CHAMELEON_SUCCESS ) { fprintf( stderr, "CHAMELEON_Init failed and returned %d.\n", rc ); - return EXIT_FAILURE; + goto end; } /* Set ncores to the right value */ @@ -656,7 +656,7 @@ int main (int argc, char **argv) { fprintf( stderr, "--forcegpu can't be enable without GPU (-g 0).\n" " Please specify a larger number of GPU or disable this option\n" ); - return EXIT_FAILURE; + goto end; } RUNTIME_zlocality_allrestrict( RUNTIME_CUDA ); } @@ -712,6 +712,8 @@ int main (int argc, char **argv) { } free( runlist ); + end: + ;/* OpenMP end */ CHAMELEON_Finalize(); parameters_destroy(); -- GitLab