diff --git a/runtime/starpu/CMakeLists.txt b/runtime/starpu/CMakeLists.txt index 7f2eab94cd34acadf580ed42f5c858562d927ae4..f01a36b14433bdac07cd795fe24cb865ee0cd228 100644 --- a/runtime/starpu/CMakeLists.txt +++ b/runtime/starpu/CMakeLists.txt @@ -33,6 +33,7 @@ cmake_minimum_required(VERSION 3.5) include(CheckSymbolExists) include(CheckStructHasMember) +include(CheckCSourceRuns) set(CHAMELEON_STARPU_VERSION "1.3" CACHE STRING "necessary STARPU API version") @@ -90,6 +91,25 @@ if ( STARPU_FOUND ) message("-- ${Blue}Add definition HAVE_STARPU_REUSE_DATA_ON_NODE${ColourReset}") endif() + # Check if STARPU_NONE equals 0 or not + set(C_STARPU_NONE_NONZERO " +#include <stdio.h> +#include <stdint.h> +#include <starpu.h> +int main() { + if (STARPU_NONE == 0) + return 1; + else + return 0; +} +") + + unset(HAVE_STARPU_NONE_NONZERO CACHE) + check_c_source_runs("${C_STARPU_NONE_NONZERO}" HAVE_STARPU_NONE_NONZERO) + if ( HAVE_STARPU_NONE_NONZERO ) + message("-- ${Blue}Add definition HAVE_STARPU_NONE_NONZERO${ColourReset}") + endif() + if (CHAMELEON_USE_MPI) # Add MPI in case StarPU don't have a public dependency on it check_function_exists(starpu_mpi_init_conf HAVE_STARPU_MPI_INIT_CONF) diff --git a/runtime/starpu/codelets/codelet_zgetrf_batched.c b/runtime/starpu/codelets/codelet_zgetrf_batched.c index ab9b96020febfd21331679e8b29444471df7ba1e..d9c55d76cd3fa290ab004ebc854e3d5f4638cf93 100644 --- a/runtime/starpu/codelets/codelet_zgetrf_batched.c +++ b/runtime/starpu/codelets/codelet_zgetrf_batched.c @@ -82,7 +82,7 @@ INSERT_TASK_zgetrf_panel_offdiag_batched( const RUNTIME_option_t *options, if ( rankA != A->myrank ) { return; } -#if !defined ( HAVE_STARPU_NONE_NONZERO ) +#if !defined(HAVE_STARPU_NONE_NONZERO) /* STARPU_NONE can't be equal to 0 */ fprintf( stderr, "INSERT_TASK_zgetrf_percol_diag: STARPU_NONE can not be equal to 0\n" ); assert( 0 ); @@ -146,7 +146,7 @@ INSERT_TASK_zgetrf_panel_offdiag_batched_flush( const RUNTIME_option_t *options, void (*callback)(void*) = NULL; struct cl_getrf_batched_args_t *clargs = *clargs_ptr; int rankA = A->myrank; -#if !defined ( HAVE_STARPU_NONE_NONZERO ) +#if !defined(HAVE_STARPU_NONE_NONZERO) /* STARPU_NONE can't be equal to 0 */ fprintf( stderr, "INSERT_TASK_zgetrf_percol_diag: STARPU_NONE can not be equal to 0\n" ); assert( 0 ); @@ -254,7 +254,7 @@ INSERT_TASK_zgetrf_panel_blocked_batched( const RUNTIME_option_t *options, int accessU, access_npiv, access_ipiv, access_ppiv; struct cl_getrf_batched_args_t *clargs = *clargs_ptr; int rankA = A->get_rankof(A, Am, An); -#if !defined ( HAVE_STARPU_NONE_NONZERO ) +#if !defined(HAVE_STARPU_NONE_NONZERO) /* STARPU_NONE can't be equal to 0 */ fprintf( stderr, "INSERT_TASK_zgetrf_percol_diag: STARPU_NONE can not be equal to 0\n" ); assert( 0 ); @@ -359,7 +359,7 @@ INSERT_TASK_zgetrf_panel_blocked_batched_flush( const RUNTIME_option_t *options, void (*callback)(void*) = NULL; struct cl_getrf_batched_args_t *clargs = *clargs_ptr; int rankA = A->myrank; -#if !defined ( HAVE_STARPU_NONE_NONZERO ) +#if !defined(HAVE_STARPU_NONE_NONZERO) /* STARPU_NONE can't be equal to 0 */ fprintf( stderr, "INSERT_TASK_zgetrf_percol_diag: STARPU_NONE can not be equal to 0\n" ); assert( 0 ); diff --git a/runtime/starpu/codelets/codelet_zgetrf_blocked.c b/runtime/starpu/codelets/codelet_zgetrf_blocked.c index fff1d0723bfe40e9db704baf760c4eb7f9a2a4dd..8739f27deb22f8ba019fa85338c4fdcbc0a0d789 100644 --- a/runtime/starpu/codelets/codelet_zgetrf_blocked.c +++ b/runtime/starpu/codelets/codelet_zgetrf_blocked.c @@ -98,7 +98,7 @@ void INSERT_TASK_zgetrf_blocked_diag( const RUNTIME_option_t *options, void (*callback)(void*) = options->profiling ? cl_zgetrf_blocked_diag_callback : NULL; const char *cl_name = "zgetrf_blocked_diag"; int rankA = A->get_rankof(A, Am, An); -#if !defined ( HAVE_STARPU_NONE_NONZERO ) +#if !defined(HAVE_STARPU_NONE_NONZERO) /* STARPU_NONE can't be equal to 0 */ fprintf( stderr, "INSERT_TASK_zgetrf_percol_diag: STARPU_NONE can not be equal to 0\n" ); assert( 0 ); @@ -228,7 +228,7 @@ void INSERT_TASK_zgetrf_blocked_offdiag( const RUNTIME_option_t *options, int access_ppiv = ( h == 0 ) ? STARPU_NONE : STARPU_R; int accessU = ((h%ib == 0) && (h > 0)) ? STARPU_R : STARPU_NONE; int rankA = A->get_rankof(A, Am, An); -#if !defined ( HAVE_STARPU_NONE_NONZERO ) +#if !defined(HAVE_STARPU_NONE_NONZERO) /* STARPU_NONE can't be equal to 0 */ fprintf( stderr, "INSERT_TASK_zgetrf_percol_diag: STARPU_NONE can not be equal to 0\n" ); assert( 0 ); diff --git a/runtime/starpu/codelets/codelet_zgetrf_percol.c b/runtime/starpu/codelets/codelet_zgetrf_percol.c index c8ff33aff13adb61d6282ef71bca27a8164ea6a4..0b556f81605a9cc78faea6fa6e312ffc0e643631 100644 --- a/runtime/starpu/codelets/codelet_zgetrf_percol.c +++ b/runtime/starpu/codelets/codelet_zgetrf_percol.c @@ -86,7 +86,8 @@ void INSERT_TASK_zgetrf_percol_diag( const RUNTIME_option_t *options, void (*callback)(void*) = options->profiling ? cl_zgetrf_percol_diag_callback : NULL; const char *cl_name = "zgetrf_percol_diag"; int rankA = A->get_rankof(A, Am, An); -#if !defined ( HAVE_STARPU_NONE_NONZERO ) + +#if !defined(HAVE_STARPU_NONE_NONZERO) /* STARPU_NONE can't be equal to 0 */ fprintf( stderr, "INSERT_TASK_zgetrf_percol_diag: STARPU_NONE can not be equal to 0\n" ); assert( 0 ); @@ -172,7 +173,7 @@ void INSERT_TASK_zgetrf_percol_offdiag( const RUNTIME_option_t *options, int access_npiv = ( h == ipiv->n ) ? STARPU_R : STARPU_REDUX; int access_ppiv = ( h == 0 ) ? STARPU_NONE : STARPU_R; int rankA = A->get_rankof(A, Am, An); -#if !defined ( HAVE_STARPU_NONE_NONZERO ) +#if !defined(HAVE_STARPU_NONE_NONZERO) /* STARPU_NONE can't be equal to 0 */ fprintf( stderr, "INSERT_TASK_zgetrf_percol_diag: STARPU_NONE can not be equal to 0\n" ); assert( 0 ); diff --git a/runtime/starpu/include/chameleon_starpu.h.in b/runtime/starpu/include/chameleon_starpu.h.in index 41949dfbb7c345050a5260b47646276c7af57002..6c4632da84520449a2e2c9f96fedef2209d196e9 100644 --- a/runtime/starpu/include/chameleon_starpu.h.in +++ b/runtime/starpu/include/chameleon_starpu.h.in @@ -40,6 +40,7 @@ #cmakedefine HAVE_STARPU_SET_LIMIT_SUBMITTED_TASKS #cmakedefine HAVE_STARPU_REUSE_DATA_ON_NODE #cmakedefine HAVE_STARPU_PARALLEL_WORKER +#cmakedefine HAVE_STARPU_NONE_NONZERO #cmakedefine HAVE_STARPU_MPI_DATA_MIGRATE #cmakedefine HAVE_STARPU_MPI_DATA_REGISTER diff --git a/testing/CTestLists.cmake b/testing/CTestLists.cmake index a1b637f681ed0bb82a981e65cd26310b03b514b7..c185e50b525c719a7b62422f89d5d5b9a259c435 100644 --- a/testing/CTestLists.cmake +++ b/testing/CTestLists.cmake @@ -88,28 +88,25 @@ if (NOT CHAMELEON_SIMULATION) if ( CHAMELEON_SCHED_STARPU ) add_test( test_${cat}_${prec}getrf_nopivpercol ${PREFIX} ${CMD} -c -t ${THREADS} -g ${gpus} -P 1 --diag=ChamUnit -f input/getrf_nopiv.in ) set_tests_properties( test_${cat}_${prec}getrf_nopivpercol - PROPERTIES ENVIRONMENT "CHAMELEON_GETRF_ALGO=nopivpercolumn;CHAMELEON_GETRF_BATCH_SIZE=1" ) + PROPERTIES ENVIRONMENT "CHAMELEON_GETRF_ALGO=nopivpercolumn;CHAMELEON_GETRF_BATCH_SIZE=0" ) - add_test( test_${cat}_${prec}getrf_ppivpercol ${PREFIX} ${CMD} -c -t ${THREADS} -g ${gpus} -P 1 -f input/getrf_nopiv.in ) - set_tests_properties( test_${cat}_${prec}getrf_ppivpercol - PROPERTIES ENVIRONMENT "CHAMELEON_GETRF_ALGO=ppivpercolumn;CHAMELEON_GETRF_BATCH_SIZE=1" ) + if ( HAVE_STARPU_NONE_NONZERO ) + add_test( test_${cat}_${prec}getrf_ppivpercol ${PREFIX} ${CMD} -c -t ${THREADS} -g ${gpus} -P 1 -f input/getrf_nopiv.in ) + set_tests_properties( test_${cat}_${prec}getrf_ppivpercol + PROPERTIES ENVIRONMENT "CHAMELEON_GETRF_ALGO=ppivpercolumn;CHAMELEON_GETRF_BATCH_SIZE=0" ) - if ( ${cat} STREQUAL "shm" ) add_test( test_${cat}_${prec}getrf_ppivpercol_batch ${PREFIX} ${CMD} -c -t ${THREADS} -g ${gpus} -P 1 -f input/getrf_nopiv.in ) set_tests_properties( test_${cat}_${prec}getrf_ppivpercol_batch PROPERTIES ENVIRONMENT "CHAMELEON_GETRF_ALGO=ppivpercolumn;CHAMELEON_GETRF_BATCH_SIZE=6" ) - endif() - add_test( test_${cat}_${prec}getrf_ppiv ${PREFIX} ${CMD} -c -t ${THREADS} -g ${gpus} -P 1 -f input/getrf.in ) - set_tests_properties( test_${cat}_${prec}getrf_ppiv - PROPERTIES ENVIRONMENT "CHAMELEON_GETRF_ALGO=ppiv;CHAMELEON_GETRF_BATCH_SIZE=1" ) + add_test( test_${cat}_${prec}getrf_ppiv ${PREFIX} ${CMD} -c -t ${THREADS} -g ${gpus} -P 1 -f input/getrf.in ) + set_tests_properties( test_${cat}_${prec}getrf_ppiv + PROPERTIES ENVIRONMENT "CHAMELEON_GETRF_ALGO=ppiv;CHAMELEON_GETRF_BATCH_SIZE=0" ) - if ( ${cat} STREQUAL "shm" ) add_test( test_${cat}_${prec}getrf_ppiv_batch ${PREFIX} ${CMD} -c -t ${THREADS} -g ${gpus} -P 1 -f input/getrf.in ) set_tests_properties( test_${cat}_${prec}getrf_ppiv_batch - PROPERTIES ENVIRONMENT "CHAMELEON_GETRF_ALGO=ppiv;CHAMELEON_GETRF_BATCH_SIZE=6" ) + PROPERTIES ENVIRONMENT "CHAMELEON_GETRF_ALGO=ppiv;CHAMELEON_GETRF_BATCH_SIZE=6" ) endif() - endif() list( REMOVE_ITEM TESTSTMP print gepdf_qr )