已开启
[Bug]: 【26.2.0众测】容器环境连续 torch.compile 触发 pthread_create failed(pids 上限) #5244
tsst创建于  9月29日
tsst
tsst
9月29日 创建

在提交新问题之前,请确保您已经在社区中搜索过相关问题,并使用了社区中提供的资源/工具后,仍未找到满意的解决方式。

⚠️ 安全信息提醒:请仔细检查提供的文本内容,确保其不包含敏感数据信息,包括但不限于:

  • API 令牌或密钥
  • 密码或身份验证凭证
  • 私有网址或接口地址
  • 个人或机密数据
  • ...

在分享配置信息或代码示例时,请将敏感信息脱敏处理,或使用 <TOKEN> 等占位符替代原有内容。

环境信息

硬件:Atlas 800T A3(npu-smi Product Name = IT22HMDA_2_S,SoC = Ascend910_9382,HBM 64GB/芯片)

软件:CANN 9.1.0 + TorchNPU 26.1.0(torch 2.9.0 / torch_npu 2.9.0.post6)

容器:nproc=640(共享整机视图),cgroup pids.max=10000

🐛 问题描述

现象:
连续跑多个全新 torch.compile 编译时,Triton/Inductor 子进程崩溃:
text

LLVM ERROR: pthread_create failed: Resource temporarily unavailable

torch._inductor.exc.InductorError: SubprocException: An exception occurred in a subprocess:
Name=triton_poi_fused_relu_8
...
NoTritonConfigsError: No valid triton configs for kernel triton_poi_fused_relu_8.

复现步骤:
bash

连续跑多个全新 compile(例如 run_all.sh 连环跑)

cd /workspace/scripts/task2
bash run_all.sh

根因推测:

容器 nproc 暴露整机核数(640),Inductor/Triton 据此 fork 大量编译线程;

cgroup pids.max=10000 被打满,LLVM 后端 pthread_create 失败 → SIGABRT → 整个编译挂掉;

一个脚本崩溃后,/tmp/torchinductor_* 缓存里留半成品,导致后续脚本连锁崩溃。

临时处置(实测有效):

逐个脚本串行跑,不要用 run_all.sh 连环跑;

不要清 /tmp/torchinductor_*,让 FX 缓存复用(同脚本重跑 10~30s);

挂了就 pkill -9 -f <脚本名>,同脚本重跑。

建议:

官方识别容器 cgroup 限制,或默认限制编译线程数;

文档说明容器环境下需限制 Inductor/Triton 并行编译线程,避免打满 pids。![issue4_1.png](https://raw.gitcode.com/user-images/assets/7404318/d985d096-ba2a-4dc6-aa2a-20036a4282f1/issue4_1.png 'issue4_1.png')![issue4_2.png](https://raw.gitcode.com/user-images/assets/7404318/5f6ae75d-2fd4-44f7-90d5-36852f85b5d7/issue4_2.png 'issue4_2.png')

欢迎加入社区,感谢您对社区的贡献 🎉!

likedislike
TorchNPU-BotTorchNPU-Bot成员
9月29日 添加了label:help-wantedbot-triaged
TorchNPU-Bot
TorchNPU-Bot成员
9月29日 评论:

检测到社区任务相关 issue,自动添加标签:help-wanted

likedislike
ascend-robotascend-robot成员
9月29日 添加了label:bug
tssttsst
10月4日 关联了pull request:【26.1.0众测】TorchNPU 众测任务交付(任务1+任务2)- ander_tsing