Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
9f5e560
ci: Delete old configuration files for Semgrep
utilForever Apr 3, 2026
cab8064
ci: Update configuration file for Windows
utilForever Apr 3, 2026
9cd6a0f
build: Update library 'pybind11' to '3.0.2'
utilForever Apr 3, 2026
f77fddf
build: Update library 'doctest' to '2.4.12'
utilForever Apr 3, 2026
2c79191
build: Update CMake version to '3.31.6'
utilForever Apr 3, 2026
9e12568
fix: Add missing header '<chrono>'
utilForever Apr 4, 2026
10ad3af
ci: Add step to install Python 3.12
utilForever Apr 4, 2026
721fccc
ci: Update configuration file for Linux
utilForever Apr 4, 2026
7d6df2a
ci: Update configuration file for macOS
utilForever Apr 4, 2026
05097f5
ci: Update configuration file for Codecov
utilForever Apr 4, 2026
40258c2
ci: Disable configuration file for SonarCloud temporarily
utilForever Apr 4, 2026
62c7bb4
build: Fix CMake error by changing empty command
utilForever Apr 4, 2026
feeacb2
ci: Change step to upload coverage to Codecov
utilForever Apr 4, 2026
7409e04
fix: Add code to include missing header
utilForever Apr 4, 2026
342662c
build: Update library 'googletest' to '1.17.0'
utilForever Apr 4, 2026
ea07e19
ci: Add flag to allow mismatch errors during lcov capture/remove
utilForever Apr 4, 2026
a6acbec
ci: Update command to ignore unused errors
utilForever Apr 4, 2026
8271cf9
ci: Remove 'macOS + gcc' from build matrix
utilForever Apr 4, 2026
c280db6
test: Change the value of param 'spacing' to avoid precision error
utilForever Apr 4, 2026
fded639
ci: Update configuration file for Windows CUDA
utilForever Apr 5, 2026
d705224
ci: Update configuration file for Ubuntu CUDA
utilForever Apr 5, 2026
f4859d6
ci: fix CUDA workflow setup
utilForever Apr 5, 2026
9f6dba2
ci: Add some URLs of CUDA and Visual Studio minimum versions
utilForever Apr 5, 2026
8b04a2b
ci: Update CUDA version
utilForever Apr 5, 2026
811d722
build: Add command to set policy "CMP0146" to "OLD"
utilForever Apr 5, 2026
360d40a
cI: Add command to set the path of nvcc
utilForever Apr 5, 2026
3d70953
build: Add command to set policy "CMP0147" to "OLD"
utilForever Apr 5, 2026
08332cc
ci: Fix Windows CUDA workflow configure
utilForever Apr 5, 2026
a7c5b6d
ci: Fix Windows CUDA workflow configure
utilForever Apr 5, 2026
48787bb
ci: Include CUDA crt package on Windows
utilForever Apr 5, 2026
56d4cfa
ci: Use compiler package for modern CUDA
utilForever Apr 5, 2026
4bc88dd
ci: Add CUDA 13 nvvm package and fail-fast control
utilForever Apr 5, 2026
0aef11f
build: Enable standard preprocessor for CUDA on MSVC
utilForever Apr 5, 2026
8b133e3
build: Include CUDA CCCL headers when available
utilForever Apr 5, 2026
40ea883
build: Use conforming preprocessor for MSVC CUDA headers
utilForever Apr 5, 2026
963ac45
build: Force MSVC conforming preprocessor in CUDA builds
utilForever Apr 5, 2026
960bf1c
build: Suppress CUDA 13 C4505 warning on MSVC
utilForever Apr 5, 2026
bbfa3a4
build: Add /wd4505 for Windows CUDA builds
utilForever Apr 5, 2026
4879e4a
ci: Run CUDA unit tests in CUDA workflows
utilForever Apr 5, 2026
e3b97a7
ci: Run CUDA tests on GPU runners conditionally
utilForever Apr 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 0 additions & 74 deletions .github/workflows/codeql-analysis.yml

