当前位置: 首页 > news >正文

编译 Paddle 遇到 flashattnv3 段错误问题解决

编译 Paddle 遇到:

Segmentation fault (core dumped)
make[5]: *** [CMakeFiles/flashattnv3.dir/build.make:260: CMakeFiles/flashattnv3.dir/flash_attn_v3/instantiations/flash_fwd_hdimall_fp16_paged_softcap_sm90.cu.o] Error 139
Segmentation fault (core dumped)
make[5]: *** [CMakeFiles/flashattnv3.dir/build.make:245: CMakeFiles/flashattnv3.dir/flash_attn_v3/instantiations/flash_fwd_hdimall_fp16_paged_sm90.cu.o] Error 139
make[4]: *** [CMakeFiles/Makefile2:155: CMakeFiles/flashattnv3.dir/all] Error 2
make[3]: *** [Makefile:136: all] Error 2
make[2]: *** [CMakeFiles/extern_flashattn.dir/build.make:86: third_party/flashattn/src/extern_flashattn-stamp/extern_flashattn-build] Error 2
make[1]: *** [CMakeFiles/Makefile2:6661: CMakeFiles/extern_flashattn.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs…
[ 9%] Linking CXX static library libap_pir.a
[ 9%] Built target ap_pir
make: *** [Makefile:136: all] Error 2

我在 cmake 选项中添加了:

 -DWITH_FLASHATTN_V3=OFF-DWITH_FLASHATTN=OFF

尝试不编译 FLASHATTN 也不行


nvidia-smi 查看了下驱动支持的 CUDA 版本为 12.2

而我的 docker CUDA 安装版本为 12.6 ,这个太高了…

我换了个docker,CUDA 版本为 12.3就可以了 hhhhh


你遇到的是 Segmentation fault (core dumped),通常简称为“段错误”。在编译 CUDA 项目(如 flash-attn v3)时出现该错误,通常意味着编译器进程自身崩溃,这并不是代码本身的语法错误,而是环境或资源配置的问题。常见原因和解决办法如下:


常见原因及解决办法

1. 内存不足

  • 表现:编译大型 CUDA 源文件时,内存消耗巨大,容易 OOM(Out Of Memory),导致编译器(如 nvcc)崩溃,报段错误。
  • 解决办法
    • 关闭不需要的程序,释放内存。
    • 增加交换分区(Swap)。
    • 增大物理内存。

2. 编译器或 CUDA 驱动不兼容

  • 表现:使用了不兼容的 gcc/g++ 或 CUDA toolkit 版本。
  • 解决办法
    • 检查 nvcc --version 和你的 CUDA 版本,确认其与 flash-attn 要求一致。
    • 检查 gcc --version,确认是否与 CUDA 支持的版本匹配(如 CUDA 12.x 支持 gcc 10/11,但不支持 5.x/6.x/13.x)。
    • 有时需要在环境变量中指定 CCCXX

3. 硬件架构不支持或设置不当

  • 表现:比如 sm90 只支持 Ada Lovelace 架构的 GPU (Hopper),在不支持的显卡上编译指定该架构会崩溃。
  • 解决办法
    • 检查你的 GPU 支持的 compute capability。
    • 修改 CMake 或 setup.py 配置,将 sm90 改为你显卡实际支持的架构(如 sm80, sm86, sm75 等)。
    • 例如:-DSM=80

4. 磁盘空间不足

  • 表现:/tmp 或 build 目录可用空间不够,编译过程中写入失败导致崩溃。
  • 解决办法
    • 使用 df -h 检查磁盘空间,清理无用文件。

5. 代码或第三方依赖有 bug

  • 表现:flash-attn 或其依赖的代码本身有 bug,极少见,一般是前面几个问题。
  • 解决办法
    • 升级到最新版本。
    • 查阅 flash-attn issues。

推荐排查步骤

  1. 确认 GPU 驱动、CUDA、gcc 版本兼容。
  2. 确认显卡型号和 compute capability,避免用不支持的 SM 架构。
  3. 检查服务器内存是否充足,建议 16G 以上内存。
  4. 检查磁盘空间。
  5. 尝试单独编译出错文件,比如:
    nvcc -c flash_attn_v3/instantiations/flash_fwd_hdimall_fp16_paged_softcap_sm90.cu
    
    看是否有详细报错信息。
  6. 查阅 flash-attn 官方文档和 issue 区,搜索类似报错。
http://www.dtcms.com/a/314858.html

相关文章:

  • PostgreSQL——表的基本操作
  • 前端接入通义千问(各大模型接入方法类似)
  • 【Spring Boot 快速入门】六、配置文件
  • 15个命令上手Linux!
  • 回归分析:从数据类型到预测模型的核心逻辑
  • 8.4 打卡 DAY 33: 第一个神经网络 - MLP的构建与训练
  • 《时间之隙:内存溢出》
  • [自动化Adapt] 数据脱敏 | 文本替换/图像模糊 | 引擎热插拔 | 多队列并行处理
  • 网络资源模板--基于Android Studio 实现的消消乐游戏
  • ffmpeg下载windows教程
  • 高密度客流识别精度↑32%!陌讯多模态融合算法在智慧交通的实战解析
  • 模拟IC设计提高系列8-运算跨导放大器OTA Operational Transconduct Amplifiers
  • Cursor国产平替重磅开源!离线研发AI助手,拒绝云端受制于人
  • 【数据结构初阶】--顺序表(一)
  • BD202402跑步 线性求逆元 素数筛 数学
  • 数分思维13:AB测试
  • 开源网页生态掘金:从Bootstrap二次开发到行业专属组件库的技术变现
  • 复杂场景识别率↑31%!陌讯多模态融合算法在智慧环卫的实战解析
  • 上一篇文章的补充理解
  • 深度学习零基础入门(4)-卷积神经网络架构
  • sqli-libs通关教程(21-30)
  • 文件上传
  • c++ std::vector std::find_if 自定义结构体 查找
  • 算力网络架构演进的思考
  • Linux 系统启动原理
  • TorchDynamo源码解析:从字节码拦截到性能优化的设计与实践
  • 服务器数据安全:利用阿里云OSS/腾讯云COS实现网站数据自动备份
  • 操作系统中线程的三种实现方式
  • 牛客网之华为机试题:HJ26 字符串排序
  • Webpack 搭建 Vue3 脚手架详细步骤