我现在面临一个问题,无法运行集群中的任何程序。它给出错误。
OpenBLAS blas_thread_init: pthread_create: Resource temporarily unavailable
OpenBLAS blas_thread_init: RLIMIT_NPROC 64 current, 64 max
OpenBLAS blas_thread_init: pthread_create: Resource temporarily unavailable
OpenBLAS blas_thread_init: RLIMIT_NPROC 64 current, 64 max
OpenBLAS blas_thread_init: pthread_create: Resource temporarily unavailable
OpenBLAS blas_thread_init: RLIMIT_NPROC 64 current, 64 max
OpenBLAS blas_thread_init: pthread_create: Resource temporarily unavailable
OpenBLAS blas_thread_init: RLIMIT_NPROC 64 current, 64 max
Traceback (most recent call last):
File "hello-world.py", line 1, in <module>
from keras.models import Sequential
File "/home/amalli2s/anaconda3/lib/python3.6/site-packages/keras/__init__.py", line 3, in <module>
from . import utils
File "/home/amalli2s/anaconda3/lib/python3.6/site-packages/keras/utils/__init__.py", line 2, in <module>
from . import np_utils
File "/home/amalli2s/anaconda3/lib/python3.6/site-packages/keras/utils/np_utils.py", line 6, in <module>
import numpy as np
File "/home/amalli2s/.local/lib/python3.6/site-packages/numpy/__init__.py", line 142, in <module>
from . import add_newdocs
File "/home/amalli2s/.local/lib/python3.6/site-packages/numpy/add_newdocs.py", line 13, in <module>
from numpy.lib import add_newdoc
File "/home/amalli2s/.local/lib/python3.6/site-packages/numpy/lib/__init__.py", line 8, in <module>
from .type_check import *
File "/home/amalli2s/.local/lib/python3.6/site-packages/numpy/lib/type_check.py", line 11, in <module>
import numpy.core.numeric as _nx
File "/home/amalli2s/.local/lib/python3.6/site-packages/numpy/core/__init__.py", line 16, in <module>
from . import multiarray
SystemError: initialization of multiarray raised unreported exception
字符串
这个问题,我假设是一样的Multiple instances of Python running simultaneously limited to 35
所以根据我设置export OPENBLAS_NUM_THREADS=1
时的解
然后我得到以下错误:
terminate called after throwing an instance of 'std::system_error'
what(): Resource temporarily unavailable
Aborted
型
有没有其他人面临同样的问题或有想法如何解决这个问题?- 谢谢你-谢谢
编辑:好的,看起来这是因为管理员试图实现的一些配置限制。现在它又起作用了。
6条答案
按热度按时间tkclm6bt1#
我在ubuntu服务器上运行numpy时遇到了这个问题。我得到了以下所有错误,这取决于我是试图在shell中导入numpy还是运行我的django应用程序:
我把这个答案贴出来,因为它让我发疯。对我有帮助的是补充:
字符串
之前
型
我猜服务器对它允许的线程数量有一些限制(?)。希望对某人有帮助!
g52tjvyc2#
这是为了将来遇到这种错误的其他人。集群设置很可能会限制用户在交互式节点上可以运行的进程数量。提示在错误的第二行:
字符串
在这里,限制被设置为64。虽然这对于正常的CLI使用已经足够了,但对于交互式运行Keras作业(如OP)可能还不够;或者在我的例子中,尝试运行交互式Dask集群。
也许可以使用
ulimit -u 10000
从您的shell中增加限制,但这并不保证有效。最好像OP一样通知管理员。daupos2t3#
通常,此问题与
ulimit
(在Linux中)可用的进程数量有限有关:字符串
一个临时的解决方案是增加这个限制:
型
我遇到的大多数服务器都将此值设置为挂起信号的数量。例如
ulimit -i
。所以,在我上面的例子中,我做了:型
然后,在我的
~/.bashrc
文件中添加了一行,以将其设置为登录。有关如何永久修复此问题的更多信息,请查看:https://serverfault.com/a/485277
chy5wohz4#
如果您是经理,您可以:
1.使用命令
ulimit -u [number]
临时更改进程的限制数量1.永久改变进程的限制数量,即
/etc/security/limit.conf
中的参数nproc
如果您是用户,您可以:
1.在bash
字符串
1.在Python中
型
那么Python中的多线程问题就应该解决了。关键是将集群中的线程数设置为小于您的限制。
csbfibhn5#
在Ylor的答案的基础上,而不是将自己限制在单个线程中,阅读错误输出(这里是我的前几行):
字符串
并找到失败的最小线程数-然后将线程数设置为少一个(这里我是12个):
型
这将最大限度地提高代码使用线程的能力,同时仍保持在当前系统限制内(如果无法更改)。
xytpbqjk6#
在Docker中有这个确切的问题,似乎是旧版本的问题。
如果有人遇到这个问题,无法升级Docker版本,我找到的解决方法是在容器中添加以下选项
字符串