@@ -12,162 +12,162 @@ concurrency:
1212
1313jobs :
1414
15- # build-cpu:
16- # runs-on: ubuntu-latest
17- # name: ${{ matrix.name }}
18- # strategy:
19- # fail-fast: false
20- # matrix:
21- # include:
22- # - { name: "CPU (clang 16, Debug)", build: "Debug", tag: llvm16-cuda12.9, cxxstd: "20", cxxflags: "-stdlib=libc++" }
23- # - { name: "CPU (clang 16, Debug, c++23)", build: "Debug", tag: llvm16-cuda12.9, cxxstd: "23", cxxflags: "-stdlib=libc++" }
24- # - { name: "CPU (clang 16, Debug, TSAN)", build: "Debug", tag: llvm16-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=thread" }
25- # - { name: "CPU (clang 16, Release)", build: "Release", tag: llvm16-cuda12.9, cxxstd: "20", cxxflags: "-stdlib=libc++" }
26- # - { name: "CPU (clang 16, Release, ASAN)", build: "Release", tag: llvm16-cuda12.9, cxxstd: "20", cxxflags: "-stdlib=libc++ -fsanitize=address -fsanitize-ignorelist=/home/coder/stdexec/sanitizer-ignorelist.txt" }
27- # - { name: "CPU (gcc 11, Debug)", build: "Debug", tag: gcc11-cuda12.9, cxxstd: "20", cxxflags: "", }
28- # - { name: "CPU (gcc 11, Release)", build: "Release", tag: gcc11-cuda12.9, cxxstd: "20", cxxflags: "", }
29- # - { name: "CPU (gcc 11, Release, ASAN)", build: "Release", tag: gcc11-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=address" }
30- # - { name: "CPU (gcc 12, Release, TSAN)", build: "Release", tag: gcc12-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=thread" }
31- # - { name: "CPU (gcc 13, Debug)", build: "Debug", tag: gcc13-cuda12.9, cxxstd: "20", cxxflags: "", }
32- # - { name: "CPU (gcc 14, Debug)", build: "Debug", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "", }
33- # - { name: "CPU (gcc 14, Debug, ASAN)", build: "Debug", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=address" }
34- # - { name: "CPU (gcc 14, Debug, TSAN)", build: "Debug", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=thread" }
35- # - { name: "CPU (gcc 14, Release, LEAK)", build: "Release", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=leak", }
36- # - { name: "CPU (gcc 14, Release, c++23)", build: "Release", tag: gcc14-cuda12.9, cxxstd: "23", cxxflags: "", }
37- # container:
38- # options: -u root
39- # image: rapidsai/devcontainers:26.02-cpp-${{ matrix.tag }}
40- # permissions:
41- # id-token: write # This is required for configure-aws-credentials
42- # contents: read # This is required for actions/checkout
43- # defaults:
44- # run:
45- # shell: su coder {0}
46- # working-directory: /home/coder
47- # steps:
48- # - name: Checkout stdexec
49- # uses: actions/checkout@v4
50- # with:
51- # path: stdexec
52- # persist-credentials: false
53- # - name: Setup environment
54- # run: |
55- # echo "ARTIFACT_PREFIX=${{runner.os}}-${{matrix.tag}}-amd64" >> "${GITHUB_ENV}"
56- # echo "ARTIFACT_SUFFIX=${{github.run_id}}-${{github.run_attempt}}-$RANDOM" >> "${GITHUB_ENV}"
57- # - if: github.repository_owner == 'NVIDIA'
58- # name: Get AWS credentials for sccache bucket
59- # uses: aws-actions/configure-aws-credentials@v4
60- # with:
61- # aws-region: us-east-2
62- # role-duration-seconds: 28800 # 8 hours
63- # role-to-assume: arn:aws:iam::279114543810:role/gha-oidc-NVIDIA
64- # - name: Build and test CPU schedulers
65- # env:
66- # ASAN_OPTIONS: alloc_dealloc_mismatch=0
67- # NVCC_APPEND_FLAGS: "-t=100"
68- # SCCACHE_BUCKET: "rapids-sccache-devs"
69- # SCCACHE_DIST_REQUEST_TIMEOUT: "7140"
70- # SCCACHE_DIST_URL: "https://amd64.linux.sccache.rapids.nvidia.com"
71- # SCCACHE_IDLE_TIMEOUT: "0"
72- # SCCACHE_REGION: "us-east-2"
73- # SCCACHE_S3_KEY_PREFIX: "nvidia-stdexec-dev"
74- # SCCACHE_S3_PREPROCESSOR_CACHE_KEY_PREFIX: "nvidia-stdexec-dev/preprocessor"
75- # SCCACHE_S3_USE_PREPROCESSOR_CACHE_MODE: "true"
76- # SCCACHE_SERVER_LOG: "sccache=debug"
77- # SCCACHE_SERVER_PORT: "4225"
78- # run: |
79- # set -e;
80- # source /etc/profile
81- # set -x;
82-
83- # devcontainer-utils-install-sccache --version rapids;
84-
85- # devcontainer-utils-init-sccache-dist \
86- # --enable-sccache-dist - <<< " \
87- # --auth-type 'token' \
88- # --auth-token '$( \
89- # curl -fsSL -H "Authorization: Bearer $( \
90- # curl -fsSL -H "Authorization: bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \
91- # "${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=token.rapids.nvidia.com" \
92- # | jq -r '.value' \
93- # )" https://token.rapids.nvidia.com/gh/token/exchange \
94- # | jq -r '.token')' \
95- # ";
96-
97- # # Copy source folder into ~/stdexec
98- # cp -r "${GITHUB_WORKSPACE}"/stdexec ~/;
99- # chown -R coder:coder ~/stdexec;
100- # cd ~/stdexec;
101-
102- # # Configure
103- # cmake -S . -B build -GNinja \
104- # -DCMAKE_BUILD_TYPE=${{ matrix.build }} \
105- # -DCMAKE_CXX_FLAGS="${{ matrix.cxxflags }}" \
106- # -DSTDEXEC_ENABLE_TBB:BOOL=${{ !contains(matrix.cxxflags, '-fsanitize') }} \
107- # -DSTDEXEC_ENABLE_ASIO:BOOL=TRUE \
108- # -DSTDEXEC_ASIO_IMPLEMENTATION:STRING=boost \
109- # -DCMAKE_CXX_STANDARD=${{ matrix.cxxstd }} \
110- # -DCMAKE_CXX_EXTENSIONS=OFF \
111- # ;
112-
113- # # Compile
114- # cmake --build build -v -j 512;
115-
116- # # Print sccache stats
117- # sccache -s;
118-
119- # # Tests
120- # SCCACHE_NO_CACHE=1 SCCACHE_NO_DIST_COMPILE=1 \
121- # ctest --test-dir build --verbose --output-on-failure --timeout 60;
122- # - if: ${{ !cancelled() }}
123- # name: Upload sccache logs
124- # uses: actions/upload-artifact@v4
125- # with:
126- # name: sccache-client-logs-${{env.ARTIFACT_PREFIX}}-${{env.ARTIFACT_SUFFIX}}
127- # path: /tmp/sccache*.log
128- # compression-level: 9
129-
130- # ci-cpu:
131- # runs-on: ubuntu-latest
132- # name: CI (CPU)
133- # needs:
134- # - build-cpu
135- # steps:
136- # - run: echo "CI (CPU) success"
137-
138- # build-cpu-windows:
139- # runs-on: windows-2022
140- # name: ${{ matrix.name }}
141- # strategy:
142- # fail-fast: false
143- # matrix:
144- # include:
145- # - { compiler: "cl", build: "Debug", name: "CPU (Windows) (msvc, Debug)" }
146- # - { compiler: "cl", build: "Release", name: "CPU (Windows) (msvc, Release)" }
147- # #- { compiler: "clang++", build: "Debug", name: "CPU (Windows) (clang, Debug)" }
148- # #- { compiler: "clang++", build: "Release", name: "CPU (Windows) (clang, Release)" }
149- # #- { compiler: "clang-cl", build: "Debug", name: "CPU (Windows) (clang-cl, Debug)" }
150- # #- { compiler: "clang-cl", build: "Release", name: "CPU (Windows) (clang-cl, Release)" }
151-
152- # steps:
153- # - name: Checkout stdexec (Windows)
154- # uses: actions/checkout@v4
155- # with:
156- # persist-credentials: false
157-
158- # - name: Build and test CPU schedulers (Windows)
159- # shell: pwsh
160- # run: |
161- # docker pull rapidsai/devcontainers:26.02-cuda12.9-cl14.43
162- # docker run --isolation=process -v "$(pwd):C:/stdexec" rapidsai/devcontainers:26.02-cuda12.9-cl14.43 powershell C:/stdexec/.github/workflows/test-windows.ps1 -Compiler '${{ matrix.compiler }}' -Config '${{ matrix.build }}'
163-
164- # ci-cpu-windows:
165- # runs-on: windows-latest
166- # name: CI (CPU) (Windows)
167- # needs:
168- # - build-cpu-windows
169- # steps:
170- # - run: echo "CI (CPU) (Windows) success"
15+ build-cpu :
16+ runs-on : ubuntu-latest
17+ name : ${{ matrix.name }}
18+ strategy :
19+ fail-fast : false
20+ matrix :
21+ include :
22+ - { name: "CPU (clang 16, Debug)", build: "Debug", tag: llvm16-cuda12.9, cxxstd: "20", cxxflags: "-stdlib=libc++" }
23+ - { name: "CPU (clang 16, Debug, c++23)", build: "Debug", tag: llvm16-cuda12.9, cxxstd: "23", cxxflags: "-stdlib=libc++" }
24+ - { name: "CPU (clang 16, Debug, TSAN)", build: "Debug", tag: llvm16-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=thread" }
25+ - { name: "CPU (clang 16, Release)", build: "Release", tag: llvm16-cuda12.9, cxxstd: "20", cxxflags: "-stdlib=libc++" }
26+ - { name: "CPU (clang 16, Release, ASAN)", build: "Release", tag: llvm16-cuda12.9, cxxstd: "20", cxxflags: "-stdlib=libc++ -fsanitize=address -fsanitize-ignorelist=/home/coder/stdexec/sanitizer-ignorelist.txt" }
27+ - { name: "CPU (gcc 11, Debug)", build: "Debug", tag: gcc11-cuda12.9, cxxstd: "20", cxxflags: "", }
28+ - { name: "CPU (gcc 11, Release)", build: "Release", tag: gcc11-cuda12.9, cxxstd: "20", cxxflags: "", }
29+ - { name: "CPU (gcc 11, Release, ASAN)", build: "Release", tag: gcc11-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=address" }
30+ - { name: "CPU (gcc 12, Release, TSAN)", build: "Release", tag: gcc12-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=thread" }
31+ - { name: "CPU (gcc 13, Debug)", build: "Debug", tag: gcc13-cuda12.9, cxxstd: "20", cxxflags: "", }
32+ - { name: "CPU (gcc 14, Debug)", build: "Debug", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "", }
33+ - { name: "CPU (gcc 14, Debug, ASAN)", build: "Debug", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=address" }
34+ - { name: "CPU (gcc 14, Debug, TSAN)", build: "Debug", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=thread" }
35+ - { name: "CPU (gcc 14, Release, LEAK)", build: "Release", tag: gcc14-cuda12.9, cxxstd: "20", cxxflags: "-fsanitize=leak", }
36+ - { name: "CPU (gcc 14, Release, c++23)", build: "Release", tag: gcc14-cuda12.9, cxxstd: "23", cxxflags: "", }
37+ container :
38+ options : -u root
39+ image : rapidsai/devcontainers:26.02-cpp-${{ matrix.tag }}
40+ permissions :
41+ id-token : write # This is required for configure-aws-credentials
42+ contents : read # This is required for actions/checkout
43+ defaults :
44+ run :
45+ shell : su coder {0}
46+ working-directory : /home/coder
47+ steps :
48+ - name : Checkout stdexec
49+ uses : actions/checkout@v4
50+ with :
51+ path : stdexec
52+ persist-credentials : false
53+ - name : Setup environment
54+ run : |
55+ echo "ARTIFACT_PREFIX=${{runner.os}}-${{matrix.tag}}-amd64" >> "${GITHUB_ENV}"
56+ echo "ARTIFACT_SUFFIX=${{github.run_id}}-${{github.run_attempt}}-$RANDOM" >> "${GITHUB_ENV}"
57+ - if : github.repository_owner == 'NVIDIA'
58+ name : Get AWS credentials for sccache bucket
59+ uses : aws-actions/configure-aws-credentials@v4
60+ with :
61+ aws-region : us-east-2
62+ role-duration-seconds : 28800 # 8 hours
63+ role-to-assume : arn:aws:iam::279114543810:role/gha-oidc-NVIDIA
64+ - name : Build and test CPU schedulers
65+ env :
66+ ASAN_OPTIONS : alloc_dealloc_mismatch=0
67+ NVCC_APPEND_FLAGS : " -t=100"
68+ SCCACHE_BUCKET : " rapids-sccache-devs"
69+ SCCACHE_DIST_REQUEST_TIMEOUT : " 7140"
70+ SCCACHE_DIST_URL : " https://amd64.linux.sccache.rapids.nvidia.com"
71+ SCCACHE_IDLE_TIMEOUT : " 0"
72+ SCCACHE_REGION : " us-east-2"
73+ SCCACHE_S3_KEY_PREFIX : " nvidia-stdexec-dev"
74+ SCCACHE_S3_PREPROCESSOR_CACHE_KEY_PREFIX : " nvidia-stdexec-dev/preprocessor"
75+ SCCACHE_S3_USE_PREPROCESSOR_CACHE_MODE : " true"
76+ SCCACHE_SERVER_LOG : " sccache=debug"
77+ SCCACHE_SERVER_PORT : " 4225"
78+ run : |
79+ set -e;
80+ source /etc/profile
81+ set -x;
82+
83+ devcontainer-utils-install-sccache --version rapids;
84+
85+ devcontainer-utils-init-sccache-dist \
86+ --enable-sccache-dist - <<< " \
87+ --auth-type 'token' \
88+ --auth-token '$( \
89+ curl -fsSL -H "Authorization: Bearer $( \
90+ curl -fsSL -H "Authorization: bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \
91+ "${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=token.rapids.nvidia.com" \
92+ | jq -r '.value' \
93+ )" https://token.rapids.nvidia.com/gh/token/exchange \
94+ | jq -r '.token')' \
95+ ";
96+
97+ # Copy source folder into ~/stdexec
98+ cp -r "${GITHUB_WORKSPACE}"/stdexec ~/;
99+ chown -R coder:coder ~/stdexec;
100+ cd ~/stdexec;
101+
102+ # Configure
103+ cmake -S . -B build -GNinja \
104+ -DCMAKE_BUILD_TYPE=${{ matrix.build }} \
105+ -DCMAKE_CXX_FLAGS="${{ matrix.cxxflags }}" \
106+ -DSTDEXEC_ENABLE_TBB:BOOL=${{ !contains(matrix.cxxflags, '-fsanitize') }} \
107+ -DSTDEXEC_ENABLE_ASIO:BOOL=TRUE \
108+ -DSTDEXEC_ASIO_IMPLEMENTATION:STRING=boost \
109+ -DCMAKE_CXX_STANDARD=${{ matrix.cxxstd }} \
110+ -DCMAKE_CXX_EXTENSIONS=OFF \
111+ ;
112+
113+ # Compile
114+ cmake --build build -v -j 512;
115+
116+ # Print sccache stats
117+ sccache -s;
118+
119+ # Tests
120+ SCCACHE_NO_CACHE=1 SCCACHE_NO_DIST_COMPILE=1 \
121+ ctest --test-dir build --verbose --output-on-failure --timeout 60;
122+ - if : ${{ !cancelled() }}
123+ name : Upload sccache logs
124+ uses : actions/upload-artifact@v4
125+ with :
126+ name : sccache-client-logs-${{env.ARTIFACT_PREFIX}}-${{env.ARTIFACT_SUFFIX}}
127+ path : /tmp/sccache*.log
128+ compression-level : 9
129+
130+ ci-cpu :
131+ runs-on : ubuntu-latest
132+ name : CI (CPU)
133+ needs :
134+ - build-cpu
135+ steps :
136+ - run : echo "CI (CPU) success"
137+
138+ build-cpu-windows :
139+ runs-on : windows-2022
140+ name : ${{ matrix.name }}
141+ strategy :
142+ fail-fast : false
143+ matrix :
144+ include :
145+ - { compiler: "cl", build: "Debug", name: "CPU (Windows) (msvc, Debug)" }
146+ - { compiler: "cl", build: "Release", name: "CPU (Windows) (msvc, Release)" }
147+ # - { compiler: "clang++", build: "Debug", name: "CPU (Windows) (clang, Debug)" }
148+ # - { compiler: "clang++", build: "Release", name: "CPU (Windows) (clang, Release)" }
149+ # - { compiler: "clang-cl", build: "Debug", name: "CPU (Windows) (clang-cl, Debug)" }
150+ # - { compiler: "clang-cl", build: "Release", name: "CPU (Windows) (clang-cl, Release)" }
151+
152+ steps :
153+ - name : Checkout stdexec (Windows)
154+ uses : actions/checkout@v4
155+ with :
156+ persist-credentials : false
157+
158+ - name : Build and test CPU schedulers (Windows)
159+ shell : pwsh
160+ run : |
161+ docker pull rapidsai/devcontainers:26.02-cuda12.9-cl14.43
162+ docker run --isolation=process -v "$(pwd):C:/stdexec" rapidsai/devcontainers:26.02-cuda12.9-cl14.43 powershell C:/stdexec/.github/workflows/test-windows.ps1 -Compiler '${{ matrix.compiler }}' -Config '${{ matrix.build }}'
163+
164+ ci-cpu-windows :
165+ runs-on : windows-latest
166+ name : CI (CPU) (Windows)
167+ needs :
168+ - build-cpu-windows
169+ steps :
170+ - run : echo "CI (CPU) (Windows) success"
171171
172172 build-cpu-macos :
173173 runs-on : macos-26-large
0 commit comments