This file was deleted.

72 changes: 24 additions & 48 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,57 +6,36 @@ on:
pull_request:
branches: [ main ]

env:
PYTHON_VERSION: '3.12'

jobs:
build-macos:
runs-on: ${{ matrix.os }}
name: ${{ matrix.name }}
strategy:
matrix:
include:
# macOS 12.4 + Xcode 13.4.1
- name: "macOS 12.4 + Xcode 13.4.1"
os: macos-12
compiler: xcode
version: "13.4.1"
# macOS 11.6 + Xcode 13.2.1
- name: "macOS 11.6 + Xcode 13.2.1"
os: macos-11
# macOS 26.3 + Xcode 26.3
- name: "macOS 26.3 + Xcode 26.3"
os: macos-26
compiler: xcode
version: "13.2.1"
# macOS 11.6 + Xcode 12.5.1
- name: "macOS 11.6 + Xcode 12.5.1"
os: macos-11
version: "26.3"
# macOS 15.7.4 + Xcode 16.4
- name: "macOS 15.7.4 + Xcode 16.4"
os: macos-15
compiler: xcode
version: "12.5.1"
# macOS 11.6 + Xcode 11.7
- name: "macOS 11.6 + Xcode 11.7"
os: macos-11
compiler: xcode
version: "11.7"
# macOS 12.4 + gcc-11
- name: "macOS 12.4 + gcc-11"
os: macos-12
compiler: gcc
version: "11"
# macOS 11.6 + gcc-11
- name: "macOS 11.6 + gcc-11"
os: macos-11
compiler: gcc
version: "11"
# macOS 11.6 + gcc-10
- name: "macOS 11.6 + gcc-10"
os: macos-11
compiler: gcc
version: "10"
# macOS 11.6 + gcc-9
- name: "macOS 11.6 + gcc-9"
os: macos-11
compiler: gcc
version: "9"
version: "16.4"

runs-on: ${{ matrix.os }}
name: 🍎 Build - ${{ matrix.name }}

steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Configure Compiler
run: |
if [ "${{ matrix.compiler }}" = "gcc" ]; then
Expand All @@ -74,12 +53,9 @@ jobs:
run: cd build && make
- name: Run Unit Test
run: /Users/runner/work/CubbyFlow/CubbyFlow/build/bin/UnitTests
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.7'
- name: Run Python Test
run: |
pip install -r requirements.txt
pip install .
python -m pytest Tests/PythonTests/
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install .
python -m pytest Tests/PythonTests/
1 change: 1 addition & 0 deletions .github/workflows/scripts/actions/install_cuda_ubuntu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
# Ideally choose from the list of meta-packages to minimise variance between cuda versions (although it does change too)
CUDA_PACKAGES_IN=(
"command-line-tools"
"compiler"
"libraries-dev"
)

Expand Down
23 changes: 18 additions & 5 deletions .github/workflows/scripts/actions/install_cuda_windows.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,14 @@ $CUDA_KNOWN_URLS = @{
"10.2.89" = "http://developer.download.nvidia.com/compute/cuda/10.2/Prod/network_installers/cuda_10.2.89_win10_network.exe";
"11.0.167" = "http://developer.download.nvidia.com/compute/cuda/11.0.1/network_installers/cuda_11.0.1_win10_network.exe"
"11.3.1" = "http://developer.download.nvidia.com/compute/cuda/11.3.1/network_installers/cuda_11.3.1_win10_network.exe"
"12.6.3" = "https://developer.download.nvidia.com/compute/cuda/12.6.3/network_installers/cuda_12.6.3_windows_network.exe"
"13.2.0" = "https://developer.download.nvidia.com/compute/cuda/13.2.0/network_installers/cuda_13.2.0_windows_network.exe"
}

