Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
0ad3c99
first try
Feb 11, 2026
c3a2806
second try
Feb 11, 2026
a24fbdf
cant do nothing but trying :D
Feb 11, 2026
b540f0e
fixing the dot spamming but actually looking kinda good so far
Feb 11, 2026
9d654ba
added codeowners and presets for the ci builds
Feb 11, 2026
ab701ea
checking which directory is the most "worth it" for freeing up space
Feb 11, 2026
2ccce91
further analyzing ci machine file structure and also turned off modul…
Feb 11, 2026
effad0a
freeing diskspace by removing android
Feb 11, 2026
f970efc
now with build cache and proper vcpkg access in the linux container
Feb 11, 2026
c46c831
included part of the onednn backend again because its needed for cpu …
Feb 13, 2026
09df6cb
fixed the cpu backend further by adding automatic indirect arrayfire …
Feb 13, 2026
b79897c
added an explicit mkl dependency link in the speeck package (bc it ne…
Feb 13, 2026
224cbff
fixing more tests now
Feb 13, 2026
f012dc2
expected invalid argument even tho runtime error was thrown
Feb 13, 2026
cd371db
fixed rand beeing out of bounds for ScalarArgType because on windows …
Feb 13, 2026
f738907
added Testing/ to gitignore
Feb 14, 2026
4218fa3
fixed the jacobian tests.
Feb 14, 2026
77b53bd
fixed histogram test by correcting histogram.h
Feb 15, 2026
dd40d35
logging implementation:
Feb 15, 2026
b9d0d44
all jacobian tests were accumulating binary operations on the af ast …
Feb 15, 2026
18db0e9
- blob dataset: replaced unsafe c cast with reinterpret_cast
Feb 15, 2026
5167ade
fixed TensorReductionTest.countNonzero by explicitly passing scalar t…
Feb 15, 2026
69b06cf
found out i can install buildcache via pacman for the docker image
Feb 15, 2026
1e31271
shared libraries only need to be copied on windows
Feb 15, 2026
beb711f
updated the cmake utils library
Feb 15, 2026
3ff7b10
now linking against mkl by default (arrayfire needs it anyway).
Feb 15, 2026
f0d91bb
fixed compilation on linux with missing template keyword
Feb 15, 2026
5ce378a
ci somehow doesnt like commented out json
Feb 15, 2026
ce2bd29
forgot to remove removed build cache preset form ci presets file
Feb 15, 2026
3d3603f
updated tocker runner bc the other one is outdated
Feb 15, 2026
da77199
added another af required but missing dll
Feb 15, 2026
dfe29e7
fixed github action vcpkg caching
Feb 15, 2026
32390f8
more caching and fixes for the when and where chi cachev4 is used
Feb 15, 2026
f870e58
explicit restore and save points for ci caches as welll as a max size…
Feb 15, 2026
62649b5
save and restore order was broken
Feb 15, 2026
329720f
somehow i had buildcache in the ci-config-base again idk what happene…
Feb 15, 2026
e0a8238
cached vcpkg too soon on windows, lets see if it works now
Feb 15, 2026
7c377c8
updated vcpkg_installed directory for ci. hopefully that is enough now
Feb 15, 2026
60cf7d7
cache working now, only have to fix buildcache now
codethinki Feb 15, 2026
6ad60ce
removed dependencies handled by vcpkg from docker
codethinki Feb 15, 2026
f37d637
- removed redundant buildcache creation
codethinki Feb 15, 2026
c157a51
removed mkl and openmp linking as this was causing problems on linux,…
codethinki Feb 15, 2026
31e4a70
moved unused ci clutter to dedicated dir
codethinki Feb 16, 2026
8ad5211
preparing switch to new ci architecture
codethinki Feb 16, 2026
7a39e77
trying new custom copy script to prevent copy race conditions
codethinki Feb 16, 2026
0d22c1f
trying new more modular ci code
codethinki Feb 16, 2026
1d44d18
deleted too much of install-core-deps
codethinki Feb 16, 2026
ad4289b
trying to fix linux vcpkg not found issue
codethinki Feb 16, 2026
d7ab556
trying again
codethinki Feb 16, 2026
3e173f0
fixed typo in build-test.yml
codethinki Feb 16, 2026
69a6eb6
removed build / test postfixes in the ci cmake user presets
codethinki Feb 16, 2026
56cd6b2
updated cuda dockerfile to actually expose cuda directory
Feb 16, 2026
21f8127
- enabled windows cuda backend in the matrix
Feb 16, 2026
9f564c6
defining separate pipelines for linux & windows now
Feb 16, 2026
285089f
dumb syntax error
Feb 16, 2026
749e97e
- linux: forgot to set the path for the dockerfile properly
Feb 16, 2026
8eeadf7
its Dockerfile not Docker ...
Feb 16, 2026
dfb2295
condensed build-test.yml even more
Feb 16, 2026
38750fa
got the cache keys the wrong way around
Feb 16, 2026
2890022
made build more consistent with the parameterized structure
Feb 16, 2026
43a263c
names were inconsistent
Feb 16, 2026
a099999
typo in cmake presets
Feb 16, 2026
0210c81
using micromamba and added another missing symlink
Feb 16, 2026
4366886
fixing ci
codethinki Feb 16, 2026
26d6388
fixed stupid error and also cleaned up ci.
codethinki Feb 16, 2026
048d323
- now setting CUDA_ROOT (windows)
codethinki Feb 16, 2026
0c1c50d
on windows it apparently is CUDA_PATH not CUDA_ROOT ...
codethinki Feb 16, 2026
77d8003
still trying to fix nvcc path on windows
codethinki Feb 16, 2026
746019b
updated codeowners
Feb 16, 2026
9035aa4
cleanup ci
Feb 16, 2026
3ab4a17
more protection
Feb 16, 2026
59bee16
modified the ci action names to match their action directories
Feb 16, 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
6 changes: 6 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.github/actions/ @codethinki
.github/workflows/ @codethinki
ci/docker/ @codethinki

LICENSE @codethinki
.clang-format @codethinki
32 changes: 32 additions & 0 deletions .github/actions/build-container/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: 'Build Container'
description: 'Builds and pushes the Linux Docker image'
inputs:
dockerfile:
description: 'Path to the Dockerfile'
required: true
tag:
description: 'Tag suffix for the image'
required: true

runs:
using: "composite"
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}

