From 3c6302e6bd28c2bceb6b3b4e4a835a55bbad34ca Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Fri, 16 Oct 2026 15:45:53 +0000 Subject: [PATCH 1/2] use more recent versions of nvhpc in CI update supported nvhpc versions in README.md --- .devcontainer/gcc11-cuda12.9/devcontainer.json | 2 +- .devcontainer/gcc12-cuda12.9/devcontainer.json | 2 +- .devcontainer/gcc13-cuda12.9/devcontainer.json | 2 +- .devcontainer/gcc14-cuda12.9/devcontainer.json | 2 +- .devcontainer/gcc15-cuda12.9/devcontainer.json | 2 +- .devcontainer/llvm16-cuda12.9/devcontainer.json | 2 +- .devcontainer/llvm22-cuda12.0/devcontainer.json | 2 +- .devcontainer/llvm22-cuda12.9/devcontainer.json | 2 +- .devcontainer/llvm22-cuda13.2/devcontainer.json | 2 +- .../{nvhpc26.1 => nvhpc26.5}/devcontainer.json | 2 +- .../{nvhpc26.3 => nvhpc26.9}/devcontainer.json | 2 +- .github/workflows/ci.gpu.yml | 10 +++++----- README.md | 2 +- 13 files changed, 17 insertions(+), 17 deletions(-) rename .devcontainer/{nvhpc26.1 => nvhpc26.5}/devcontainer.json (97%) rename .devcontainer/{nvhpc26.3 => nvhpc26.9}/devcontainer.json (97%) diff --git a/.devcontainer/gcc11-cuda12.9/devcontainer.json b/.devcontainer/gcc11-cuda12.9/devcontainer.json index 93e4bfc7f..8bb11d44b 100644 --- a/.devcontainer/gcc11-cuda12.9/devcontainer.json +++ b/.devcontainer/gcc11-cuda12.9/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "rapidsai/devcontainers:26.08-cpp-gcc11-cuda12.9", + "image": "rapidsai/devcontainers:26.12-cpp-gcc11-cuda12.9", "hostRequirements": { "gpu": "optional" }, diff --git a/.devcontainer/gcc12-cuda12.9/devcontainer.json b/.devcontainer/gcc12-cuda12.9/devcontainer.json index 23f730cd7..bc0c2c5d4 100644 --- a/.devcontainer/gcc12-cuda12.9/devcontainer.json +++ b/.devcontainer/gcc12-cuda12.9/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "rapidsai/devcontainers:26.08-cpp-gcc12-cuda12.9", + "image": "rapidsai/devcontainers:26.12-cpp-gcc12-cuda12.9", "hostRequirements": { "gpu": "optional" }, diff --git a/.devcontainer/gcc13-cuda12.9/devcontainer.json b/.devcontainer/gcc13-cuda12.9/devcontainer.json index bfa5181cc..76a707979 100644 --- a/.devcontainer/gcc13-cuda12.9/devcontainer.json +++ b/.devcontainer/gcc13-cuda12.9/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "rapidsai/devcontainers:26.08-cpp-gcc13-cuda12.9", + "image": "rapidsai/devcontainers:26.12-cpp-gcc13-cuda12.9", "hostRequirements": { "gpu": "optional" }, diff --git a/.devcontainer/gcc14-cuda12.9/devcontainer.json b/.devcontainer/gcc14-cuda12.9/devcontainer.json index f75488e15..c245bbd79 100644 --- a/.devcontainer/gcc14-cuda12.9/devcontainer.json +++ b/.devcontainer/gcc14-cuda12.9/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "rapidsai/devcontainers:26.08-cpp-gcc14-cuda12.9", + "image": "rapidsai/devcontainers:26.12-cpp-gcc14-cuda12.9", "hostRequirements": { "gpu": "optional" }, diff --git a/.devcontainer/gcc15-cuda12.9/devcontainer.json b/.devcontainer/gcc15-cuda12.9/devcontainer.json index 34e821a83..cdc71a127 100644 --- a/.devcontainer/gcc15-cuda12.9/devcontainer.json +++ b/.devcontainer/gcc15-cuda12.9/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "rapidsai/devcontainers:26.08-cpp-gcc15-cuda12.9", + "image": "rapidsai/devcontainers:26.12-cpp-gcc15-cuda12.9", "hostRequirements": { "gpu": "optional" }, diff --git a/.devcontainer/llvm16-cuda12.9/devcontainer.json b/.devcontainer/llvm16-cuda12.9/devcontainer.json index bf6015371..ff84e9845 100644 --- a/.devcontainer/llvm16-cuda12.9/devcontainer.json +++ b/.devcontainer/llvm16-cuda12.9/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "rapidsai/devcontainers:26.08-cpp-llvm16-cuda12.9", + "image": "rapidsai/devcontainers:26.12-cpp-llvm16-cuda12.9", "hostRequirements": { "gpu": "optional" }, diff --git a/.devcontainer/llvm22-cuda12.0/devcontainer.json b/.devcontainer/llvm22-cuda12.0/devcontainer.json index 169e88864..bb8b08ba3 100644 --- a/.devcontainer/llvm22-cuda12.0/devcontainer.json +++ b/.devcontainer/llvm22-cuda12.0/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "rapidsai/devcontainers:26.08-cpp-llvm22-cuda12.0", + "image": "rapidsai/devcontainers:26.12-cpp-llvm22-cuda12.0", "hostRequirements": { "gpu": "optional" }, diff --git a/.devcontainer/llvm22-cuda12.9/devcontainer.json b/.devcontainer/llvm22-cuda12.9/devcontainer.json index 977d2f5cb..ef600841c 100644 --- a/.devcontainer/llvm22-cuda12.9/devcontainer.json +++ b/.devcontainer/llvm22-cuda12.9/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "rapidsai/devcontainers:26.08-cpp-llvm22-cuda12.9", + "image": "rapidsai/devcontainers:26.12-cpp-llvm22-cuda12.9", "hostRequirements": { "gpu": "optional" }, diff --git a/.devcontainer/llvm22-cuda13.2/devcontainer.json b/.devcontainer/llvm22-cuda13.2/devcontainer.json index 9ce013676..80ab674fb 100644 --- a/.devcontainer/llvm22-cuda13.2/devcontainer.json +++ b/.devcontainer/llvm22-cuda13.2/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "rapidsai/devcontainers:26.08-cpp-llvm22-cuda13.2", + "image": "rapidsai/devcontainers:26.12-cpp-llvm22-cuda13.2", "hostRequirements": { "gpu": "optional" }, diff --git a/.devcontainer/nvhpc26.1/devcontainer.json b/.devcontainer/nvhpc26.5/devcontainer.json similarity index 97% rename from .devcontainer/nvhpc26.1/devcontainer.json rename to .devcontainer/nvhpc26.5/devcontainer.json index 13a4fb8b3..094ca060a 100644 --- a/.devcontainer/nvhpc26.1/devcontainer.json +++ b/.devcontainer/nvhpc26.5/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "rapidsai/devcontainers:26.08-cpp-nvhpc26.1", + "image": "rapidsai/devcontainers:26.12-cpp-nvhpc26.5", "hostRequirements": { "gpu": "optional" }, diff --git a/.devcontainer/nvhpc26.3/devcontainer.json b/.devcontainer/nvhpc26.9/devcontainer.json similarity index 97% rename from .devcontainer/nvhpc26.3/devcontainer.json rename to .devcontainer/nvhpc26.9/devcontainer.json index a208e4fcb..530e8eae0 100644 --- a/.devcontainer/nvhpc26.3/devcontainer.json +++ b/.devcontainer/nvhpc26.9/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "rapidsai/devcontainers:26.08-cpp-nvhpc26.3", + "image": "rapidsai/devcontainers:26.12-cpp-nvhpc26.9", "hostRequirements": { "gpu": "optional" }, diff --git a/.github/workflows/ci.gpu.yml b/.github/workflows/ci.gpu.yml index 950c7e1d9..493d9cf76 100644 --- a/.github/workflows/ci.gpu.yml +++ b/.github/workflows/ci.gpu.yml @@ -21,14 +21,14 @@ jobs: include: - { name: "clang 22", cuda: "12.0", cxx: "clang++", build: "Release", tag: "llvm22-cuda12.0", gpu: "v100", sm: "70", driver: "latest", arch: "amd64", flags: "-Wno-deprecated-declarations" } - { name: "clang 22", cuda: "12.9", cxx: "clang++", build: "Release", tag: "llvm22-cuda12.9", gpu: "v100", sm: "70", driver: "latest", arch: "amd64", flags: "" } - - { name: "nvc++ 26.1", cuda: "13.1", cxx: "mpic++", build: "Release", tag: "nvhpc26.1", gpu: "l4", sm: "75", driver: "latest", arch: "amd64", flags: "" } - - { name: "nvc++ 26.1", cuda: "13.1", cxx: "mpic++", build: "Debug", tag: "nvhpc26.1", gpu: "l4", sm: "75", driver: "latest", arch: "amd64", flags: "" } - - { name: "nvc++ 26.3", cuda: "13.1", cxx: "mpic++", build: "Release", tag: "nvhpc26.3", gpu: "l4", sm: "75", driver: "latest", arch: "amd64", flags: "" } - - { name: "nvc++ 26.3", cuda: "13.1", cxx: "mpic++", build: "Debug", tag: "nvhpc26.3", gpu: "l4", sm: "75", driver: "latest", arch: "amd64", flags: "" } + - { name: "nvc++ 26.5", cuda: "13.2", cxx: "mpic++", build: "Release", tag: "nvhpc26.5", gpu: "l4", sm: "75", driver: "latest", arch: "amd64", flags: "" } + - { name: "nvc++ 26.5", cuda: "13.2", cxx: "mpic++", build: "Debug", tag: "nvhpc26.5", gpu: "l4", sm: "75", driver: "latest", arch: "amd64", flags: "" } + - { name: "nvc++ 26.9", cuda: "13.3", cxx: "mpic++", build: "Release", tag: "nvhpc26.9", gpu: "l4", sm: "75", driver: "latest", arch: "amd64", flags: "" } + - { name: "nvc++ 26.9", cuda: "13.3", cxx: "mpic++", build: "Debug", tag: "nvhpc26.9", gpu: "l4", sm: "75", driver: "latest", arch: "amd64", flags: "" } runs-on: linux-${{ matrix.arch }}-gpu-${{ matrix.gpu }}-${{ matrix.driver }}-1 container: options: -u root - image: rapidsai/devcontainers:26.08-cpp-${{ matrix.tag }} + image: rapidsai/devcontainers:26.12-cpp-${{ matrix.tag }} env: NVIDIA_VISIBLE_DEVICES: "${{ env.NVIDIA_VISIBLE_DEVICES }}" permissions: diff --git a/README.md b/README.md index aa7cafbc1..44356a4ba 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ int main() { | Clang | 16 | | | MSVC | 14.43 | | | Xcode (Apple Clang) | 16 | | -| nvc++ | 25.9 | required for [GPU support](#gpu-support) | +| nvc++ | 26.5 | required for [GPU support](#gpu-support) | Requires `-std=c++20` or later. From baf99c8fc83862c81db919d8eb16bd6efbd4059d Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Sat, 17 Oct 2026 04:51:03 +0000 Subject: [PATCH 2/2] fix circular include caused by nvhpc's `` header including stdexec --- include/stdexec/__detail/__execution_legacy.hpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/include/stdexec/__detail/__execution_legacy.hpp b/include/stdexec/__detail/__execution_legacy.hpp index e4a835f7e..e9574ba76 100644 --- a/include/stdexec/__detail/__execution_legacy.hpp +++ b/include/stdexec/__detail/__execution_legacy.hpp @@ -18,7 +18,17 @@ #include "__config.hpp" #if !STDEXEC_NO_STDCPP_EXECUTION_POLICY() -# include // IWYU pragma: keep +// NVHPC's re-includes . Including that from here, while +// headers such as __bulk.hpp are only partially parsed, creates an include cycle that leaves +// those headers' contents undefined for the headers pulled in by the cycle. Suppress NVHPC's +// stdexec include; it is still honored the next time is included. +# if STDEXEC_NVHPC() && !defined(_NVHPC_STDEXEC_INCLUDE_IN_PROGRESS) +# define _NVHPC_STDEXEC_INCLUDE_IN_PROGRESS +# include // IWYU pragma: keep +# undef _NVHPC_STDEXEC_INCLUDE_IN_PROGRESS +# else +# include // IWYU pragma: keep +# endif #endif #include "__prologue.hpp"