Skip to content

Commit

Permalink
Update CI in OpenMPTarget to use llvm-17 (kokkos#6472)
Browse files Browse the repository at this point in the history
* OpenMPTarget: Update CI to clang-17.

* OpenMPTarget: Update clang version for CI.

* OpenMPTarget: update cmake version in CI.

* OpenMPTarget: Disable reducers_size_t.

* OpenMPTarget: Block non working unit test with clang/17.

* OpenMPTarget: Update cmake version in CI.

* Apply suggestions from code review

Co-authored-by: Daniel Arndt <arndtd@ornl.gov>

---------

Co-authored-by: Rahulkumar Gayatri <rgayatri@lbl.gov>
Co-authored-by: Christian Trott <crtrott@sandia.gov>
Co-authored-by: Daniel Arndt <arndtd@ornl.gov>
  • Loading branch information
4 people committed Oct 12, 2023
1 parent c586fa1 commit 04a6310
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 4 deletions.
7 changes: 7 additions & 0 deletions algorithms/unit_tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,13 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;HIP;SYCL;OpenMPTarget)
endif()
endforeach()

# FIXME_OPENMPTARGET - remove sort test as it leads to ICE with clang/16 and above at compile time.
if(KOKKOS_ENABLE_OPENMPTARGET AND KOKKOS_CXX_COMPILER_ID STREQUAL "Clang" AND KOKKOS_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0.0)
list(REMOVE_ITEM ALGO_SORT_SOURCES
TestSort.cpp
)
endif()

# FIXME_OPENMPTARGET remove tests for OpenMPTarget because in these cases
# the impl needs to use either Kokkos or tailored reducers
# which results in runtime memory errors.
Expand Down
35 changes: 34 additions & 1 deletion core/unit_test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,11 @@ SET(KOKKOS_OPENMP_FEATURE_LEVEL 999)
SET(KOKKOS_OPENMP_NAME OpenMP)

