From 636c46f57c68fc488b4a4eb895a13fb7fd9e6671 Mon Sep 17 00:00:00 2001 From: Adam Gutglick Date: Thu, 18 Jun 2026 11:13:04 +0100 Subject: [PATCH 1/3] Build CUDA benchmarks once, but run in parallel Signed-off-by: Adam Gutglick --- .github/workflows/codspeed.yml | 47 ++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codspeed.yml b/.github/workflows/codspeed.yml index 9555596d5fd..8f8a4d36f97 100644 --- a/.github/workflows/codspeed.yml +++ b/.github/workflows/codspeed.yml @@ -69,8 +69,46 @@ jobs: token: ${{ secrets.CODSPEED_TOKEN }} mode: "simulation" + bench-codspeed-cuda-build: + if: github.repository == 'vortex-data/vortex' + name: "Build Codspeed CUDA benchmarks" + timeout-minutes: 30 + runs-on: >- + runs-on=${{ github.run_id }}/family=g5/cpu=8/image=ubuntu24-gpu-x64/tag=bench-codspeed-cuda-build + steps: + - uses: runs-on/action@v2 + with: + sccache: s3 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + - uses: ./.github/actions/setup-rust + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + - name: Install Codspeed + uses: taiki-e/cache-cargo-install-action@66c9585ef5ca780ee69399975a5e911f47905995 + with: + tool: cargo-codspeed + - name: Build benchmarks + run: | + cargo codspeed build -m walltime \ + --bench bitpacked_cuda \ + --bench dynamic_dispatch_cuda \ + --bench alp_cuda \ + --bench date_time_parts_cuda \ + --bench dict_cuda \ + --bench fsst_cuda \ + --bench runend_cuda \ + --profile bench + - name: Upload benchmark executables + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + with: + name: codspeed-cuda-benchmarks + path: target/codspeed/ + retention-days: 1 + if-no-files-found: error + bench-codspeed-cuda: if: github.repository == 'vortex-data/vortex' + needs: [bench-codspeed-cuda-build] strategy: matrix: include: @@ -101,8 +139,13 @@ jobs: uses: taiki-e/cache-cargo-install-action@66c9585ef5ca780ee69399975a5e911f47905995 with: tool: cargo-codspeed - - name: Build benchmarks - run: cargo codspeed build -m walltime $(printf -- '--bench %s ' ${{ matrix.benches }}) --profile bench + - name: Download benchmark executables + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 + with: + name: codspeed-cuda-benchmarks + path: target/codspeed + - name: Restore executable permissions + run: find target/codspeed -type f -exec chmod +x {} + - name: Run benchmarks uses: CodSpeedHQ/action@d872884a306dd4853acf0f584f4b706cf0cc72a2 env: From d4007518ae08527192bc76ae612665c04363193d Mon Sep 17 00:00:00 2001 From: Adam Gutglick Date: Thu, 18 Jun 2026 11:59:32 +0100 Subject: [PATCH 2/3] Include PTX Signed-off-by: Adam Gutglick --- .github/workflows/codspeed.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/codspeed.yml b/.github/workflows/codspeed.yml index 8f8a4d36f97..d4e004fd51c 100644 --- a/.github/workflows/codspeed.yml +++ b/.github/workflows/codspeed.yml @@ -98,6 +98,10 @@ jobs: --bench fsst_cuda \ --bench runend_cuda \ --profile bench + - name: Verify CUDA kernels were built + run: test -f vortex-cuda/kernels/gen/release/dynamic_dispatch.ptx + - name: Stage CUDA kernels with Codspeed artifacts + run: cp -R vortex-cuda/kernels/gen/release target/codspeed/cuda-kernels - name: Upload benchmark executables uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: @@ -150,6 +154,7 @@ jobs: uses: CodSpeedHQ/action@d872884a306dd4853acf0f584f4b706cf0cc72a2 env: CARGO_MANIFEST_DIR: ${{ github.workspace }}/vortex-cuda + VORTEX_CUDA_KERNELS_DIR: ${{ github.workspace }}/target/codspeed/cuda-kernels with: run: cargo codspeed run $(printf -- '--bench %s ' ${{ matrix.benches }}) token: ${{ secrets.CODSPEED_TOKEN }} From 9ed22a82ea259115224c9c0cfe5a173aa5351f49 Mon Sep 17 00:00:00 2001 From: Adam Gutglick Date: Thu, 18 Jun 2026 17:57:25 +0100 Subject: [PATCH 3/3] Comment Signed-off-by: Adam Gutglick --- .github/workflows/codspeed.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/codspeed.yml b/.github/workflows/codspeed.yml index d4e004fd51c..6b3af685e7b 100644 --- a/.github/workflows/codspeed.yml +++ b/.github/workflows/codspeed.yml @@ -69,6 +69,8 @@ jobs: token: ${{ secrets.CODSPEED_TOKEN }} mode: "simulation" + # Getting a GPU box is slow, in the future we can build on a box without one and only run + # on GPU machines. bench-codspeed-cuda-build: if: github.repository == 'vortex-data/vortex' name: "Build Codspeed CUDA benchmarks"