Metadata-Version: 2.4
Name: furiosa-kernels
Version: 2026.3.0
Summary: TCL kernels for NPU
Author-email: "FuriosaAI, Inc." <pkg@furiosa.ai>
License-Expression: LicenseRef-Proprietary
Project-URL: Homepage, https://github.com/furiosa-ai/npu-tools
Project-URL: Repository, https://github.com/furiosa-ai/npu-tools
Project-URL: Changelog, https://github.com/furiosa-ai/npu-tools/blob/master/furiosa-kernels/CHANGELOG.md
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: ruff; extra == "dev"

# furiosa-kernels

A Python package providing TCL kernels as reusable `Kernel` data objects.

## Install

```bash
cd /path/to/npu-tools/furiosa-kernels
pip install -e ".[dev]"
```

## Test

```bash
pytest tests/ -v
```

## Usage

### Load a kernel from a `.tc` file

```python
from furiosa_kernels import Kernel

k = Kernel.from_file(name='my_kernel', path='path/to/my_kernel.tc')
print(k.dsl)
```

### Build a kernel with Python eDSL

```python
import furiosa.tcl as tcl
from furiosa_kernels import Kernel

@tcl.kernel
def my_kernel(
    weight: bf16[E, D, F],
    gather_index: i32[G],
) -> bf16[G, D, F]:
    output: bf16[G, D, F] = tcl.gather(weight, gather_index, E)
    return output

k = Kernel.from_edsl(my_kernel)
print(k.dsl)
```

### CLI: convert eDSL to DSL

`scripts/run_kernel.py` converts `@tcl.kernel` functions to TCL IR:

```bash
# Print generated DSL for a kernel
python scripts/run_kernel.py convert path/to/kernels.py my_kernel

# List all @tcl.kernel functions in a file
python scripts/run_kernel.py list path/to/kernels.py
```