# FIXME_OPENMPTARGET - The NVIDIA HPC compiler nvc++ only compiles the first 8 incremental tests for the OpenMPTarget backend.
# FIXME_OPENMPTARGET - Clang version 17 fails to compile incremental tests past 12 with verion 17. There is PR for this in upstream already. So it should be fixed by version 18.
IF(KOKKOS_CXX_COMPILER_ID STREQUAL NVHPC)
SET(KOKKOS_OPENMPTARGET_FEATURE_LEVEL 10)
ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL "Clang" AND KOKKOS_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 17.0.0)
SET(KOKKOS_OPENMPTARGET_FEATURE_LEVEL 12)
ELSE()
SET(KOKKOS_OPENMPTARGET_FEATURE_LEVEL 14)
ENDIF()
Expand Down Expand Up @@ -362,13 +365,28 @@ foreach(PairDeviceSpace HIP-HostPinned;HIP-Managed;Cuda-HostPinned;Cuda-UVM;SYCL
endif()
endforeach()


# Disable non-compiling tests based on clang version.
if(Kokkos_ENABLE_OPENMPTARGET)
list(REMOVE_ITEM OpenMPTarget_SOURCES
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_Other.cpp
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_TeamCombinedReducers.cpp
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_TeamReductionScan.cpp
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_WorkGraph.cpp
IF (KOKKOS_CXX_COMPILER_ID STREQUAL "Clang" AND KOKKOS_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0.0)
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_SubView_c01.cpp
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_SubView_c02.cpp
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_SubView_c03.cpp
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_Reducers_d.cpp
endif()
IF (KOKKOS_CXX_COMPILER_ID STREQUAL "Clang" AND KOKKOS_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0.0)
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_AtomicOperations_shared.cpp
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_MinMaxClamp.cpp
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_TeamVectorRange.cpp
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_LocalDeepCopy.cpp
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_TeamScan.cpp
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_TeamBasic.cpp
${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_ViewAPI_e.cpp
endif()
# FIXME_OPENMPTARGET_CRAY: The following tests fail at compile time when the OpenMPTarget backend is enabled with the Cray compiler.
# Atomic compare/exchange is used in these tests which can be one of the reasons for the compilation failures.
IF(KOKKOS_CXX_COMPILER_ID STREQUAL Cray)
Expand All @@ -379,6 +397,21 @@ if(Kokkos_ENABLE_OPENMPTARGET)
)
endif()

# FIXME_OPENMPTARGET - MinMaxClamp fails even with the host backend when OpenMPTarget backend is enabled.
# FIXME_OPENMPTARGET - Unsure of the reason as of now.
IF (KOKKOS_CXX_COMPILER_ID STREQUAL "Clang" AND KOKKOS_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0.0)
IF(Kokkos_ENABLE_OPENMPTARGET AND Kokkos_ENABLE_OPENMP)
list(REMOVE_ITEM OpenMP_SOURCES
${CMAKE_CURRENT_BINARY_DIR}/openmp/TestOpenMP_MinMaxClamp.cpp
)
ENDIF()
IF(Kokkos_ENABLE_OPENMPTARGET AND Kokkos_ENABLE_SERIAL)
list(REMOVE_ITEM Serial_SOURCES1
${CMAKE_CURRENT_BINARY_DIR}/serial/TestSerial_MinMaxClamp.cpp
)
ENDIF()
ENDIF()

if(Kokkos_ENABLE_OPENACC)
list(REMOVE_ITEM OpenACC_SOURCES
${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_AtomicOperations_complexdouble.cpp
Expand Down
3 changes: 2 additions & 1 deletion core/unit_test/TestReducers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1210,7 +1210,8 @@ struct TestReducers {
// FIXME_OPENMPTARGET - The minmaxloc test fails llvm < 13 version,
// test_minmaxloc_2d requires custom reductions
#if defined(KOKKOS_ENABLE_OPENMPTARGET)
#if defined(KOKKOS_COMPILER_CLANG) && (KOKKOS_COMPILER_CLANG >= 1300)
#if defined(KOKKOS_COMPILER_CLANG) && (KOKKOS_COMPILER_CLANG >= 1300) && \
(KOKKOS_COMPILER_CLANG <= 1700)
test_minmaxloc(10007);
#else
if (!std::is_same_v<ExecSpace, Kokkos::Experimental::OpenMPTarget>)
Expand Down
4 changes: 4 additions & 0 deletions core/unit_test/TestReducers_b.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,12 @@

#include <TestReducers.hpp>

// FIXME_OPENMPTARGET - Fails at runtime post clang/16
#if defined(KOKKOS_ENABLE_OPENMPTARGER) && defined(KOKKOS_COMPILER_CLANG) && \
(KOKKOS_COMPILER_CLANG >= 1600)
namespace Test {
TEST(TEST_CATEGORY, reducers_size_t) {
TestReducers<size_t, TEST_EXECSPACE>::execute_integer();
}
} // namespace Test
#endif
4 changes: 2 additions & 2 deletions scripts/docker/Dockerfile.openmptarget
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ RUN KEYDUMP_URL=https://cloud.cees.ornl.gov/download && \
gpg --verify ${KEYDUMP_FILE}.sig ${KEYDUMP_FILE} && \
rm ${KEYDUMP_FILE}*

ARG CMAKE_VERSION=3.18.5
ARG CMAKE_VERSION=3.27.7
ENV CMAKE_DIR=/opt/cmake
RUN CMAKE_URL=https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION} && \
CMAKE_SCRIPT=cmake-${CMAKE_VERSION}-Linux-x86_64.sh && \
Expand All @@ -38,7 +38,7 @@ RUN CMAKE_URL=https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSIO
rm ${CMAKE_SCRIPT}
ENV PATH=${CMAKE_DIR}/bin:$PATH

ARG LLVM_VERSION=llvmorg-15.0.0
ARG LLVM_VERSION=llvmorg-17.0.1
ENV LLVM_DIR=/opt/llvm
RUN LLVM_URL=https://github.com/llvm/llvm-project/archive &&\
LLVM_ARCHIVE=${LLVM_VERSION}.tar.gz &&\
Expand Down

0 comments on commit 04a6310

Please sign in to comment.