我有一个使用运行在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。
这个问题也困扰了我一段时间。如果你和我有同样的问题,那么很有可能:
- ATLAS是在另一台机器上构建的,而不是在 上运行这个。
- 这个构建机器比你的机器有更多的内核
- ATLAS 3.10不知道如何处理内核数低于构建时的内核数并生成异常。
解决方案是在一个内核数低于或等于当前机器的机器上构建ATLAS。
希望有帮助,