# @todo - change this to be based on _MSC_VER intead, or invert it to be CUDA keyed instead?
$VISUAL_STUDIO_MIN_CUDA = @{
"2026" = "13.2";
"2022" = "11.6";
"2019" = "10.1";
"2017" = "10.0"; # Depends on which version of 2017! 9.0 to 10.0 depending on version
"2015" = "8.0"; # might support older, unsure.
Expand Down Expand Up @@ -80,6 +84,15 @@ $VISUAL_STUDIO_YEAR = $VISUAL_STUDIO.Substring($VISUAL_STUDIO.Length-4)

$CUDA_PACKAGES = ""

# CUDA 13+ separates runtime headers such as crt/host_config.h into the crt package.
if ([version]$CUDA_VERSION_FULL -ge [version]"13.0" -and -not ($CUDA_PACKAGES_IN -contains "crt")) {
$CUDA_PACKAGES_IN += "crt"
}
# CUDA 13+ requires NVVM tooling (cicc) for nvcc compilation.
if ([version]$CUDA_VERSION_FULL -ge [version]"13.0" -and -not ($CUDA_PACKAGES_IN -contains "nvvm")) {
$CUDA_PACKAGES_IN += "nvvm"
}

# for CUDA >= 11 cudart is a required package.
# if([version]$CUDA_VERSION_FULL -ge [version]"11.0") {
# if(-not $CUDA_PACKAGES_IN -contains "cudart") {
Expand Down Expand Up @@ -131,12 +144,12 @@ if(Test-Path -Path $CUDA_REPO_PKG_LOCAL){

# Invoke silent install of CUDA (via network installer)
Write-Output "Installing CUDA $($CUDA_VERSION_FULL). Subpackages $($CUDA_PACKAGES)"
Start-Process -Wait -FilePath .\"$($CUDA_REPO_PKG_LOCAL)" -ArgumentList "-s $($CUDA_PACKAGES)"
$installerProcess = Start-Process -Wait -PassThru -FilePath .\"$($CUDA_REPO_PKG_LOCAL)" -ArgumentList "-s $($CUDA_PACKAGES)"

# Check the return status of the CUDA installer.
if (!$?) {
Write-Output "Error: CUDA installer reported error. $($LASTEXITCODE)"
exit 1
if ($installerProcess.ExitCode -ne 0) {
Write-Output "Error: CUDA installer reported error. Exit code: $($installerProcess.ExitCode)"
exit $installerProcess.ExitCode
}

# Store the CUDA_PATH in the environment for the current session, to be forwarded in the action.
Expand All @@ -150,4 +163,4 @@ Write-Output "CUDA_PATH_VX_Y $($CUDA_PATH_VX_Y)"

# PATH needs updating elsewhere, anything in here won't persist.
# Append $CUDA_PATH/bin to path.
# Set CUDA_PATH as an environmental variable
# Set CUDA_PATH as an environmental variable
39 changes: 30 additions & 9 deletions .github/workflows/ubuntu-codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,31 @@ on:
pull_request:
branches: [ main ]

env:
PYTHON_VERSION: '3.12'

jobs:
build-ubuntu:
runs-on: ${{ matrix.os }}
name: ${{ matrix.name }}
strategy:
matrix:
include:
# Ubuntu 20.04 + gcc-9
- name: "Ubuntu 20.04 + gcc-9"
os: ubuntu-20.04
# Ubuntu 24.04 + gcc-14
- name: "Ubuntu 24.04 + gcc-14"
os: ubuntu-24.04
compiler: gcc
version: "9"
version: "14"

runs-on: ${{ matrix.os }}
name: 🧪 Code Coverage - Codecov

steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install packages
run: sudo apt-get install -yq lcov
- name: Configure Compiler
Expand All @@ -39,5 +48,17 @@ jobs:
run: cd build && make
- name: Run Unit Test
run: /home/runner/work/CubbyFlow/CubbyFlow/build/bin/UnitTests
- name: Upload coverage to Codecov
run: bash <(curl -s https://codecov.io/bash)
- name: Collect coverage report
run: |
GCOV_TOOL="$(command -v gcov-${{ matrix.version }})"
lcov --gcov-tool "${GCOV_TOOL}" --ignore-errors mismatch --directory build --capture --output-file build/coverage.info
lcov --ignore-errors unused --gcov-tool "${GCOV_TOOL}" --ignore-errors mismatch --remove build/coverage.info '/usr/*' '*/Tests/*' --output-file build/coverage.info.cleaned
- name: Upload Coverage Reports to Codecov
uses: codecov/codecov-action@v5
with:
fail_ci_if_error: true
files: ./build/coverage.info.cleaned
flags: unittests
name: ubuntu-codecov
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
Comment thread
utilForever marked this conversation as resolved.
58 changes: 36 additions & 22 deletions .github/workflows/ubuntu-cuda.yml
Original file line number Diff line number Diff line change
@@ -1,42 +1,49 @@
name: Ubuntu-CUDA
name: Ubuntu CUDA

on:
push:
branches: [ main, "gpu*" ]
branches: [ main ]
pull_request:
branches: [ main, "gpu*" ]
branches: [ main ]

env:
PYTHON_VERSION: '3.12'

jobs:
build-ubuntu-cuda:
runs-on: ${{ matrix.os }}
name: ${{ matrix.name }}
strategy:
matrix:
include:
- name: "Ubuntu 20.04 + gcc-10 + CUDA 11.7 (Disable Test)"
os: ubuntu-20.04
cuda: "11.7"
# Ubuntu 24.04 + gcc-12 + CUDA 12.6.3
- name: "Ubuntu 24.04 + gcc-12 + CUDA 12.6.3"
os: ubuntu-24.04
cuda: "12.6.3"
compiler: gcc
version: "10"
version: "12"

runs-on: ${{ matrix.os }}
name: 🐧 CUDA Build - ${{ matrix.name }}

steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install packages
run: sudo apt-get update && sudo apt-get install -yq python3-setuptools
- name: Install CUDA
env:
cuda: ${{ matrix.cuda }}
shell: bash
run: |
source ./.github/workflows/scripts/actions/install_cuda_ubuntu.sh
if [[ $? -eq 0 ]]; then
# Set paths for subsequent steps, using ${CUDA_PATH}
echo "Adding CUDA to CUDA_PATH, PATH and LD_LIBRARY_PATH"
echo "CUDA_PATH=${CUDA_PATH}" >> $GITHUB_ENV
echo "${CUDA_PATH}/bin" >> $GITHUB_PATH
echo "LD_LIBRARY_PATH=${CUDA_PATH}/lib:${LD_LIBRARY_PATH}" >> $GITHUB_ENV
fi
shell: bash
- name: Install Packages
run: sudo apt-get install -yq python3-setuptools
echo "Adding CUDA to CUDA_PATH, PATH and LD_LIBRARY_PATH"
echo "CUDA_PATH=${CUDA_PATH}" >> "$GITHUB_ENV"
echo "${CUDA_PATH}/bin" >> "$GITHUB_PATH"
echo "LD_LIBRARY_PATH=${CUDA_PATH}/lib64:${LD_LIBRARY_PATH}" >> "$GITHUB_ENV"
- name: Configure Compiler
run: |
if [ "${{ matrix.compiler }}" = "gcc" ]; then
Expand All @@ -47,6 +54,13 @@ jobs:
echo "CXX=clang++-${{ matrix.version }}" >> $GITHUB_ENV
fi
- name: Configure Build
run: mkdir build && cd build && cmake -DENABLE_CUDA=ON -DCMAKE_BUILD_TYPE=Release ..
run: mkdir build && cd build && cmake -DUSE_CUDA=ON -DCMAKE_BUILD_TYPE=Release ..
- name: Build
run: cd build && make
run: cd build && make
- name: Run CUDA Unit Test
run: |
if command -v nvidia-smi >/dev/null 2>&1 && nvidia-smi -L >/dev/null 2>&1; then
/home/runner/work/CubbyFlow/CubbyFlow/build/bin/CUDATests
else
echo "No CUDA-capable GPU detected on runner. Skipping CUDA unit tests."
fi
Loading
Loading