Dao-AILab/quack

GitHub: Dao-AILab/quack

QuACK 是一组使用 CuTe-DSL 编写的高性能 CUDA 核函数库,为深度学习提供经高度优化的归一化、激活和矩阵乘法等算子。

Stars: 1056 | Forks: 142

# 🦆 QuACK:一组奇特可爱的 CuTe Kernel 🦆 Kernel 使用 [CuTe-DSL](https://docs.nvidia.com/cutlass/latest/media/docs/pythonDSL/cute_dsl_general/dsl_introduction.html) 编写。 ## 安装 ``` # 对于 CUDA 12.9: pip install quack-kernels # 对于 CUDA 13.x: pip install 'quack-kernels[cu13]' --extra-index-url https://download.pytorch.org/whl/cu130 # 暂时不要将 uv 用于 CUDA 13.x 安装:它可能会竞争/安装 # nvidia-cutlass-dsl[cu13],导致顺序错误 (NVIDIA/cutlass#3259): # https://github.com/NVIDIA/cutlass/issues/3259 # 可选:安装 NVIDIA matmul heuristics 以获得更好的未调优 GEMM 配置 pip install 'quack-kernels[heuristics]' # 可选:JAX 绑定(会拉取 jax 和 jax-tvm-ffi) pip install 'quack-kernels[jax]' ``` ## 环境要求 - H100、B200/B300 或 RTX 50 GPU - CUDA toolkit 12.9+ - Python 3.12 ## Kernel 🐥 - 🦆 RMSNorm 前向 + 反向 - 🦆 Softmax 前向 + 反向 - 🦆 交叉熵前向 + 反向 - 🦆 Layernorm 前向 + 反向 - 🦆 Hopper gemm + epilogue - 🦆 Blackwell gemm + epilogue - 🦆 Blackwell GeForce gemm + epilogue ## 用法 ``` from quack import rmsnorm, softmax, cross_entropy ``` 部分 Kernel 也提供了 JAX 绑定(参见 [docs/jax.md](docs/jax.md)): ``` from quack.softmax_jax import softmax ``` ## 文档 - [JAX 接口](docs/jax.md) — 可选的 `jax` + `jax-tvm-ffi` 绑定,示例请参见 `quack/softmax_jax.py`。 [2025-07-10] 我们发布了一篇详尽的 [博客文章](media/2025-07-10-membound-sol.md),介绍了如何借助 [CuTe-DSL](https://docs.nvidia.com/cutlass/media/docs/pythonDSL/cute_dsl_general/dsl_introduction.html), 在 Python 的舒适环境中将受限于内存带宽的 kernel 提速到极限。 ## 性能
详情请参阅我们的[博客文章](media/2025-07-10-membound-sol.md)。 ## 开发 要设置开发环境: ``` pip install -e '.[dev]' pre-commit install # 对于 CUDA 13.x: pip install 'quack-kernels[dev,cu13]' --extra-index-url https://download.pytorch.org/whl/cu130 # 暂时不要将 uv 用于 CUDA 13.x 安装;请改用 pip。 # 参见 https://github.com/NVIDIA/cutlass/issues/3259 ```
标签:CUDA, NVIDIA CuTe, Vectored Exception Handling, 凭据扫描, 深度学习, 算子库, 逆向工具, 高性能计算