Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
68364c1
chore: one CONTRIBUTING and one LICENSE for the repository (#1396)
elibol Oct 8, 2026
661e71d
docs(cutile-rs): put the book badge back next to the crates.io badge …
elibol Oct 8, 2026
4e0918d
doc: point shared host crates and cuda-oxide at the cuda-rust home; r…
elibol Oct 8, 2026
7bb01ff
ci: finish in-progress checks on main (#1399)
roivanov Oct 8, 2026
a51ef44
ci: skip workflows whose inputs did not change (#1397)
roivanov Oct 8, 2026
a73ec6e
ci: one status workflow so the README can carry a single CI badge (#1…
elibol Oct 8, 2026
bafffe4
build: depend on the shared host crates by path at tip of tree (#1466)
elibol Oct 9, 2026
91a0066
cuda-oxide: update to nightly-2026-10-11 (#1482)
nihalpasham Oct 11, 2026
c242d35
fix(cuda-oxide): use valid sparse FP8 metadata (#1487)
nihalpasham Oct 11, 2026
d141118
cuda-oxide: preserve rustc reference attributes on kernels (#1483)
nihalpasham Oct 11, 2026
e508255
ci: run successive main commits side by side (#1498)
roivanov Oct 12, 2026
bc46b1f
docs: add the AI-assisted contributions section to CONTRIBUTING.md (#…
elibol Oct 12, 2026
526c0f3
fix(cuda-oxide): point repository metadata and the ICE report URL at …
alejandro-soto-franco Oct 15, 2026
e86d859
docs(cuda-oxide): link the book and crate READMEs to NVIDIA/cuda-rust…
alejandro-soto-franco Oct 15, 2026
db977a4
fix(cargo-oxide): take the scaffold's host crates from cuda-host's gi…
alejandro-soto-franco Oct 15, 2026
ffd82c3
fix(cargo-oxide): scaffold and clone from NVIDIA/cuda-rust (#1489)
alejandro-soto-franco Oct 15, 2026
9f49388
fix(mir-importer): normalize pointer address spaces in tuple construc…
uurl Oct 15, 2026
6d47ae4
feat(unroll): recognize range `for` loops (#1346)
midagedev Oct 15, 2026
1668700
Remove unused cuda-oxide workspace dependencies (#1527)
nihalpasham Oct 16, 2026
e84e5b3
Update cuda-oxide to Pliron 0.19.0 (#1526)
nihalpasham Oct 16, 2026
0ee73e8
fix(mir-lower): preserve address spaces through typed enum fillers (#…
YunusMutlu Oct 17, 2026
ccb172e
fix(mir-lower): stabilize shared pointer union storage (#1335)
YunusMutlu Oct 17, 2026
df7440e
fix(mir-importer): lower from-end ConstantIndex after Subslice (#1343)
YunusMutlu Oct 17, 2026
0787483
fix(ptx-schedule): refuse decisions-json paths that overwrite PTX (#1…
YeonwooSung Oct 17, 2026
51c737f
fix(cuda-device): select tcgen05 alloc warp by linear thread id (#1351)
YeonwooSung Oct 17, 2026
82f195b
chore(cuda-oxide): upgrade Pliron to 0.20.0 (#1533)
nihalpasham Oct 18, 2026
9571746
Tile libraries: call Rust device functions from Tile kernels (#1545)
nihalpasham Oct 19, 2026
b382520
docs(cuda-oxide): state what sync_threads orders at compile time (#1493)
alejandro-soto-franco Oct 19, 2026
937de64
fix(cargo-oxide): install the cached backend by rename, not in place …
midagedev Oct 19, 2026
43414d4
fix(mir-importer): preserve non-terminating drops (#1361)
YunusMutlu Oct 19, 2026
e1ce625
fix(mir-importer): preserve emitted diverging device calls (#1364)
YunusMutlu Oct 19, 2026
00426c8
fix(mir-lower): cap enum alignment anchors (#1357)
YunusMutlu Oct 19, 2026
4eb5fb1
fix(nvjitlink-sys): find libnvJitLink under lib/ as well as lib64/ (#…
lucifer1004 Oct 19, 2026
44df2a1
feat(unroll): point not-unrolled warnings at the #[unroll] attribute …
midagedev Oct 19, 2026
f33ac67
fix(shared): enforce typed shared-memory alignment (#1345)
YunusMutlu Oct 19, 2026
5b606fd
fix(cuda-device): run mbarrier init on one linear thread (#1349)
YeonwooSung Oct 19, 2026
e5082e6
feat(intrinsics): admit bf16x2 to FP8x2 pack conversions (#1354)
YeonwooSung Oct 19, 2026
82b63f4
fix(cuda-macros): correct gpu_printf default float and unsigned forma…
YeonwooSung Oct 19, 2026
aa378e1
test(drop_glue): keep destructor MIR with -Zinline-mir=no, not #[inli…
nihalpasham Oct 19, 2026
7cbc067
fix(cuda-oxide): keep host-written constant memory through LTO (#1509)
ssoj13 Oct 19, 2026
f6507e7
fix(cargo-oxide): pin release-like codegen in Cargo profiles (#1510)
ssoj13 Oct 19, 2026
7174324
feat(cuda-oxide): carry inline intent through the device pipeline (#1…
ssoj13 Oct 19, 2026
b64e790
docs(book): show how an inline request reaches the GPU (#1551)
nihalpasham Oct 19, 2026
8bb24a4
feat(tma): CTA-local G2S tile loads through typed shared pointers (#1…
lucifer1004 Oct 19, 2026
a25a585
fix(intrinsics): admit the FP16 m16n8k8 MMA forms on sm_75 (#1484)
praveenperera Oct 19, 2026
49fbf3a
feat(cutile): add NVFP4 MoE batch-size benchmark (#1553)
elibol Oct 19, 2026
2690828
docs(cuda-oxide): take the tile-library chapter out of the book until…
nihalpasham Oct 20, 2026
1e2b536
fix(oxide-tilebc): write the fragment's symbolic shape as the 13.5 as…
nihalpasham Oct 20, 2026
e027ac3
ci: Pin third-party action to SHAs (#1554)
assignUser Oct 20, 2026
9718b43
fix(cutile): retain source origins for generated code and host checks…
elibol Oct 22, 2026
0143af5
chore: prepare shared host and Tile crates for v0.5.0 (#1614)
elibol Oct 22, 2026
927d462
Add the cute-rs preview: CuTe kernels in Rust for sm_100a and sm_120a…
nihalpasham Oct 23, 2026
2f47ad0
chore(cute-rs): sync shared host crate versions to v0.5.0 in lockfile…
nihalpasham Oct 23, 2026
e6c0179
cuda-oxide: move SIMT toolchain pin to stable 1.99.1 (#1609)
nihalpasham Oct 23, 2026
9e75d77
chore(cuda-oxide): update flake.lock for 1.99.1, scaffold config, and…
nihalpasham Oct 23, 2026
ad0a42c
docs(cuda-oxide): update remaining nightly references and doctor chec…
nihalpasham Oct 23, 2026
fc74719
fix: bump example tokio pins past RUSTSEC-2026-0386 (#1619)
roivanov Oct 23, 2026
9df9e7c
docs(book): soften dark-mode SVG fill colors across cute and compiler…
nihalpasham Oct 25, 2026
4978d7b
feat(cuda-macros): let `requires` name unsigned integer constants
midagedev Sep 26, 2026
460f470
fix(cuda-macros): name the macro call when a cuda_module finds no ker…
midagedev Sep 26, 2026
5a8e27e
fix(mir-lower): give an aggregate niche payload's leaves typed slots
midagedev Sep 30, 2026
83edc26
feat(cargo-oxide): select extra-rustflags by target triple
avlp12 Oct 11, 2026
7f868be
fix(mir-importer): adapt shared pointers at ordinary call boundaries …
juliankang4 Oct 25, 2026
4de60d9
codegen: enforce a project's required llc major on the selected tool …
Burntgogi Oct 25, 2026
57691c1
Merge branch 'bloomery' into perf/cute-verifier-linear-bloomery
juliankang4 Oct 26, 2026
2ebfdee
perf(cute): look up ordinary provenance facts by carrier
juliankang4 Oct 26, 2026
5a75da1
perf(cute): skip a family's fact analysis in scopes without its opera…
juliankang4 Oct 26, 2026
1b3ee0e
perf(cute): keep at most two opaque origins per provenance fact set
juliankang4 Oct 26, 2026
615fe6e
perf(cute): check each local cell's aliases once per analysis
juliankang4 Oct 26, 2026
d4fc97f
fix(mir-lower): fit enum_niche_payload to the current tree
juliankang4 Oct 26, 2026
37901e4
test(cuda-macros): bless the unresolved-constant diagnostic for 1.99.1
juliankang4 Oct 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 2 additions & 0 deletions .github/workflows/book.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ permissions:
# Scope this to the ref, and keep the single-deploy guarantee on the deploy job
# itself. Superseded PR runs are cancelled; pushes to main are not, so a
# publish in flight is never interrupted.
# The group deliberately has no commit SHA. Parallel builds on main would let
# a slower older commit deploy after a newer one and replace the published site.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
Expand Down
71 changes: 71 additions & 0 deletions .github/workflows/ci-status.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
---
name: CI status

# One status for the whole repository, so the README needs one badge.
#
# Badges are per workflow file, and the two pipelines have to stay separate
# for now: ci.yml (SIMT and the shared host crates) runs on GitHub-hosted
# runners on push and pull_request; cutile-rs.yml (Tile) runs on NVIDIA
# self-hosted runners, which cannot run on pull_request events, so it
# triggers on push to main and to the copy-pr-bot mirror branches.
#
# This workflow runs whenever either of them completes on main. For each
# pipeline it finds the newest completed push run on main that actually
# executed jobs and fails if that run failed. Two kinds of run say nothing
# about the pipeline and are skipped over: a run whose jobs were all skipped
# (cutile-rs.yml's `changes` gate does that on a non-Tile push) and a
# cancelled run. Taking either at face value would turn the badge green while
# the last real run was red.
#
# The badge in README.md points here. To cover another pipeline, add its
# workflow name to the trigger list and its file name to the loop below.
on:
workflow_run:
workflows: [CI, cutile-rs-pr]
types: [completed]
branches: [main]

permissions:
actions: read
contents: read

jobs:
status:
name: combined CI status on main
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Report the newest executed main run of each pipeline
env:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
failed=0
for workflow in ci.yml cutile-rs.yml; do
verdict=none
url=-
while read -r id conclusion run_url; do
[ -n "${id}" ] || continue
case "${conclusion}" in
success|failure|timed_out) ;;
*) continue ;;
esac
executed="$(gh api "repos/${GITHUB_REPOSITORY}/actions/runs/${id}/jobs?per_page=100" \
--jq '[.jobs[] | select(.name != "changes" and .conclusion != "skipped")] | length')"
if [ "${executed}" -gt 0 ]; then
verdict="${conclusion}"
url="${run_url}"
break
fi
done < <(gh api \
"repos/${GITHUB_REPOSITORY}/actions/workflows/${workflow}/runs?branch=main&event=push&status=completed&per_page=10" \
--jq '.workflow_runs[] | "\(.id) \(.conclusion) \(.html_url)"')
echo "${workflow}: ${verdict} (${url})"
case "${verdict}" in
success|none) ;;
*) failed=1 ;;
esac
done
exit "${failed}"
6 changes: 4 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,11 @@ on:
- 'Cargo.lock'
- '.github/workflows/**'

# Each commit on main gets its own group, so it starts at once. Any other ref
# still shares one group and cancels the older run.
concurrency:
group: ci-gate-${{ github.ref_name }}
cancel-in-progress: true
group: ci-gate-${{ github.ref_name }}${{ github.ref_name == 'main' && format('-{0}', github.sha) || '' }}
cancel-in-progress: ${{ github.ref_name != 'main' }}

# Every other workflow in the repo pins this rather than inheriting whatever the
# repository default happens to be. This one is a pure caller today, so the four
Expand Down
34 changes: 21 additions & 13 deletions .github/workflows/clippy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ jobs:
uses: actions/checkout@v4

- name: Install CUDA toolkit
uses: Jimver/cuda-toolkit@v0.2.35
uses: Jimver/cuda-toolkit@0ca15bb027fc96f7f61ddbb9c5221d699da06bdb # v0.2.36
id: cuda-toolkit
with:
cuda: "13.1.1"
cuda: "13.3.1"
method: network
sub-packages: '["nvcc", "cudart-dev"]'
non-cuda-sub-packages: '["libcurand-dev"]'
Expand All @@ -37,7 +37,7 @@ jobs:
working-directory: cuda-oxide
run: cargo clippy --workspace --all-targets -- -D warnings

# `rustc-codegen-cuda` and each example under examples/ are their own
# `rustc-codegen-cuda`, the standard and CuTe examples, and CuTe models have
# standalone workspaces (the codegen backend is swapped in via
# RUSTFLAGS, so they can't live in the root [workspace]). That's 60+
# cargo invocations from different workspace roots. By default each
Expand All @@ -49,7 +49,7 @@ jobs:
# Point all of those invocations at one shared CARGO_TARGET_DIR under
# ${RUNNER_TEMP}. Cargo fingerprints each unit by package + features
# + workspace_root + toolchain, so co-located workspaces using the
# same pinned nightly deduplicate on identical deps and compile each
# same pinned toolchain deduplicate on identical deps and compile each
# one once. This is intentionally scoped *not* to cover the
# `cargo clippy --workspace` step above, which already has a
# well-defined `target/` under cuda-oxide.
Expand All @@ -60,18 +60,26 @@ jobs:
working-directory: cuda-oxide/crates/rustc-codegen-cuda
run: cargo clippy --all-targets -- -D warnings

- name: Run clippy (rustc-codegen-cuda examples)
- name: Run clippy (standard and CuTe examples and models)
env:
CUDA_TOOLKIT_PATH: ${{ steps.cuda-toolkit.outputs.CUDA_PATH }}
CARGO_TARGET_DIR: ${{ runner.temp }}/clippy-shared-target
RUSTC_BOOTSTRAP: "1"
run: |
set -e
for ex in cuda-oxide/crates/rustc-codegen-cuda/examples/*/; do
if [ ! -f "$ex/Cargo.toml" ]; then continue; fi
name=$(basename "$ex")
echo "::group::clippy: $name"
(cd "$ex" && cargo clippy --all-targets -- -D warnings)
echo "::endgroup::"
example_roots=(
cuda-oxide/crates/rustc-codegen-cuda/examples
cuda-oxide/cute-rs-preview/examples
cuda-oxide/cute-rs-preview/models
)
for example_root in "${example_roots[@]}"; do
for ex in "$example_root"/*/; do
if [ ! -f "$ex/Cargo.toml" ]; then continue; fi
name=$(basename "$ex")
echo "::group::clippy: $name"
(cd "$ex" && cargo clippy --all-targets -- -D warnings)
echo "::endgroup::"
done
done

# The loop above is one level deep. A few examples nest a second
Expand All @@ -97,11 +105,11 @@ jobs:
grep -q "\"${sub}\""; then
continue
fi
echo "::group::clippy: ${dir#cuda-oxide/crates/rustc-codegen-cuda/examples/}"
echo "::group::clippy: ${dir#cuda-oxide/}"
(cd "${dir}" && cargo clippy --locked --all-targets -- -D warnings)
echo "::endgroup::"
done < <(
find cuda-oxide/crates/rustc-codegen-cuda/examples -mindepth 3 -name Cargo.toml \
find "${example_roots[@]}" -mindepth 3 -name Cargo.toml \
-not -path '*/target/*' | sort
)

Expand Down
23 changes: 21 additions & 2 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,36 @@
---
name: codeql

# Push and pull_request run only when Rust, workflow, or script inputs change.
# A Markdown-only commit skips both analyzers. The weekly schedule has no path
# filter, so that scan still covers the whole tree.
on:
push:
branches: [main]
paths:
- '**/*.rs'
- '**/Cargo.toml'
- '**/Cargo.lock'
- '.github/**'
- '**/*.sh'
- '**/*.py'
pull_request:
branches: [main]
paths:
- '**/*.rs'
- '**/Cargo.toml'
- '**/Cargo.lock'
- '.github/**'
- '**/*.sh'
- '**/*.py'
schedule:
- cron: "44 3 * * 6"

# Each commit on main gets its own group, so it starts at once. Any other ref
# still shares one group and cancels the older run.
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true
group: ${{ github.workflow }}-${{ github.ref_name }}${{ github.ref_name == 'main' && format('-{0}', github.sha) || '' }}
cancel-in-progress: ${{ github.ref_name != 'main' }}

jobs:
analyze:
Expand Down
21 changes: 15 additions & 6 deletions .github/workflows/cutile-rs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,11 @@ on:
- "pull-request/[0-9]+"
workflow_dispatch:

# Each commit on main gets its own group, so it starts at once. Any other ref
# still shares one group and cancels the older run.
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true
group: ${{ github.workflow }}-${{ github.ref_name }}${{ github.ref_name == 'main' && format('-{0}', github.sha) || '' }}
cancel-in-progress: ${{ github.ref_name != 'main' }}

permissions:
contents: read
Expand All @@ -39,8 +41,11 @@ defaults:

jobs:
# Tile lane gate: cutile-rs tree plus shared host crates. Skips when only
# cuda-oxide changes. When copy-pr-bot yields no detectable file diff, run
# anyway so the mirror push is never silently skipped.
# cuda-oxide (or any other non-tile path) changes. `any_changed` is a real
# filter: dorny/paths-filter sets an output only for filters declared here,
# and an undeclared name stays empty, which would make `!= 'true'` always
# succeed. When copy-pr-bot yields no detectable file diff, both outputs are
# false and the jobs run anyway so the mirror push is never silently skipped.
changes:
runs-on: ubuntu-latest
outputs:
Expand All @@ -50,7 +55,7 @@ jobs:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: dorny/paths-filter@v3
- uses: dorny/paths-filter@0e4a8c6effa4802afeda77dc8d303f8176d7dfad # v3.0.4
id: changes
with:
filters: |
Expand All @@ -65,6 +70,10 @@ jobs:
- 'rust-toolchain.toml'
- '.github/workflows/cutile-rs.yml'
- '.github/copy-pr-bot.yaml'
# `*` covers a root file such as AGENTS.md. `**` covers every nested path.
any_changed:
- '*'
- '**'

# Exercise the oldest Tile IR assembler, including its lack of
# --list-versions. The separate 13.0 lane only checks shared host crates.
Expand Down Expand Up @@ -199,7 +208,7 @@ jobs:

# Prebuilt binary instead of `cargo install` (which compiled the tool
# from source on every run).
- uses: taiki-e/install-action@9114bf4d891761788c546334fd37538eae1bf8b3 # v2.87.16
- uses: taiki-e/install-action@9114bf4d891761788c546334fd37538eae1bf8b3 # v2.87.16
with:
tool: cargo-semver-checks

Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,11 @@ on:
- 'Cargo.lock'
- '.github/workflows/**'

# Each commit on main gets its own group, so it starts at once. Any other ref
# still shares one group and cancels the older run.
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true
group: ${{ github.workflow }}-${{ github.ref_name }}${{ github.ref_name == 'main' && format('-{0}', github.sha) || '' }}
cancel-in-progress: ${{ github.ref_name != 'main' }}

permissions:
contents: read
Expand All @@ -48,10 +50,10 @@ jobs:
- name: Install CUDA toolkit
# `cargo doc --workspace` compiles cuda-bindings' build-time bindgen,
# which needs `cuda.h`. Same toolkit pin as the unit-tests job.
uses: Jimver/cuda-toolkit@v0.2.35
uses: Jimver/cuda-toolkit@0ca15bb027fc96f7f61ddbb9c5221d699da06bdb # v0.2.36
id: cuda-toolkit
with:
cuda: "13.1.1"
cuda: "13.3.1"
method: network
sub-packages: '["nvcc", "cudart-dev"]'
non-cuda-sub-packages: '["libcurand-dev"]'
Expand Down
45 changes: 24 additions & 21 deletions .github/workflows/examples-compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,11 @@ on:
- 'Cargo.lock'
- '.github/workflows/**'

# Each commit on main gets its own group, so it starts at once. Any other ref
# still shares one group and cancels the older run.
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true
group: ${{ github.workflow }}-${{ github.ref_name }}${{ github.ref_name == 'main' && format('-{0}', github.sha) || '' }}
cancel-in-progress: ${{ github.ref_name != 'main' }}

permissions:
contents: read
Expand Down Expand Up @@ -59,10 +61,10 @@ jobs:
# Needed for cuda.h and curand.h: bindgen runs in the shared
# cuda-bindings build script. Same setup as unit-tests.yml / clippy.yml.
- name: Install CUDA toolkit
uses: Jimver/cuda-toolkit@v0.2.35
uses: Jimver/cuda-toolkit@0ca15bb027fc96f7f61ddbb9c5221d699da06bdb # v0.2.36
id: cuda-toolkit
with:
cuda: "13.1.1"
cuda: "13.3.1"
method: network
sub-packages: '["nvcc", "cudart-dev"]'
# nvJitLink is packaged separately from cuda-nvcc on Linux. Keep it
Expand All @@ -74,30 +76,31 @@ jobs:
# The device pipeline shells out to LLVM's llc/opt for PTX
# generation. This pin is the FLOOR GATE: if someone lands IR that
# needs a newer llc, this job is where the floor bump becomes
# visible instead of on contributors' machines. LLVM 22 is the true
# floor: the ldmatrix/stmatrix family (llvm.nvvm.stmatrix.*, used by
# gemm_sol and gemm_sol_final) postdates llc-21, which "lowers" an
# unknown intrinsic by leaking its dotted LLVM name into the PTX as
# an `.extern .func` (exit 0, no diagnostic): unassemblable output
# that only surfaced once the ptxas verdict gate started assembling
# what this job produces. The pipeline now rejects such leaks with a
# named error, so an under-floor llc fails loudly here.
# If a future ubuntu-latest codename has no llvm-toolchain-*-22
# visible instead of on contributors' machines. LLVM 23 is the true
# floor: the bf16x2 to packed-FP8 conversions (PTX 9.1 forms, used
# by generated_intrinsics_blackwell) need `+ptx91`, which llc-22
# does not know. It ignored the unknown feature and emitted
# `.version 8.8` PTX that failed only at JIT; the pipeline now
# refuses a PTX 9.1 request below LLVM 23 with a named error, so an
# under-floor llc fails loudly here. The previous floor, LLVM 22 for
# the ldmatrix/stmatrix family (llc-21 leaked unknown intrinsics
# into the PTX as `.extern .func`), is covered by the same gate.
# If a future ubuntu-latest codename has no llvm-toolchain-*-23
# suite, apt-get update fails loudly; recover by pinning runs-on to
# the previous image or bumping the LLVM major here.
- name: Install LLVM 22 (llc/opt for the NVPTX backend)
- name: Install LLVM 23 (llc/opt for the NVPTX backend)
run: |
set -euo pipefail
source /etc/os-release
sudo install -d -m 0755 /etc/apt/keyrings
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key \
| sudo tee /etc/apt/keyrings/apt-llvm-org.asc >/dev/null
echo "deb [signed-by=/etc/apt/keyrings/apt-llvm-org.asc] https://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-22 main" \
| sudo tee /etc/apt/sources.list.d/llvm-22.list
echo "deb [signed-by=/etc/apt/keyrings/apt-llvm-org.asc] https://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-23 main" \
| sudo tee /etc/apt/sources.list.d/llvm-23.list
sudo apt-get update
sudo apt-get install -y --no-install-recommends llvm-22
llc-22 --version | head -2
opt-22 --version | head -2
sudo apt-get install -y --no-install-recommends llvm-23
llc-23 --version | head -2
opt-23 --version | head -2

- name: Compile every example (smoketest --compile-only)
# Step-level timeout, below the job's 75: a job-level timeout
Expand All @@ -106,7 +109,7 @@ jobs:
timeout-minutes: 50
env:
CUDA_TOOLKIT_PATH: ${{ steps.cuda-toolkit.outputs.CUDA_PATH }}
CUDA_OXIDE_LLC: /usr/bin/llc-22
CUDA_OXIDE_LLC: /usr/bin/llc-23
# Each example is its own cargo workspace; without a shared
# target dir the dep tree rebuilds ~85 times and blows the
# runner's ~14 GB disk (same trick as clippy.yml). smoketest.sh
Expand Down Expand Up @@ -153,7 +156,7 @@ jobs:
working-directory: cuda-oxide
env:
CUDA_TOOLKIT_PATH: ${{ steps.cuda-toolkit.outputs.CUDA_PATH }}
CUDA_OXIDE_LLC: /usr/bin/llc-22
CUDA_OXIDE_LLC: /usr/bin/llc-23
CARGO_TARGET_DIR: ${{ runner.temp }}/examples-shared-target
CARGO_INCREMENTAL: "0"
run: |
Expand Down
Loading
Loading