Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
164 changes: 65 additions & 99 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,194 +7,160 @@ on:
workflow_dispatch:
inputs:
dry-run-only:
description: "Run xtask publish in dry-run mode (no publish)"
description: "Run crate publish jobs in dry-run mode (no publish)"
type: boolean
required: false
default: false

jobs:
publish-cubecl-zspace:
publish-t4a-cubecl-zspace:
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-zspace
crate: t4a-cubecl-zspace
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-common:
publish-t4a-cubecl-common:
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-common
crate: t4a-cubecl-common
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-macros-internal:
publish-t4a-cubecl-macros-internal:
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-macros-internal
crate: t4a-cubecl-macros-internal
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-ir:
publish-t4a-cubecl-ir:
needs:
- publish-cubecl-common
- publish-cubecl-macros-internal
- publish-t4a-cubecl-common
- publish-t4a-cubecl-macros-internal
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-ir
crate: t4a-cubecl-ir
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-std:
publish-t4a-cubecl-runtime:
needs:
- publish-cubecl-core
- publish-cubecl-runtime
- publish-t4a-cubecl-common
- publish-t4a-cubecl-ir
- publish-t4a-cubecl-zspace
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-std
crate: t4a-cubecl-runtime
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-runtime:
publish-t4a-cubecl-macros:
needs:
- publish-cubecl-ir
- publish-cubecl-common
- publish-t4a-cubecl-common
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-runtime
crate: t4a-cubecl-macros
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-macros:
publish-t4a-cubecl-core:
needs:
- publish-cubecl-common
- publish-t4a-cubecl-common
- publish-t4a-cubecl-ir
- publish-t4a-cubecl-runtime
- publish-t4a-cubecl-macros
- publish-t4a-cubecl-zspace
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-macros
crate: t4a-cubecl-core
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-core:
publish-t4a-cubecl-opt:
needs:
- publish-cubecl-ir
- publish-cubecl-runtime
- publish-cubecl-macros
- publish-t4a-cubecl-common
- publish-t4a-cubecl-core
- publish-t4a-cubecl-ir
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-core
crate: t4a-cubecl-opt
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-opt:
publish-t4a-cubecl-cpp:
needs:
- publish-cubecl-ir
- publish-cubecl-common
- publish-cubecl-core
- publish-t4a-cubecl-common
- publish-t4a-cubecl-core
- publish-t4a-cubecl-opt
- publish-t4a-cubecl-runtime
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-opt
crate: t4a-cubecl-cpp
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-spirv:
publish-t4a-cubecl-std:
needs:
- publish-cubecl-opt
- publish-cubecl-common
- publish-cubecl-core
- publish-cubecl-runtime
- publish-t4a-cubecl-common
- publish-t4a-cubecl-core
- publish-t4a-cubecl-runtime
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-spirv
crate: t4a-cubecl-std
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-wgpu:
publish-t4a-cubecl-wgpu:
needs:
- publish-cubecl-std
- publish-cubecl-spirv
- publish-cubecl-common
- publish-cubecl-runtime
- publish-cubecl-core
- publish-t4a-cubecl-common
- publish-t4a-cubecl-core
- publish-t4a-cubecl-cpp
- publish-t4a-cubecl-ir
- publish-t4a-cubecl-runtime
- publish-t4a-cubecl-std
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-wgpu
crate: t4a-cubecl-wgpu
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-cpp:
publish-t4a-cubecl-cuda:
needs:
- publish-cubecl-common
- publish-cubecl-runtime
- publish-cubecl-core
- publish-cubecl-opt
- publish-t4a-cubecl-common
- publish-t4a-cubecl-core
- publish-t4a-cubecl-cpp
- publish-t4a-cubecl-runtime
- publish-t4a-cubecl-std
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-cpp
crate: t4a-cubecl-cuda
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-cuda:
publish-t4a-cubecl:
needs:
- publish-cubecl-std
- publish-cubecl-cpp
- publish-cubecl-common
- publish-cubecl-runtime
- publish-cubecl-core
- publish-t4a-cubecl-core
- publish-t4a-cubecl-cuda
- publish-t4a-cubecl-ir
- publish-t4a-cubecl-runtime
- publish-t4a-cubecl-std
- publish-t4a-cubecl-wgpu
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-cuda
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-hip:
needs:
- publish-cubecl-std
- publish-cubecl-cpp
- publish-cubecl-common
- publish-cubecl-runtime
- publish-cubecl-core
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-hip
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl-cpu:
needs:
- publish-cubecl-common
- publish-cubecl-std
- publish-cubecl-core
- publish-cubecl-runtime
- publish-cubecl-opt
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl-cpu
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubecl:
needs:
- publish-cubecl-core
- publish-cubecl-cuda
- publish-cubecl-wgpu
- publish-cubecl-cpu
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubecl
crate: t4a-cubecl
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}
15 changes: 7 additions & 8 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,23 +35,22 @@ This repository is the `tensor4all/cubecl` fork of upstream
tenferro may depend on:

```toml
cubecl = { package = "t4a-cubecl", version = "=0.10.0-t4a.1", features = ["cuda"] }
cubecl-cuda = { package = "t4a-cubecl-cuda", version = "=0.10.0-t4a.1" }
cubecl-runtime = { package = "t4a-cubecl-runtime", version = "=0.10.0-t4a.1" }
cubecl = { package = "t4a-cubecl", version = "=0.10.0", features = ["cuda"] }
cubecl-cuda = { package = "t4a-cubecl-cuda", version = "=0.10.0" }
cubecl-runtime = { package = "t4a-cubecl-runtime", version = "=0.10.0" }
```

