Conversation
Also move TSD CUDA build from visrtx to tsd yml
There was a problem hiding this comment.
Pull request overview
This PR significantly reworks the CI infrastructure to improve build times from over 20 minutes to approximately 6 minutes by introducing custom GitHub Actions for CUDA installation and ANARI-SDK builds, along with aggressive caching strategies.
Changes:
- Created custom
setup-cudaandbuild-anari-sdkGitHub Actions with caching support - Consolidated TSD CI workflows into a single
build-tsd.ymlfile covering both host and CUDA builds - Updated CMake superbuild macros to respect
CMAKE_BUILD_TYPEinstead of hardcoding "Release"
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tsd/cmake/build_deps/superbuild_macros.cmake | Updated to use CMAKE_BUILD_TYPE variable instead of hardcoded Release |
| devices/rtx/cmake/build_deps/superbuild_macros.cmake | Updated to use CMAKE_BUILD_TYPE variable instead of hardcoded Release |
| .github/workflows/tsd_ci.yml | Removed old TSD CI workflow (replaced by build-tsd.yml) |
| .github/workflows/build-visrtx.yml | Refactored to use new custom actions with caching |
| .github/workflows/build-tsd.yml | New consolidated TSD CI workflow with separate host and CUDA build jobs |
| .github/scripts/cuda-version-manager.py | New Python utility for managing CUDA versions and components |
| .github/actions/setup-cuda/scripts/install-cuda.sh | New Linux CUDA installation script using redistributables |
| .github/actions/setup-cuda/scripts/install-cuda.ps1 | New Windows CUDA installation script using redistributables |
| .github/actions/setup-cuda/components.json | Configuration file defining CUDA components and supported versions |
| .github/actions/setup-cuda/action.yml | Custom GitHub Action for CUDA toolkit installation with caching |
| .github/actions/build-anari-sdk/action.yml | Custom GitHub Action for building and caching ANARI-SDK |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| id: cache-cuda-linux | ||
| with: | ||
| path: ~/cuda-${{ steps.parse-version.outputs.major-minor }} | ||
| key: cuda-Linux-${{ inputs.cuda-version }}-redist-v4 |
There was a problem hiding this comment.
The cache key version suffix 'v4' for Linux differs from 'v2' for Windows (line 47). This inconsistency could lead to confusion. Consider synchronizing version numbers or documenting why they differ.
| # Skip if not for our platform | ||
| if [[ -n "$platforms" && "$platforms" != *"$PLATFORM"* ]]; then | ||
| continue |
There was a problem hiding this comment.
The platform filtering logic uses string matching which could incorrectly match substrings. For example, 'linux-x86' would match within 'linux-x86_64'. Use proper array or exact string matching instead.
| # Skip if not for our platform | |
| if [[ -n "$platforms" && "$platforms" != *"$PLATFORM"* ]]; then | |
| continue | |
| # Skip if not for our platform (exact match in comma-separated list) | |
| if [[ -n "$platforms" ]]; then | |
| IFS=',' read -ra platform_array <<< "$platforms" | |
| platform_match=false | |
| for platform in "${platform_array[@]}"; do | |
| if [[ "$platform" == "$PLATFORM" ]]; then | |
| platform_match=true | |
| break | |
| fi | |
| done | |
| if [[ "$platform_match" == "false" ]]; then | |
| continue | |
| fi |
Mostly vibe coded:
With those updates, the CI turnaround time is about 6 minutes for the overall pipelines, compare to >20 minutes before.