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
117 changes: 17 additions & 100 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,140 +7,57 @@ 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-cubek-random:
publish-t4a-cubek-random:
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubek-random
crate: t4a-cubek-random
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubek-test-utils:
needs:
- publish-cubek-random
- publish-cubek-quant
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubek-test-utils
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

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

publish-cubek-reduce:
needs:
- publish-cubek-random
- publish-cubek-test-utils
- publish-cubek-std
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubek-reduce
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubek-matmul:
needs:
- publish-cubek-random
- publish-cubek-reduce
- publish-cubek-quant
- publish-cubek-test-utils
- publish-cubek-std
publish-t4a-cubek-quant:
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubek-matmul
crate: t4a-cubek-quant
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubek-convolution:
needs:
- publish-cubek-random
- publish-cubek-reduce
- publish-cubek-matmul
- publish-cubek-test-utils
- publish-cubek-std
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubek-convolution
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubek-attention:
needs:
- publish-cubek-random
- publish-cubek-reduce
- publish-cubek-matmul
- publish-cubek-test-utils
- publish-cubek-std
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubek-attention
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubek-fft:
needs:
- publish-cubek-test-utils
- publish-cubek-std
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubek-fft
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}

publish-cubek-interpolate:
publish-t4a-cubek-test-utils:
needs:
- publish-cubek-test-utils
- publish-t4a-cubek-random
- publish-t4a-cubek-quant
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubek-interpolate
crate: t4a-cubek-test-utils
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}


publish-cubek-std:
publish-t4a-cubek-std:
needs:
- publish-cubek-test-utils
- publish-t4a-cubek-test-utils
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubek-std
crate: t4a-cubek-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-cubek:
publish-t4a-cubek-matmul:
needs:
- publish-cubek-random
- publish-cubek-reduce
- publish-cubek-quant
- publish-cubek-matmul
- publish-cubek-attention
- publish-cubek-convolution
- publish-cubek-fft
- publish-cubek-interpolate
- publish-cubek-test-utils
- publish-cubek-std
- publish-t4a-cubek-quant
- publish-t4a-cubek-std
- publish-t4a-cubek-test-utils
uses: tracel-ai/github-actions/.github/workflows/publish-crate.yml@v8
with:
crate: cubek
crate: t4a-cubek-matmul
dry-run-only: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run-only || false }}
secrets:
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}
17 changes: 6 additions & 11 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,12 @@ rust-version = "1.92"
version = "0.2.0"

[workspace.dependencies]
### For local development. ###
# cubecl = { path = "../cubecl/crates/cubecl", default-features = false }
# cubecl-common = { path = "../cubecl/crates/cubecl-common", default-features = false }

### For the main cubek branch. ###
# cubecl = { git = "https://github.com/tracel-ai/cubecl", rev = "7cf203735e095e640a2c03b2400d0faa03196bb4", default-features = false }
# cubecl-common = { git = "https://github.com/tracel-ai/cubecl", rev = "7cf203735e095e640a2c03b2400d0faa03196bb4", default-features = false }

### For tensor4all fork integration. ###
cubecl = { git = "https://github.com/tensor4all/cubecl.git", rev = "f5e5ec178f9aebca9362b829ffef708f720ff692", default-features = false }
cubecl-common = { git = "https://github.com/tensor4all/cubecl.git", rev = "f5e5ec178f9aebca9362b829ffef708f720ff692", default-features = false }
### tensor4all fork release preparation. ###
# PR/CI builds use the tensor4all CubeCL commit that adds the `t4a-cubecl*`
# package manifests. Published packages use the registry packages at the same
# exact versions.
cubecl = { package = "t4a-cubecl", git = "https://github.com/tensor4all/cubecl.git", rev = "68365e47322123359d0a07d741ba9771a0bf6ffe", version = "=0.10.0", default-features = false }
cubecl-common = { package = "t4a-cubecl-common", git = "https://github.com/tensor4all/cubecl.git", rev = "68365e47322123359d0a07d741ba9771a0bf6ffe", version = "=0.10.0", default-features = false }

derive-new = { version = "0.7.0", default-features = false }
log = { default-features = false, version = "0.4.22" }
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-cubek*` crates published from this
> repository are temporary tensor4all fork packages used by `tenferro-rs` while
> required CubeK/CubeCL patches are being upstreamed. They are not a replacement
> for upstream CubeK, and the intent is to return to upstream package names once
> the needed patches have landed.

<div align="center">
<img src="https://raw.githubusercontent.com/tracel-ai/cubek/main/assets/image.webp" width="150px"/>

Expand Down
7 changes: 4 additions & 3 deletions benchmarks/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ edition.workspace = true
keywords = []
license.workspace = true
name = "benchmarks"
publish = false
readme.workspace = true
repository = "https://github.com/tracel-ai/cubek"
repository = "https://github.com/tensor4all/cubek"
version.workspace = true

[features]
Expand Down Expand Up @@ -46,7 +47,7 @@ cubek = { path = "../crates/cubek", version = "0.2.0", default-features = false,
cubek-interpolate = { path = "../crates/cubek-interpolate", version = "0.2.0",features = [
"cpu-reference",
], optional = true }
cubek-matmul = { path = "../crates/cubek-matmul", version = "0.2.0", features = [
cubek-matmul = { package = "t4a-cubek-matmul", path = "../crates/cubek-matmul", version = "0.2.0", features = [
"cpu-reference",
], optional = true }
cubek-attention = { path = "../crates/cubek-attention", version = "0.2.0", features = [
Expand All @@ -61,7 +62,7 @@ cubek-fft = { path = "../crates/cubek-fft", version = "0.2.0", features = [
cubek-reduce = { path = "../crates/cubek-reduce", version = "0.2.0", features = [
"cpu-reference",
], optional = true }
cubek-test-utils = { path = "../crates/cubek-test-utils", version = "0.2.0" }
cubek-test-utils = { package = "t4a-cubek-test-utils", path = "../crates/cubek-test-utils", version = "0.2.0" }
half = { workspace = true }

[[bench]]
Expand Down
11 changes: 6 additions & 5 deletions crates/cubek-attention/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ edition.workspace = true
keywords = []
license.workspace = true
name = "cubek-attention"
publish = false
readme.workspace = true
repository = "https://github.com/tracel-ai/cubek/tree/main/crates/cubek-attention"
repository = "https://github.com/tensor4all/cubek/tree/main/crates/cubek-attention"
version.workspace = true

[features]
Expand All @@ -23,9 +24,9 @@ cpu-reference = ["dep:cubek-test-utils"]
[dependencies]
cubecl = { workspace = true, features = ["stdlib"] }
cubecl-common = { workspace = true }
cubek-matmul = { path = "../cubek-matmul", version = "0.2.0", default-features = false }
cubek-std = { path = "../cubek-std", version = "0.2.0", default-features = false }
cubek-test-utils = { path = "../cubek-test-utils", version = "0.2.0", default-features = false, optional = true }
cubek-matmul = { package = "t4a-cubek-matmul", path = "../cubek-matmul", version = "0.2.0", default-features = false }
cubek-std = { package = "t4a-cubek-std", path = "../cubek-std", version = "0.2.0", default-features = false }
cubek-test-utils = { package = "t4a-cubek-test-utils", path = "../cubek-test-utils", version = "0.2.0", default-features = false, optional = true }

bytemuck = { workspace = true }
half = { workspace = true, features = ["bytemuck"] }
Expand All @@ -34,6 +35,6 @@ serde = { workspace = true }
[dev-dependencies]
cubecl = { workspace = true, features = ["test-runtime"] }
cubek-attention = { path = ".", features = ["cpu-reference"] }
cubek-test-utils = { path = "../cubek-test-utils", version = "0.2.0", default-features = false }
cubek-test-utils = { package = "t4a-cubek-test-utils", path = "../cubek-test-utils", version = "0.2.0", default-features = false }
pretty_assertions = { workspace = true }
trybuild = "1"
11 changes: 6 additions & 5 deletions crates/cubek-convolution/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ edition.workspace = true
keywords = []
license.workspace = true
name = "cubek-convolution"
publish = false
readme.workspace = true
repository = "https://github.com/tracel-ai/cubek/tree/main/crates/cubek-convolution"
repository = "https://github.com/tensor4all/cubek/tree/main/crates/cubek-convolution"
version.workspace = true

[features]
Expand All @@ -23,9 +24,9 @@ cpu-reference = ["dep:cubek-test-utils", "cubek-matmul/cpu-reference"]
[dependencies]
cubecl = { workspace = true, features = ["stdlib"] }
cubecl-common = { workspace = true }
cubek-matmul = { path = "../cubek-matmul", default-features = false, version = "0.2.0" }
cubek-std = { path = "../cubek-std", default-features = false, version = "0.2.0" }
cubek-test-utils = { path = "../cubek-test-utils", version = "0.2.0", default-features = false, optional = true }
cubek-matmul = { package = "t4a-cubek-matmul", path = "../cubek-matmul", default-features = false, version = "0.2.0" }
cubek-std = { package = "t4a-cubek-std", path = "../cubek-std", default-features = false, version = "0.2.0" }
cubek-test-utils = { package = "t4a-cubek-test-utils", path = "../cubek-test-utils", version = "0.2.0", default-features = false, optional = true }
derive-new = { workspace = true }

bytemuck = { workspace = true }
Expand All @@ -36,6 +37,6 @@ serde = { workspace = true }
[dev-dependencies]
cubecl = { workspace = true, features = ["test-runtime"] }
cubek-convolution = { path = ".", features = ["cpu-reference"] }
cubek-test-utils = { path = "../cubek-test-utils", version = "0.2.0", default-features = false }
cubek-test-utils = { package = "t4a-cubek-test-utils", path = "../cubek-test-utils", version = "0.2.0", default-features = false }
pretty_assertions = { workspace = true }
trybuild = "1"
7 changes: 4 additions & 3 deletions crates/cubek-fft/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ edition.workspace = true
keywords = []
license.workspace = true
name = "cubek-fft"
publish = false
readme.workspace = true
repository = "https://github.com/tracel-ai/cubek/tree/main/crates/cubek-fft"
repository = "https://github.com/tensor4all/cubek/tree/main/crates/cubek-fft"
version.workspace = true

[features]
Expand All @@ -22,12 +23,12 @@ cpu-reference = ["dep:num-complex", "dep:cubek-test-utils"]

[dependencies]
cubecl = { workspace = true }
cubek-test-utils = { path = "./../cubek-test-utils/", version = "0.2.0", default-features = false, optional = true }
cubek-test-utils = { package = "t4a-cubek-test-utils", path = "./../cubek-test-utils/", version = "0.2.0", default-features = false, optional = true }
num-complex = { workspace = true, optional = true }

[dev-dependencies]
num-complex = { workspace = true }
cubecl = { workspace = true, features = ["test-runtime"] }
cubecl-common = { workspace = true }
cubek-fft = { path = ".", features = ["cpu-reference"] }
cubek-test-utils = { path = "./../cubek-test-utils/", version = "0.2.0", default-features = false }
cubek-test-utils = { package = "t4a-cubek-test-utils", path = "./../cubek-test-utils/", version = "0.2.0", default-features = false }
7 changes: 4 additions & 3 deletions crates/cubek-interpolate/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ edition.workspace = true
keywords = []
license.workspace = true
name = "cubek-interpolate"
publish = false
readme.workspace = true
repository = "https://github.com/tracel-ai/cubek/tree/main/crates/cubek-interpolate"
repository = "https://github.com/tensor4all/cubek/tree/main/crates/cubek-interpolate"
version.workspace = true

[features]
Expand All @@ -24,9 +25,9 @@ cpu-reference = ["dep:cubek-test-utils"]
cubecl = { workspace = true }
cubecl-common = { workspace = true }
thiserror = { workspace = true }
cubek-test-utils = { path = "./../cubek-test-utils/", version = "0.2.0", default-features = false, optional = true }
cubek-test-utils = { package = "t4a-cubek-test-utils", path = "./../cubek-test-utils/", version = "0.2.0", default-features = false, optional = true }

[dev-dependencies]
cubecl = { workspace = true, features = ["test-runtime"] }
cubek-interpolate = { path = ".", features = ["cpu-reference"] }
cubek-test-utils = { path = "../cubek-test-utils", version = "0.2.0", default-features = false }
cubek-test-utils = { package = "t4a-cubek-test-utils", path = "../cubek-test-utils", version = "0.2.0", default-features = false }
21 changes: 12 additions & 9 deletions crates/cubek-matmul/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
[package]
authors = ["louisfd <louisfd94@gmail.com>"]
categories = ["science", "mathematics", "algorithms"]
description = "CubeK: Matrix Multiplication Kernels"
description = "Temporary tensor4all fork of CubeK: Matrix Multiplication Kernels"
edition.workspace = true
keywords = []
license.workspace = true
name = "cubek-matmul"
readme.workspace = true
repository = "https://github.com/tracel-ai/cubek/tree/main/crates/cubek-matmul"
name = "t4a-cubek-matmul"
readme = "README.md"
repository = "https://github.com/tensor4all/cubek/tree/main/crates/cubek-matmul"
version.workspace = true

[lib]
name = "cubek_matmul"

[features]
default = ["std", "cubecl/default"]
std = ["cubecl/std"]
Expand All @@ -21,8 +24,8 @@ full = ["extended"]
cpu-reference = ["dep:cubek-test-utils"]

[dependencies]
cubek-std = { path = "../cubek-std", version = "0.2.0", default-features = false }
cubek-test-utils = { path = "../cubek-test-utils", version = "0.2.0", default-features = false, optional = true }
cubek-std = { package = "t4a-cubek-std", path = "../cubek-std", version = "0.2.0", default-features = false }
cubek-test-utils = { package = "t4a-cubek-test-utils", path = "../cubek-test-utils", version = "0.2.0", default-features = false, optional = true }

bytemuck = { workspace = true }
cubecl = { workspace = true, features = ["stdlib"] }
Expand All @@ -33,9 +36,9 @@ serde = { workspace = true }

[dev-dependencies]
cubecl = { workspace = true, features = ["test-runtime"] }
cubek-matmul = { path = ".", features = ["cpu-reference"] }
cubek-test-utils = { path = "../cubek-test-utils", version = "0.2.0", default-features = false }
cubek-quant = { path = "../cubek-quant", version = "0.2.0", features = [
cubek-matmul = { package = "t4a-cubek-matmul", path = ".", features = ["cpu-reference"] }
cubek-test-utils = { package = "t4a-cubek-test-utils", path = "../cubek-test-utils", version = "0.2.0", default-features = false }
cubek-quant = { package = "t4a-cubek-quant", path = "../cubek-quant", version = "0.2.0", features = [
"kernels",
] }
pretty_assertions = { workspace = true }
Expand Down
2 changes: 2 additions & 0 deletions crates/cubek-matmul/README.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
> **tensor4all temporary fork.** This `t4a-cubek*` package is a temporary tensor4all fork used by `tenferro-rs` while required patches are being upstreamed to the official CubeK/CubeCL projects. It is not a replacement for upstream CubeK.

# CubeCL Matrix Multiplication Kernels Engine
Loading
Loading