Linux下在numpy中使用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

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

你知道是什么问题吗?

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

Edit:用blas代替atlas,问题就消失了。所以问题似乎出在atlas

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

注意:我假设你安装了ATLAS 3.10。

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

  1. ATLAS是在另一台机器上构建的,而不是在
  2. 上运行这个。
  3. 这个构建机器比你的机器有更多的内核
  4. ATLAS 3.10不知道如何处理内核数低于构建时的内核数并生成异常。

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

希望有帮助,

相关内容

  • 没有找到相关文章

最新更新