From fe1b5d4662fc328dc86ad3575bfe3a079d9ae7d2 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Tue, 23 Mar 2021 10:59:57 +0100 Subject: [PATCH] Daint: Update daint modules after upgrade (CUDA 11.0) (#1613) 2 tests disabled: - boundary_conditions_gpu because of #1522 - test_tuple.cu conversion constructor for Clang 11.0.0 because of #1615 --- README.md | 11 +++++++---- jenkins/envs/daint.sh | 4 ++-- jenkins/envs/daint_nvcc_clang.sh | 3 ++- jenkins/envs/daint_nvcc_gcc.sh | 1 + jenkins/envs/dom_nvcc_gcc.sh | 4 +--- tests/regression/CMakeLists.txt | 22 ++++++++++++++-------- tests/unit_tests/common/test_tuple.cu | 6 +++++- 7 files changed, 32 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index a1a76a4211..15983773a7 100644 --- a/README.md +++ b/README.md @@ -47,15 +47,18 @@ The GridTools libraries are currently nightly tested with the following compiler | Compiler | Backend | Tested on | Comments | | --- | --- | --- | --- | -| Cray clang version 10.0.2 | all backends | Piz Daint | P100 GPU | -| GNU 8.3.0 + NVCC 10.2 | all backends | Piz Daint | P100 GPU | -| GNU 8.3.0 + NVCC 11.0 | all backends | Dom | P100 GPU | +| Cray clang version 11.0.0 | all backends | Piz Daint | P100 GPU | +| GNU 9.3.0 + NVCC 11.0 | all backends | Piz Daint | P100 GPU | +| GNU 9.3.0 + NVCC 11.0 | all backends | Dom | P100 GPU | | Clang 7.0.1 + NVCC 10.2 | all backends | Piz Daint | GPU compilation in NVCC-CUDA mode, P100 GPU | | GNU 8.3.0 + NVCC 10.1 | all backends | Tsa | V100 GPU | ##### Known issues -Some tests are failing with ROCm3.8.0 (Clang 11). +- Some tests are failing with ROCm3.8.0 (Clang 11). +- CUDA 11.0.x has a severe issue, see https://github.com/GridTools/gridtools/issues/1522. Under certain conditions, GridTools code will not compile for this version of CUDA. CUDA 11.1.x and later should not be affected by this issue. +- Cray Clang version 11.0.0 has a problem with the `gridtools::tuple` conversion constructor, see https://github.com/GridTools/gridtools/issues/1615. + ##### Officially not supported (no workarounds implemented and planned) diff --git a/jenkins/envs/daint.sh b/jenkins/envs/daint.sh index f59e5892ca..4059b588bd 100644 --- a/jenkins/envs/daint.sh +++ b/jenkins/envs/daint.sh @@ -17,8 +17,8 @@ function module() { module load daint-gpu module load cudatoolkit -module rm CMake -module load /users/jenkins/easybuild/daint/haswell/modules/all/CMake/3.14.5 +module load CMake + export BOOST_ROOT=/project/c14/install/daint/boost/boost_1_67_0/ export CUDATOOLKIT_HOME=$CUDA_PATH diff --git a/jenkins/envs/daint_nvcc_clang.sh b/jenkins/envs/daint_nvcc_clang.sh index 58601ef5dd..4ea1fb5893 100644 --- a/jenkins/envs/daint_nvcc_clang.sh +++ b/jenkins/envs/daint_nvcc_clang.sh @@ -2,8 +2,9 @@ source $(dirname "$BASH_SOURCE")/daint.sh +module switch cudatoolkit/10.2.89_3.29-7.0.2.1_3.5__g67354b4 module load /users/vogtha/modules/compilers/clang/7.0.1 -module load gcc +module load gcc/8.3.0 export CXX=$(which clang++) export CC=$(which clang) diff --git a/jenkins/envs/daint_nvcc_gcc.sh b/jenkins/envs/daint_nvcc_gcc.sh index 9e231d4a0b..048485dc28 100644 --- a/jenkins/envs/daint_nvcc_gcc.sh +++ b/jenkins/envs/daint_nvcc_gcc.sh @@ -3,6 +3,7 @@ source $(dirname "$BASH_SOURCE")/daint.sh module swap PrgEnv-cray PrgEnv-gnu +module load cdt-cuda if [ "$build_type" != "debug" ]; then module load HPX/1.5.0-CrayGNU-20.08-cuda diff --git a/jenkins/envs/dom_nvcc_gcc.sh b/jenkins/envs/dom_nvcc_gcc.sh index b654136c46..e647e8710e 100644 --- a/jenkins/envs/dom_nvcc_gcc.sh +++ b/jenkins/envs/dom_nvcc_gcc.sh @@ -2,10 +2,8 @@ source $(dirname "$BASH_SOURCE")/dom.sh -module switch cudatoolkit cudatoolkit/11.0.2_3.33-7.0.2.1_3.1__g1ba0366 - module swap PrgEnv-cray PrgEnv-gnu -module switch gcc/8.3.0 +module load cdt-cuda export CXX=$(which CC) export CC=$(which cc) diff --git a/tests/regression/CMakeLists.txt b/tests/regression/CMakeLists.txt index c7969cf0fe..ce92b0c4eb 100644 --- a/tests/regression/CMakeLists.txt +++ b/tests/regression/CMakeLists.txt @@ -98,19 +98,25 @@ function(gridtools_add_layout_transformation_test) endfunction() function(gridtools_add_boundary_conditions_test) + set(ENABLED_GT_GCL_ARCHS) foreach(arch IN LISTS GT_GCL_ARCHS) - set(tgt bc_testee_${arch}) - add_library(${tgt} INTERFACE) - target_link_libraries(${tgt} INTERFACE boundaries_${arch}) - if (arch STREQUAL gpu) - target_compile_definitions(${tgt} INTERFACE GT_GCL_GPU) - elseif (arch STREQUAL cpu) - target_compile_definitions(${tgt} INTERFACE GT_GCL_CPU) + if(arch STREQUAL gpu AND CMAKE_BUILD_TYPE STREQUAL Debug AND CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 11.0 AND CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11.1) + message(WARNING "CUDA 11.0.x is buggy, see https://github.com/GridTools/gridtools/issues/1522, skipping test boundary_conditions_gpu.") + else() + list(APPEND ENABLED_GT_GCL_ARCHS ${arch}) + set(tgt bc_testee_${arch}) + add_library(${tgt} INTERFACE) + target_link_libraries(${tgt} INTERFACE boundaries_${arch}) + if (arch STREQUAL gpu) + target_compile_definitions(${tgt} INTERFACE GT_GCL_GPU) + elseif (arch STREQUAL cpu) + target_compile_definitions(${tgt} INTERFACE GT_GCL_CPU) + endif() endif() endforeach() gridtools_add_regression_test(boundary_conditions LIB_PREFIX bc_testee - KEYS ${GT_GCL_ARCHS} + KEYS ${ENABLED_GT_GCL_ARCHS} SOURCES boundary_conditions.cpp PERFTEST) endfunction() diff --git a/tests/unit_tests/common/test_tuple.cu b/tests/unit_tests/common/test_tuple.cu index 3fb5b0adef..054b18d06a 100644 --- a/tests/unit_tests/common/test_tuple.cu +++ b/tests/unit_tests/common/test_tuple.cu @@ -34,6 +34,9 @@ namespace gridtools { EXPECT_EQ(2.5, tuple_util::host::get<1>(testee)); } +#if defined(__clang__) && (__clang_major__ == 11 && __clang_minor__ == 0 && __clang_patchlevel__ == 0) + // crashes Clang 11.0.0, see https://github.com/GridTools/gridtools/issues/1615 +#else __device__ tuple element_wise_conversion_ctor(char x, char y) { return {x, y}; } TEST(tuple, element_wise_conversion_ctor) { @@ -51,6 +54,7 @@ namespace gridtools { EXPECT_EQ('a', tuple_util::host::get<0>(testee)); EXPECT_EQ('b', tuple_util::host::get<1>(testee)); } +#endif } // namespace gridtools -#include "test_tuple.cpp" +//#include "test_tuple.cpp"