- Publish only the first-party crate dependency closure required by
`tenferro-rs`. Do not publish unused CubeCL workspace crates unless tenferro
starts requiring them.
- For the current CUDA path, the expected publish set is:
- For the current CUDA and WebGPU paths, the expected publish set is:
`t4a-cubecl`, `t4a-cubecl-common`, `t4a-cubecl-core`,
`t4a-cubecl-ir`, `t4a-cubecl-macros`,
`t4a-cubecl-macros-internal`, `t4a-cubecl-runtime`,
`t4a-cubecl-zspace`, `t4a-cubecl-std`, `t4a-cubecl-cuda`,
`t4a-cubecl-cpp`, and `t4a-cubecl-opt`.
- Do not publish `cubecl-cpu`, `cubecl-hip`, `cubecl-wgpu`,
`cubecl-spirv`, examples, or `xtask` unless they become required by
tenferro.
`t4a-cubecl-wgpu`, `t4a-cubecl-cpp`, and `t4a-cubecl-opt`.
- Do not publish `cubecl-cpu`, `cubecl-hip`, `cubecl-spirv`, examples, or
`xtask` unless they become required by tenferro.

## Public Messaging

Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# https://doc.rust-lang.org/cargo/reference/resolver.html#feature-resolver-version-2
resolver = "2"

members = ["crates/*", "examples/*", "xtask"]
members = ["crates/*", "xtask"]

[workspace.package]
edition = "2024"
Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
> **tensor4all temporary fork.** The `t4a-cubecl*` crates published from this
> repository are temporary tensor4all fork packages used by `tenferro-rs` while
> required patches are being upstreamed to the official CubeCL project. They are
> not a replacement for upstream CubeCL, and the intent is to return to upstream
> package names once the needed patches have landed.

<div align="center">
<img src="./assets/logo.drawio.svg" width="400px"/>

Expand Down
12 changes: 8 additions & 4 deletions crates/cubecl-common/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,20 @@ authors = [
"Nathaniel Simard (@nathanielsimard)",
]
categories = ["science", "mathematics", "algorithms"]
description = "Common crate for CubeCL"
description = "Temporary tensor4all fork of CubeCL common utilities"
edition.workspace = true
keywords = ["gpu", "cuda", "wgpu"]
license.workspace = true
name = "cubecl-common"
readme.workspace = true
repository = "https://github.com/tracel-ai/cubecl/tree/main/crates/cubecl-common"
name = "t4a-cubecl-common"
readme = "README.md"
repository = "https://github.com/tensor4all/cubecl/tree/main/crates/cubecl-common"
version.workspace = true


[lib]
name = "cubecl_common"


[lints]
workspace = true

Expand Down
2 changes: 2 additions & 0 deletions crates/cubecl-common/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
> **tensor4all temporary fork.** This `t4a-cubecl*` package is a temporary tensor4all fork used by `tenferro-rs` while required patches are being upstreamed to the official CubeCL project. It is not a replacement for upstream CubeCL.

# CubeCL Common

The `cubecl-common` package hosts code that _must_ be shared between cubecl packages (with `std` or
Expand Down
20 changes: 12 additions & 8 deletions crates/cubecl-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,20 @@ authors = [
"louisfd <[email protected]>",
]
categories = ["science", "mathematics", "algorithms"]
description = "CubeCL core create"
description = "Temporary tensor4all fork of CubeCL core"
edition.workspace = true
keywords = []
license.workspace = true
name = "cubecl-core"
name = "t4a-cubecl-core"
readme.workspace = true
repository = "https://github.com/tracel-ai/cubecl/tree/main/crates/cubecl-core"
repository = "https://github.com/tensor4all/cubecl/tree/main/crates/cubecl-core"
version.workspace = true


[lib]
name = "cubecl_core"


[lints]
workspace = true

Expand All @@ -32,16 +36,16 @@ log = { workspace = true }
test-log = { workspace = true, optional = true }
tracing = { workspace = true, features = ["attributes"], optional = true }

cubecl-ir = { path = "../cubecl-ir", version = "0.10.0", default-features = false, features = [
cubecl-ir = { package = "t4a-cubecl-ir", path = "../cubecl-ir", version = "0.10.0", default-features = false, features = [
"serde",
] }
cubecl-runtime = { path = "../cubecl-runtime", version = "0.10.0", default-features = false }
cubecl-zspace = { path = "../cubecl-zspace", version = "0.10.0" }
cubecl-runtime = { package = "t4a-cubecl-runtime", path = "../cubecl-runtime", version = "0.10.0", default-features = false }
cubecl-zspace = { package = "t4a-cubecl-zspace", path = "../cubecl-zspace", version = "0.10.0" }

bitflags = { workspace = true }
bytemuck = { workspace = true }
cubecl-common = { path = "../cubecl-common", version = "0.10.0", default-features = false }
cubecl-macros = { path = "../cubecl-macros", version = "0.10.0", default-features = false }
cubecl-common = { package = "t4a-cubecl-common", path = "../cubecl-common", version = "0.10.0", default-features = false }
cubecl-macros = { package = "t4a-cubecl-macros", path = "../cubecl-macros", version = "0.10.0", default-features = false }
derive-new = { workspace = true }
derive_more = { workspace = true, features = [
"not",
Expand Down
Loading
Loading