Skip to content

CuFlash-AttnCUDA FlashAttention 参考实现

O(N) 内存 • FP32/FP16 • 前向/反向 • 可归档级 v0.3.0

CuFlash-Attn

为什么选择 CuFlash-Attn?

适用场景

你想理解 FlashAttention 内部原理,实验注意力机制,或在没有重型框架依赖的情况下集成到项目中。

快速对比

特性CuFlash-AttnPyTorch SDPAFlashAttention-2
教育性代码⚠️
无依赖❌ PyTorch
Python 绑定✅ ctypes✅ 原生
训练支持
可定制✅ 简单⚠️ 困难⚠️

快速开始

5 分钟内运行:

bash
git clone https://github.com/LessUp/cuflash-attn.git
cd cuflash-attn

cmake --preset release
cmake --build --preset release

ctest --preset release --output-on-failure
cpp
#include "cuflash/flash_attention.h"

auto err = cuflash::flash_attention_forward(
    d_Q, d_K, d_V, d_O, d_L,
    batch_size, num_heads, seq_len, head_dim,
    scale, true, stream
);
python
import ctypes
lib = ctypes.CDLL("./build/release/libcuflash_attn.so")

# 通过 C ABI 调用
lib.cuflash_attention_forward_f32(
    q_ptr, k_ptr, v_ptr, o_ptr, l_ptr,
    B, H, N, D, scale, True, None
)

内存效率

序列长度标准注意力FlashAttention节省
1,0244 MB8 KB99.8%
4,09664 MB32 KB99.95%
16,3841 GB128 KB99.99%

文档导航

资源描述
快速开始指南Preset 构建路径
从源码构建平台、presets、覆盖参数
API 参考完整 C++ 和 C ABI 文档
算法详解分块、online softmax、重计算
故障排除常见问题与解决方案

项目状态

稳定的 v0.3.0 基线 —— 可归档级参考实现。当前重点:文档质量、工作流简化、Bug 修复。

详见 项目状态 了解维护姿态与治理规则。

OpenSpec 规范

本项目遵循 OpenSpec 规范驱动方法。权威需求定义:

Stable v0.3.0 baseline • OpenSpec-driven CUDA FlashAttention reference.

Contributors