- name: Build Docker image
uses: docker/build-push-action@v5
with:
context: .
file: ${{ inputs.dockerfile }}
push: true
tags: ghcr.io/${{ github.repository }}:${{ inputs.tag }}
cache-from: type=registry,ref=ghcr.io/${{ github.repository }}:${{ inputs.tag }}-cache
cache-to: type=registry,ref=ghcr.io/${{ github.repository }}:${{ inputs.tag }}-cache,mode=max
62 changes: 62 additions & 0 deletions .github/actions/build-flashmini/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: 'Build flashmini'
description: 'Handles Caching, Configuration, and Compilation'
inputs:
cache_prefix:
description: 'Cache Prefix e.g. OS'
required: true
compiler:
description: 'Compiler'
required: true
backend:
description: 'Backend'
required: true

runs:
using: "composite"
steps:
# --- 1. Restore Vcpkg ---
- name: Restore vcpkg cache
id: restore-vcpkg
uses: actions/cache/restore@v4
with:
path: vcpkg_installed
key: vcpkg-${{ inputs.cache_prefix }}-${{ inputs.compiler }}-${{ inputs.backend }}-${{ hashFiles('vcpkg.json') }}
restore-keys: vcpkg-${{ inputs.cache_prefix }}-${{ inputs.compiler }}-${{ inputs.backend }}-

# --- 2. Configure ---
- name: Configure CMake
shell: bash
run: |
[ -f ci/CMakeUserPresets.json ] && cp ci/CMakeUserPresets.json CMakeUserPresets.json
# Preset: ci_gcc_af_cpu
cmake --preset ci_${{ inputs.compiler }}_af_${{ inputs.backend }}

# --- 3. Save Vcpkg ---
- name: Save vcpkg cache
if: steps.restore-vcpkg.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: vcpkg_installed
key: ${{ steps.restore-vcpkg.outputs.cache-primary-key }}

# --- 4. Restore BuildCache ---
- name: Restore BuildCache
id: restore-buildcache
uses: actions/cache/restore@v4
with:
path: .buildcache
key: buildcache-${{ inputs.cache_prefix }}-${{ inputs.compiler }}-${{ inputs.backend }}-${{ github.run_id }}
restore-keys: buildcache-${{ inputs.cache_prefix }}-${{ inputs.compiler }}-${{ inputs.backend }}-

# --- 5. Build ---
- name: Build
shell: bash
run: cmake --build --preset ci_${{ inputs.compiler }}_af_${{ inputs.backend }}

# --- 6. Save BuildCache ---
- name: Save BuildCache
if: always() && steps.restore-buildcache.outputs.cache-primary-key != ''
uses: actions/cache/save@v4
with:
path: .buildcache
key: ${{ steps.restore-buildcache.outputs.cache-primary-key }}
85 changes: 85 additions & 0 deletions .github/actions/setup-windows/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: 'Setup Windows Environment'
description: 'Restores Vcpkg, BuildCache etc.'
inputs:
compiler:
description: 'compiler to CMakeUserPresets.json'
required: true
backend:
description: "backend to compile for"
required: true

runs:
using: "composite"
steps:
- uses: ilammy/msvc-dev-cmd@v1

- name: Setup Vcpkg Environment
shell: pwsh
run: |
$vcpkgPath = $env:VCPKG_INSTALLATION_ROOT
if (-not (Test-Path "$vcpkgPath")) {
Write-Error "Vcpkg not found at VCPKG_INSTALLATION_ROOT ($vcpkgPath)"
exit 1
}
"VCPKG_ROOT=$vcpkgPath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append

- name: Install BuildCache
shell: pwsh
run: |
Invoke-WebRequest -Uri "https://gitlab.com/bits-n-bites/buildcache/-/releases/v0.31.7/downloads/buildcache-windows.zip" -OutFile "buildcache.zip"
Expand-Archive buildcache.zip -DestinationPath c:\buildcache
echo "c:\buildcache\buildcache\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append

