Skip to content

Commit

Permalink
disable Clang 18 and 19 as CUDA Compiler
Browse files Browse the repository at this point in the history
- intermediate solution
- bugs looks solvable, but there is not time yet
  • Loading branch information
SimeonEhrig authored and psychocoderHPC committed Sep 30, 2024
1 parent 05625df commit 3efff23
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 20 deletions.
22 changes: 11 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,17 +65,17 @@ Supported Compilers

This library uses C++17 (or newer when available).

| Accelerator Back-end | gcc 9.5 (Linux) | gcc 10.4 / 11.1 (Linux) | gcc 12.3 (Linux) | gcc 13.1 (Linux) | clang 9 (Linux) | clang 10/11 (Linux) | clang 12 (Linux) | clang 13 (Linux) | clang 14 (Linux) | clang 15 (Linux) | clang 16 (Linux) | clang 17 (Linux) | clang 18 (Linux) | clang 19 (Linux) | icpx 2024.2 (Linux) | Xcode 13.2.1 / 14.2 / 14.3.1 (macOS) | Visual Studio 2022 (Windows) |
|----------------------|-------------------------------------------|-------------------------------------------|---------------------------------------|---------------------------------------|-------------------------------------------|-------------------------------------------------|-------------------------------------------|---------------------------------------|---------------------------------------|---------------------------------------|---------------------------------------|---------------------------------------|---------------------------------------|---------------------------------------|-------------------------|--------------------------------------|------------------------------|
| Serial | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| OpenMP 2.0+ blocks | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: [^1] | :white_check_mark: | :white_check_mark: |
| OpenMP 2.0+ threads | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: [^1] | :white_check_mark: | :white_check_mark: |
| std::thread | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| TBB | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| CUDA (nvcc) | :white_check_mark: (CUDA 11.2 - 12.5)[^2] | :white_check_mark: (CUDA 11.4 - 12.0)[^2] | :white_check_mark: (CUDA 12.0 - 12.5) | :white_check_mark: (CUDA 12.4 - 12.5) | :white_check_mark: (CUDA 11.6 - 12.0)[^2] | :white_check_mark: (CUDA 11.2, 11.6 - 12.0)[^2] | :white_check_mark: (CUDA 11.6 - 12.0)[^2] | :white_check_mark: (CUDA 11.7 - 12.0) | :white_check_mark: (CUDA 11.8 - 12.0) | :white_check_mark: (CUDA 12.2) | :white_check_mark: (CUDA 12.3) | :white_check_mark: (CUDA 12.4 - 15.5) | :white_check_mark: (CUDA 12.4 - 15.5) | :x: | :x: | - | :x: |
| CUDA (clang) | - | - | - | - | :x: | :x: | :x: | :x: | :white_check_mark: (CUDA 11.2 - 11.5) | :white_check_mark: (CUDA 11.2 - 11.5) | :white_check_mark: (CUDA 11.2 - 11.5) | :white_check_mark: (CUDA 11.2 - 11.8) | :white_check_mark: (CUDA 11.2 - 11.8) | :white_check_mark: (CUDA 11.2 - 12.1) | :x: | - | - |
| HIP (clang) | - | - | - | - | :x: | :x: | :x: | :x: | :white_check_mark: (HIP 5.1 - 5.2) | :white_check_mark: (HIP 5.3 - 5.4) | :white_check_mark: (HIP 5.5 - 5.6) | :white_check_mark: (HIP 5.7 - 6.1) | :white_check_mark: (HIP 6.2) | :x: | :x: | - | - |
| SYCL | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :white_check_mark: [^4] | - | :x: |
| Accelerator Back-end | gcc 9.5 (Linux) | gcc 10.4 / 11.1 (Linux) | gcc 12.3 (Linux) | gcc 13.1 (Linux) | clang 9 (Linux) | clang 10/11 (Linux) | clang 12 (Linux) | clang 13 (Linux) | clang 14 (Linux) | clang 15 (Linux) | clang 16 (Linux) | clang 17 (Linux) | clang 18 (Linux) | clang 19 (Linux) | icpx 2024.2 (Linux) | Xcode 13.2.1 / 14.2 / 14.3.1 (macOS) | Visual Studio 2022 (Windows) |
|----------------------|-------------------------------------------|-------------------------------------------|---------------------------------------|---------------------------------------|-------------------------------------------|-------------------------------------------------|-------------------------------------------|---------------------------------------|---------------------------------------|---------------------------------------|---------------------------------------|---------------------------------------|---------------------------------------|--------------------|-------------------------|--------------------------------------|------------------------------|
| Serial | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| OpenMP 2.0+ blocks | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: [^1] | :white_check_mark: | :white_check_mark: |
| OpenMP 2.0+ threads | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: [^1] | :white_check_mark: | :white_check_mark: |
| std::thread | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| TBB | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| CUDA (nvcc) | :white_check_mark: (CUDA 11.2 - 12.5)[^2] | :white_check_mark: (CUDA 11.4 - 12.0)[^2] | :white_check_mark: (CUDA 12.0 - 12.5) | :white_check_mark: (CUDA 12.4 - 12.5) | :white_check_mark: (CUDA 11.6 - 12.0)[^2] | :white_check_mark: (CUDA 11.2, 11.6 - 12.0)[^2] | :white_check_mark: (CUDA 11.6 - 12.0)[^2] | :white_check_mark: (CUDA 11.7 - 12.0) | :white_check_mark: (CUDA 11.8 - 12.0) | :white_check_mark: (CUDA 12.2) | :white_check_mark: (CUDA 12.3) | :white_check_mark: (CUDA 12.4 - 12.5) | :white_check_mark: (CUDA 12.4 - 12.5) | :x: | :x: | - | :x: |
| CUDA (clang) | - | - | - | - | :x: | :x: | :x: | :x: | :white_check_mark: (CUDA 11.2 - 11.5) | :white_check_mark: (CUDA 11.2 - 11.5) | :white_check_mark: (CUDA 11.2 - 11.5) | :white_check_mark: (CUDA 11.2 - 11.8) | :x: | :x: | :x: | - | - |
| HIP (clang) | - | - | - | - | :x: | :x: | :x: | :x: | :white_check_mark: (HIP 5.1 - 5.2) | :white_check_mark: (HIP 5.3 - 5.4) | :white_check_mark: (HIP 5.5 - 5.6) | :white_check_mark: (HIP 5.7 - 6.1) | :white_check_mark: (HIP 6.2) | :x: | :x: | - | - |
| SYCL | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :white_check_mark: [^4] | - | :x: |

