add test_scheduler and marble and notification #2214
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI (CPU) | |
on: | |
push: | |
branches: | |
- main | |
- "pull-request/[0-9]+" | |
concurrency: | |
group: ${{ github.workflow }}-on-${{ github.event_name }}-from-${{ github.ref_name }} | |
cancel-in-progress: true | |
jobs: | |
build-cpu: | |
runs-on: ubuntu-latest | |
name: ${{ matrix.name }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { name: "CPU (clang 16, Debug)", build: "Debug", tag: llvm16-cuda12.9, cxxflags: "-stdlib=libc++" } | |
- { name: "CPU (clang 16, Release)", build: "Release", tag: llvm16-cuda12.9, cxxflags: "-stdlib=libc++" } | |
- { name: "CPU (gcc 11, Debug)", build: "Debug", tag: gcc11-cuda12.9, cxxflags: "", } | |
- { name: "CPU (gcc 11, Release)", build: "Release", tag: gcc11-cuda12.9, cxxflags: "", } | |
- { name: "CPU (gcc 11, Release, TSAN)", build: "Release", tag: gcc11-cuda12.9, cxxflags: "-fsanitize=thread" } | |
- { name: "CPU (gcc 11, Release, ASAN)", build: "Release", tag: gcc11-cuda12.9, cxxflags: "-fsanitize=address" } | |
container: | |
options: -u root | |
image: rapidsai/devcontainers:25.10-cpp-${{ matrix.tag }} | |
env: | |
SCCACHE_BUCKET: "rapids-sccache-devs" | |
SCCACHE_REGION: "us-east-2" | |
SCCACHE_S3_KEY_PREFIX: "nvidia-stdexec-dev" | |
SCCACHE_SERVER_PORT: "4225" | |
SCCACHE_SERVER_LOG: "sccache=debug" | |
permissions: | |
id-token: write # This is required for configure-aws-credentials | |
contents: read # This is required for actions/checkout | |
defaults: | |
run: | |
shell: su coder {0} | |
working-directory: /home/coder | |
steps: | |
- name: Checkout stdexec | |
uses: actions/checkout@v4 | |
with: | |
path: stdexec | |
persist-credentials: false | |
- name: Setup environment | |
run: | | |
echo "ARTIFACT_PREFIX=${{runner.os}}-${{matrix.tag}}-amd64" >> "${GITHUB_ENV}" | |
echo "ARTIFACT_SUFFIX=${{github.run_id}}-${{github.run_attempt}}-$RANDOM" >> "${GITHUB_ENV}" | |
- id: sccache-preprocessor-cache | |
name: Setup sccache preprocessor cache | |
uses: actions/cache@v4 | |
with: | |
path: /home/coder/.cache/sccache/preprocessor | |
restore-keys: sccache-preprocessor-cache-${{env.ARTIFACT_PREFIX}} | |
key: sccache-preprocessor-cache-${{env.ARTIFACT_PREFIX}}-${{env.ARTIFACT_SUFFIX}} | |
- id: sccache-dist-toolchains-cache | |
name: Setup sccache-dist client toolchains cache | |
uses: actions/cache@v4 | |
with: | |
path: /home/coder/.cache/sccache-dist-client | |
restore-keys: sccache-toolchains-cache-${{env.ARTIFACT_PREFIX}} | |
key: sccache-toolchains-cache-${{env.ARTIFACT_PREFIX}}-${{env.ARTIFACT_SUFFIX}} | |
- if: github.repository_owner == 'NVIDIA' | |
name: Get AWS credentials for sccache bucket | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-region: us-east-2 | |
role-duration-seconds: 28800 # 8 hours | |
role-to-assume: arn:aws:iam::279114543810:role/gha-oidc-NVIDIA | |
- name: Build and test CPU schedulers | |
env: | |
NVCC_APPEND_FLAGS: "-t=100" | |
SCCACHE_DIST_URL: "https://amd64.linux.sccache.rapids.nvidia.com" | |
SCCACHE_DIST_CONNECT_TIMEOUT: "30" | |
SCCACHE_DIST_FALLBACK_TO_LOCAL_COMPILE: "true" | |
SCCACHE_DIST_KEEPALIVE_ENABLED: "true" | |
SCCACHE_DIST_KEEPALIVE_INTERVAL: "20" | |
SCCACHE_DIST_KEEPALIVE_TIMEOUT: "600" | |
SCCACHE_DIST_REWRITE_INCLUDES_ONLY: ${{ contains(matrix.tag, 'llvm') && 'true' || 'false' }} | |
SCCACHE_DIST_REQUEST_TIMEOUT: "7140" | |
SCCACHE_IDLE_TIMEOUT: "7200" | |
run: | | |
set -ex; | |
devcontainer-utils-install-sccache --repo rapidsai/sccache --version rapids; | |
devcontainer-utils-init-sccache-dist \ | |
--enable-sccache-dist - <<< " \ | |
--auth-type 'token' \ | |
--auth-token '${{ secrets.STDEXEC_BUILD_CLUSTER_SECRET }}' \ | |
"; | |
# Copy source folder into ~/stdexec | |
cp -r "${GITHUB_WORKSPACE}"/stdexec ~/; | |
chown -R coder:coder ~/stdexec; | |
cd ~/stdexec; | |
# Configure | |
cmake -S . -B build -GNinja \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build }} \ | |
-DCMAKE_CXX_FLAGS="${{ matrix.cxxflags }}" \ | |
-DSTDEXEC_ENABLE_TBB:BOOL=${{ !contains(matrix.cxxflags, '-fsanitize') }} \ | |
-DSTDEXEC_ENABLE_ASIO:BOOL=TRUE \ | |
-DSTDEXEC_ASIO_IMPLEMENTATION:STRING=boost \ | |
; | |
# Compile | |
cmake --build build -v -j 512; | |
# Print sccache stats | |
sccache -s; | |
# Tests | |
ctest --test-dir build --verbose --output-on-failure --timeout 300; | |
- if: ${{ !cancelled() }} | |
name: Upload sccache logs | |
uses: actions/upload-artifact@v4 | |
with: | |
name: sccache-client-logs-${{env.ARTIFACT_PREFIX}}-${{env.ARTIFACT_SUFFIX}} | |
path: /tmp/sccache*.log | |
compression-level: 9 | |
ci-cpu: | |
runs-on: ubuntu-latest | |
name: CI (CPU) | |
needs: | |
- build-cpu | |
steps: | |
- run: echo "CI (CPU) success" | |
build-cpu-windows: | |
runs-on: windows-2022 | |
name: ${{ matrix.name }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { compiler: "cl", build: "Debug", name: "CPU (Windows) (msvc, Debug)" } | |
- { compiler: "cl", build: "Release", name: "CPU (Windows) (msvc, Release)" } | |
#- { compiler: "clang++", build: "Debug", name: "CPU (Windows) (clang, Debug)" } | |
#- { compiler: "clang++", build: "Release", name: "CPU (Windows) (clang, Release)" } | |
#- { compiler: "clang-cl", build: "Debug", name: "CPU (Windows) (clang-cl, Debug)" } | |
#- { compiler: "clang-cl", build: "Release", name: "CPU (Windows) (clang-cl, Release)" } | |
steps: | |
- name: Checkout stdexec (Windows) | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Build and test CPU schedulers (Windows) | |
shell: pwsh | |
run: | | |
docker pull rapidsai/devcontainers:25.10-cuda12.9-cl14.43 | |
docker run --isolation=process -v "$(pwd):C:/stdexec" rapidsai/devcontainers:25.10-cuda12.9-cl14.43 powershell C:/stdexec/.github/workflows/test-windows.ps1 -Compiler '${{ matrix.compiler }}' -Config '${{ matrix.build }}' | |
ci-cpu-windows: | |
runs-on: windows-latest | |
name: CI (CPU) (Windows) | |
needs: | |
- build-cpu-windows | |
steps: | |
- run: echo "CI (CPU) (Windows) success" | |
build-cpu-macos: | |
runs-on: macos-15-large | |
name: macos-${{ matrix.name }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { compiler: "clang++", build: "Debug", name: "CPU (MacOS) (clang, Debug)" } | |
- { compiler: "clang++", build: "Release", name: "CPU (MacOS) (clang, Release)" } | |
steps: | |
- name: Checkout stdexec (MacOS) | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Install dependencies | |
run: | | |
brew update | |
brew install ninja | |
shell: bash | |
- name: Build and test CPU schedulers (MacOS) | |
shell: bash | |
run: | | |
mkdir build | |
cmake -S. -Bbuild -GNinja \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build }} \ | |
-DCMAKE_CXX_COMPILER=${{ matrix.compiler }} \ | |
-DSTDEXEC_ENABLE_ASIO:BOOL=TRUE \ | |
-DSTDEXEC_ASIO_IMPLEMENTATION:STRING=boost \ | |
-DCMAKE_CXX_STANDARD=20 | |
cmake --build build/ -v | |
cd build | |
ctest --output-on-failure | |
ci-cpu-macos: | |
runs-on: macos-latest-large | |
name: CI (CPU) (MacOS) | |
needs: | |
- build-cpu-macos | |
steps: | |
- run: echo "CI (CPU) (MacOS) success" |