Linux下使用Atlas在numpy中的线程错误

Pie*_*BdR 5 linux runtime-error numpy multiprocessing atlas

我有一个使用在Linux机器上运行的多进程模块的多进程(不是多线程!)应用程序.这个应用程序使用该numpy.linalg.solve函数,如果我尝试创建许多进程,那么我得到错误:

assertion !pthread_create( &(ROOT->pid), ATTR, ROOT->fun, ROOT ) failed, line 84 of file /build/buildd-atlas_3.8.4-9-amd64-jk6dgk/atlas-3.8.4/build/atlas-base/../..//src/pthreads/misc/ATL_thread_tree.c
Run Code Online (Sandbox Code Playgroud)

请注意,在我开始使用函数之前numpy.linalg,我没有遇到任何问题.

知道问题可能是什么?

编辑:我试过用scipy.linalg.solve,问题是一样的!

编辑:通过用blas替换地图集,问题就消失了.所以看来这个问题确实存在于地图集中

小智 3

碰巧 ATLAS 开发人员最近在这里回答了这个问题: http://sourceforge.net/p/math-atlas/support-requests/873/

注意:我假设您已安装 ATLAS 3.10。

这个问题也困扰了我一段时间。如果你和我有同样的问题,那么很可能是:

  1. ATLAS 是在另一台机器上构建的,而不是您正在运行的机器上
  2. 该构建机器比您的机器具有更多内核
  3. ATLAS 3.10 不知道如何处理比构建时更少的核心数并生成异常。

解决方案是在内核数量低于或等于您当前机器的机器上构建 ATLAS。

希望这可以帮助,