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. 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"