Other compilers or combinations marked with :x: in the table above may work but are not tested in CI and are therefore not explicitly supported.

Expand Down
18 changes: 15 additions & 3 deletions script/job_generator/alpaka_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,23 @@ def alpaka_post_filter(row: List) -> bool:
):
return False

# Clang-CUDA 18 and 19 only supports up to CUDA SDK 12.1
# Clang-CUDA 18 only supports up to CUDA SDK 12.1
# if (
# row_check_name(row, DEVICE_COMPILER, "==", CLANG_CUDA)
# and row_check_version(row, DEVICE_COMPILER, "==", "18")
# and row_check_backend_version(row, ALPAKA_ACC_GPU_CUDA_ENABLE, ">", "12.1")
# ):
# return False

# TODO(SimeonEhrig): disable Clang 18 and 19 as Clang-CUDA because of
# several bugs will be fixed in alpaka 2.0.0
if (
row_check_name(row, DEVICE_COMPILER, "==", CLANG_CUDA)
and row_check_version(row, DEVICE_COMPILER, ">=", "18")
and row_check_backend_version(row, ALPAKA_ACC_GPU_CUDA_ENABLE, ">", "12.1")
and (
row_check_version(row, DEVICE_COMPILER, "==", "18")
or row_check_version(row, DEVICE_COMPILER, "==", "19")
)
and row_check_backend_version(row, ALPAKA_ACC_GPU_CUDA_ENABLE, "!=", OFF_VER)
):
return False

Expand Down
10 changes: 4 additions & 6 deletions script/readme_generator/supported_compilers.json
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@
},
"CUDAnvcc": {
"state": "yes",
"comment": "(CUDA 12.4 - 15.5)"
"comment": "(CUDA 12.4 - 12.5)"
},
"CUDAclang": {
"state": "yes",
Expand Down Expand Up @@ -385,11 +385,10 @@
},
"CUDAnvcc": {
"state": "yes",
"comment": "(CUDA 12.4 - 15.5)"
"comment": "(CUDA 12.4 - 12.5)"
},
"CUDAclang": {
"state": "yes",
"comment": "(CUDA 11.2 - 11.8)"
"state": "no"
},
"hip": {
"state": "yes",
Expand Down Expand Up @@ -419,8 +418,7 @@
"state": "no"
},
"CUDAclang": {
"state": "yes",
"comment": "(CUDA 11.2 - 12.1)"
"state": "no"
},
"hip": {
"state": "no"
Expand Down
4 changes: 4 additions & 0 deletions test/unit/mem/view/src/ViewPlainPtrTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,10 @@ TEMPLATE_LIST_TEST_CASE("viewPlainPtrOperatorTest", "[memView]", alpaka::test::T
alpaka::test::testViewPlainPtrOperators<TestType, float>();
}

// TODO(SimeonEhrig): if C++ 20 is minimum requirement, remove `using`
// replace it with `TEMPLATE_TEST_CASE("Vec generator constructor", "[vec]", std::size_t, int, unsigned, float,
// double)`
// missing feature: parameter of a variadic macro is a C++20 extension
using CreateViewTestTypes = std::tuple<std::array<float, 4>, std::vector<float>>;

TEMPLATE_LIST_TEST_CASE("createView", "[memView]", CreateViewTestTypes)
Expand Down
4 changes: 4 additions & 0 deletions test/unit/vec/src/VecTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,10 @@ TEST_CASE("accessByNameConstexpr", "[vec]")
STATIC_REQUIRE(v4.w() == 4);
}

// TODO(SimeonEhrig): if C++ 20 is minimum requirement, remove `using`
// replace it with `TEMPLATE_TEST_CASE("Vec generator constructor", "[vec]", std::size_t, int, unsigned, float,
// double)`
// missing feature: parameter of a variadic macro is a C++20 extension
using VecGeneratorTestTypes = std::tuple<std::size_t, int, unsigned, float, double>;

TEMPLATE_LIST_TEST_CASE("Vec generator constructor", "[vec]", VecGeneratorTestTypes)
Expand Down

0 comments on commit 3efff23

Please sign in to comment.