- name: Install CUDA (micromamba)
if: inputs.backend == 'cuda'
uses: mamba-org/setup-micromamba@v1
with:
environment-name: cuda-env
condarc: |
channels:
- nvidia
- conda-forge
create-args: >-
cuda-toolkit=12.3.0
cache-environment: true
init-shell: powershell

- name: Set CUDA Environment Variables
if: inputs.backend == 'cuda'
shell: powershell
run: |
"CUDAToolkit_ROOT=$env:CONDA_PREFIX" >> $env:GITHUB_ENV
"CUDA_PATH=$env:CONDA_PREFIX" >> $env:GITHUB_ENV
"$env:CONDA_PREFIX\Library\bin" >> $env:GITHUB_PATH
"$env:CONDA_PREFIX\bin" >> $env:GITHUB_PATH

- name: Cache ArrayFire
id: cache-arrayfire-windows
uses: actions/cache@v4
with:
path: C:\tools\ArrayFire
key: arrayfire-windows-3.10.0

- name: "Install ArrayFire"
if: steps.cache-arrayfire-windows.outputs.cache-hit != 'true'
run: |
choco install --no-progress wget -y
cd $HOME
wget -nv https://arrayfire.gateway.scarf.sh/windows/3.10.0/ArrayFire.exe -O ArrayFire.exe
7z.exe x ArrayFire.exe -o"C:\tools\ArrayFire" -y
rm ArrayFire.exe
shell: bash -el {0}

- name: Set ArrayFire Env
run: |
echo "ArrayFire_DIR=C:\tools\ArrayFire" >> $GITHUB_ENV
echo "C:\tools\ArrayFire\lib" >> $GITHUB_PATH
shell: bash -el {0}

- uses: actions/setup-python@v5
with:
python-version: "3.x"

- name: Install CMake & Ninja
run: pip install --upgrade cmake ninja
shell: powershell
13 changes: 13 additions & 0 deletions .github/actions/test-flashmini/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name: 'Test flashmini'
description: 'Runs CTest in the specified directory'
inputs:
test_dir:
description: 'Directory containing the CTestTestfile.cmake (usually build dir)'
required: true

runs:
using: "composite"
steps:
- name: Test
shell: bash
run: ctest --test-dir ${{ inputs.test_dir }} -C Release --output-on-failure
40 changes: 40 additions & 0 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Build & Test

on:
push: { branches: ["master", "_master/add_ci"] }
pull_request: { branches: ["master"] }
workflow_dispatch:

permissions: { contents: read, packages: write }

jobs:
linux:
name: Linux (${{ matrix.compiler }}, ${{ matrix.backend }})
strategy:
fail-fast: false
matrix:
compiler: [gcc]
backend: [cpu, cuda]

uses: ./.github/workflows/linux-pipeline.yml
with:
compiler: ${{ matrix.compiler }}
backend: ${{ matrix.backend }}
# run_tests is true only if backend is cpu
run_tests: ${{ matrix.backend == 'cpu' }}
secrets: inherit

windows:
name: Windows (${{ matrix.compiler }}, ${{ matrix.backend }})
strategy:
fail-fast: false
matrix:
compiler: [msvc]
backend: [cpu, cuda]

uses: ./.github/workflows/windows-pipeline.yml
with:
compiler: ${{ matrix.compiler }}
backend: ${{ matrix.backend }}
run_tests: ${{ matrix.backend == 'cpu' }}
secrets: inherit
48 changes: 0 additions & 48 deletions .github/workflows/docker_image_build.yml

This file was deleted.

66 changes: 66 additions & 0 deletions .github/workflows/linux-pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Linux Pipeline

on:
workflow_call:
inputs:
compiler:
required: true
type: string
backend:
required: true
type: string
run_tests:
required: true
type: boolean

permissions:
contents: read
packages: write

jobs:
prepare:
name: Build Container (${{ inputs.backend }})
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build & Push
uses: ./.github/actions/build-container
with:
dockerfile: ci/docker/linux/Dockerfile.${{ inputs.backend }}
tag: linux-${{ inputs.backend }}

build:
name: Linux (${{ inputs.compiler }}-${{ inputs.backend }})
needs: prepare
runs-on: ubuntu-latest
container:
image: ghcr.io/${{ github.repository }}:linux-${{ inputs.backend }}
credentials:
username: ${{ github.actor }}
password: ${{ github.token }}
options: >-
-v /usr/local/share/vcpkg:/vcpkg
-e VCPKG_ROOT=/vcpkg
env:
VCPKG_ROOT: /vcpkg
steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Build
uses: ./.github/actions/build-flashmini
with:
cache_prefix: linux
compiler: ${{ inputs.compiler }}
backend: ${{ inputs.backend }}

- name: Test
if: inputs.run_tests
uses: ./.github/actions/test-flashmini
with:
test_dir: out/build/ci_${{ inputs.compiler }}_af_${{ inputs.backend }}

- name: Fix permissions
if: always()
run: sudo chown -R $(id -u):$(id -g) out/build
Loading
Loading