我有一个使用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

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

知道可能是什么问题吗?

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

编辑:通过将blas替换为atlas,问题消失了。所以看来问题确实在 map 集之内

最佳答案

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

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

这个人也困扰了我一段时间。而且,如果您遇到与我相同的问题,那么很有可能是:

  • ATLAS是在另一台计算机上构建的,而不是您在
  • 上运行的计算机
  • 此构建机器比您的机器具有更多的内核
  • ATLAS 3.10不知道如何处理比生成时少的内核数并生成异常。

  • 解决方案是在内核数小于或等于当前计算机的计算机上构建ATLAS。

    希望这可以帮助,

    关于linux - 在Linux下在numpy中使用Atlas进行线程处理错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14236717/

    10-11 15:32