diff --git a/doc/user/chapters/installing.org b/doc/user/chapters/installing.org index 5e2edd43bf946151d0c15b29c6a0dcc8557e669c..2a50258bfcc869163d8c0a6b08053212fab9de63 100644 --- a/doc/user/chapters/installing.org +++ b/doc/user/chapters/installing.org @@ -31,7 +31,7 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and To install Chameleon's libraries, header files, and executables, one needs: - - CMake (version 2.8 minimum): the build system + - CMake (version 3.3 minimum, 3.17 to compile with the H-Mat support): the build system - C and Fortran compilers: GNU compiler suite, Clang, Intel or IBM can be used - python: to generate files in the different precisions @@ -263,7 +263,9 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and <<sec:ug:cmake>> Compilation of Chameleon libraries and executables are done with CMake (http://www.cmake.org/). This version has been tested with - CMake 3.10.2 but any version superior to 2.8 should be fine. + CMake 3.10.2 but any version superior to 3.3 should be fine, + unless you enable the H-Mat support that requires the minimum + revision to be 3.17. Here the steps to configure, build, test and install 1. configure: diff --git a/runtime/starpu/control/runtime_descriptor.c b/runtime/starpu/control/runtime_descriptor.c index f8db757c4067a4a47603f8862e83a4600e42ebbf..ee0698dff7f140da49c46f6cde749320256a8dea 100644 --- a/runtime/starpu/control/runtime_descriptor.c +++ b/runtime/starpu/control/runtime_descriptor.c @@ -448,39 +448,42 @@ void *RUNTIME_data_getaddr( const CHAM_desc_t *A, int m, int n ) starpu_data_handle_t *ptrtile = A->schedopt; ptrtile += ((int64_t)A->lmt) * nn + mm; - if (*ptrtile == NULL) { - int home_node = -1; - int myrank = A->myrank; - int owner = A->get_rankof( A, m, n ); - CHAM_tile_t *tile = A->get_blktile( A, m, n ); - - if ( myrank == owner ) { - if ( (tile->format & CHAMELEON_TILE_HMAT) || - (tile->mat != NULL) ) - { - home_node = STARPU_MAIN_RAM; - } + if ( *ptrtile != NULL ) { + return *ptrtile; + } + + int home_node = -1; + int myrank = A->myrank; + int owner = A->get_rankof( A, m, n ); + CHAM_tile_t *tile = A->get_blktile( A, m, n ); + + if ( myrank == owner ) { + if ( (tile->format & CHAMELEON_TILE_HMAT) || + (tile->mat != NULL) ) + { + home_node = STARPU_MAIN_RAM; } + } - starpu_cham_tile_register( ptrtile, home_node, tile, A->dtyp ); + starpu_cham_tile_register( ptrtile, home_node, tile, A->dtyp ); #if defined(HAVE_STARPU_DATA_SET_OOC_FLAG) - if ( A->ooc == 0 ) { - starpu_data_set_ooc_flag( *ptrtile, 0 ); - } + if ( A->ooc == 0 ) { + starpu_data_set_ooc_flag( *ptrtile, 0 ); + } #endif #if defined(HAVE_STARPU_DATA_SET_COORDINATES) - starpu_data_set_coordinates( *ptrtile, 2, m, n ); + starpu_data_set_coordinates( *ptrtile, 2, m, n ); #endif #if defined(CHAMELEON_USE_MPI) - { - int64_t block_ind = A->lmt * nn + mm; - starpu_mpi_data_register(*ptrtile, (((int64_t)A->id) << tag_sep) | block_ind, owner); - } -#endif /* defined(CHAMELEON_USE_MPI) */ + { + int64_t block_ind = A->lmt * nn + mm; + starpu_mpi_data_register(*ptrtile, (((int64_t)A->id) << tag_sep) | block_ind, owner); } +#endif /* defined(CHAMELEON_USE_MPI) */ + assert( *ptrtile ); return *ptrtile; } diff --git a/testing/testing_zcheck.c b/testing/testing_zcheck.c index fa92829bb871f6df36d18509d65df224332d7aca..4b6fbadd2f0c1122786c1fc45e268170baabccae 100644 --- a/testing/testing_zcheck.c +++ b/testing/testing_zcheck.c @@ -90,19 +90,19 @@ int check_zmatrices_std( run_arg_list_t *args, cham_uplo_t uplo, int M, int N, C } else { Anorm = LAPACKE_zlantr_work( LAPACK_COL_MAJOR, 'M', chameleon_lapack_const(uplo), 'N', - M, N, A, LDA, work ); + M, N, A, LDA, work ); } /* Computes the difference with the core function */ - CORE_zgeadd( ChamNoTrans, M, N, 1, A, LDA, -1, B, LDA ); + CORE_zgeadd( ChamNoTrans, M, N, 1, A, LDA, -1, B, LDB ); /* Computes the residual's norm */ if ( uplo == ChamUpperLower ) { - Rnorm = LAPACKE_zlange_work( LAPACK_COL_MAJOR, 'M', M, N, B, LDA, work ); + Rnorm = LAPACKE_zlange_work( LAPACK_COL_MAJOR, 'M', M, N, B, LDB, work ); } else { Rnorm = LAPACKE_zlantr_work( LAPACK_COL_MAJOR, 'M', chameleon_lapack_const(uplo), 'N', - M, N, B, LDA, work ); + M, N, B, LDB, work ); } if ( Anorm != 0. ) { result = Rnorm / (Anorm * eps);