编译 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)。 - 有时需要在环境变量中指定
CC
和CXX
。
- 检查
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。
推荐排查步骤
- 确认 GPU 驱动、CUDA、gcc 版本兼容。
- 确认显卡型号和 compute capability,避免用不支持的 SM 架构。
- 检查服务器内存是否充足,建议 16G 以上内存。
- 检查磁盘空间。
- 尝试单独编译出错文件,比如:
看是否有详细报错信息。nvcc -c flash_attn_v3/instantiations/flash_fwd_hdimall_fp16_paged_softcap_sm90.cu
- 查阅 flash-attn 官方文档和 issue 区,搜索类似报错。