当前位置: 首页 > 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.lryc.cn/news/609463.html

相关文章:

  • 37. line-height: 1.2 与 line-height: 120% 的区别
  • YAML文件
  • Vue Router快速入门
  • 高精度实战:YOLOv11交叉口目标行为全透视——轨迹追踪×热力图×滞留分析(附完整代码)
  • 深度学习TR3周:Pytorch复现Transformer
  • 第三阶段—8天Python从入门到精通【itheima】-143节(pyspark实战——数据计算——flatmap方法)
  • 大型语言模型落地应用全景指南:微调、提示工程、多模态与企业级解决方案
  • Perl 面向对象编程深入解析
  • 如何计算卷积层的计算量?从参数到公式的详细推导
  • PPT自动化 python-pptx - 11 : 备注页 (Notes Slides)
  • JUCE VST AI 开源
  • 进程生命周期管理:从创建到终止的完整逻辑
  • 解锁高并发LLM推理:动态批处理、令牌流和使用vLLM的KV缓存秘密
  • Oracle ASH的手册
  • Git简易教程
  • javacc实现简单SQL解析器
  • JSqlParser学习笔记 快速使用JSqlParser
  • [特殊字符] Ubuntu 下 MySQL 离线部署教学(含手动步骤与一键脚本)
  • 虚拟机中查看和修改文件权限
  • SelectDB:新一代实时数仓的核心引擎与应用实战
  • Python day34
  • Druid学习笔记 03、Druid的AstNode类详解与其他产品测试体验
  • 阿里云-通义灵码:解锁云原生智能开发新能力,让云开发更“灵”~
  • 【Linux操作系统】简学深悟启示录:进程初步
  • [spring-cloud: @LoadBalanced @LoadBalancerClient]-源码分析
  • DevOps平台大比拼:Gitee、Jenkins与CircleCI如何选型?
  • 集成电路学习:什么是BLE Mesh低功耗蓝牙网络
  • AI产品经理手册(Ch6-8)AI Product Manager‘s Handbook学习笔记
  • Cursor国产平替重磅开源!离线研发AI助手,拒绝云端受制于人
  • 8位以及32位的MCU如何进行选择?