Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix segmentfault in (#2506) #2530

Merged
merged 1 commit into from
May 17, 2024
Merged

Conversation

MengqingCao
Copy link
Contributor

解决Kunpeng cpu上 segmentfault 的同时,避免了 deepspeed 的重复初始化。
只粗略定位到是数据集处理模块 processor.py 中存在多线程处理的操作,造成了多进程读取数据时的死锁问题。因此在 processor 开始处设置线程数为1,来防止死锁和 segmentfault

为防止侵入式修改,在读取 cpu 硬件信息判断为 Kunpeng 后才进行此修改。

    # set number of threads in the subprocesses to 1
    # Why? There may be some operators ultilizing multi-threads in processor,
    # causing possibly deadlock in Kunpeng.
    # Similar issue in PyTorch: https://github.com/pytorch/pytorch/issues/45198

  - fix segmentfault in Kunpeng (wenet-e2e#2506)
  - avoids the repeated initialization of deepspeed causing by (wenet-e2e#2507)
@MengqingCao
Copy link
Contributor Author

@xingchensong 感谢神速review,麻烦验证下在你的diy代码上是否还有影响:-)

@xingchensong
Copy link
Member

@xingchensong 感谢神速review,麻烦验证下在你的diy代码上是否还有影响:-)

ok

@Mddct
Copy link
Collaborator

Mddct commented May 16, 2024

有个openmp的环境变量 把那个thread 设置成2 试下

另外 是processor中哪个用来多线程?

@MengqingCao
Copy link
Contributor Author

MengqingCao commented May 17, 2024

有个openmp的环境变量 把那个thread 设置成2 试下

试了下这个,也是会导致段错误,只有设置线程数为1才能避免这个问题。
另外,我没有排查到具体是哪个算子用到了多线程,processor 里涉及的操作比较多,而且我的程序直接 crash 掉,堆栈中没有获得有效信息。pytorch 社区有关类似问题的讨论中,查阅到的只有 opencv 和 open3D 中的算子会导致相同的问题: pytorch/pytorch#45198

image

@xingchensong
Copy link
Member

it works, thx

@xingchensong xingchensong merged commit 2d8bb97 into wenet-e2e:main May 17, 2024
6 checks passed
@Mddct
Copy link
Collaborator

Mddct commented May 17, 2024

有个openmp的环境变量 把那个thread 设置成2 试下

试了下这个,也是会导致段错误,只有设置线程数为1才能避免这个问题。
另外,我没有排查到具体是哪个算子用到了多线程,processor 里涉及的操作比较多,而且我的程序直接 crash 掉,堆栈中没有获得有效信息。pytorch 社区有关类似问题的讨论中,查阅到的只有 opencv 和 open3D 中的算子会导致相同的问题: pytorch/pytorch#45198

image

帮忙benchmark下速度, dataset这一块 因为torchaudio 以及torch的tensor操作 有的是并行的

@xingchensong
Copy link
Member

有个openmp的环境变量 把那个thread 设置成2 试下

试了下这个,也是会导致段错误,只有设置线程数为1才能避免这个问题。
另外,我没有排查到具体是哪个算子用到了多线程,processor 里涉及的操作比较多,而且我的程序直接 crash 掉,堆栈中没有获得有效信息。pytorch 社区有关类似问题的讨论中,查阅到的只有 opencv 和 open3D 中的算子会导致相同的问题: pytorch/pytorch#45198
image

帮忙benchmark下速度, dataset这一块 因为torchaudio 以及torch的tensor操作 有的是并行的

这个只影响kunpeng cpu,intel cpu不会进入设置thread那个if分支

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants