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

发布于:2025-08-05 ⋅ 阅读:(20) ⋅ 点赞:(0)

编译 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,极少见,一般是前面几个问题。
  • 解决办法

推荐排查步骤

  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 区,搜索类似报错。

网站公告

今日签到

点亮在社区的每一天
去签到