Python 3.x OpenBLAS blas_thread_init:pthread_create:资源暂时不可用
我现在面临一个问题,无法在群集中运行任何程序。它给出了错误Python 3.x OpenBLAS blas_thread_init:pthread_create:资源暂时不可用,python-3.x,keras,openblas,Python 3.x,Keras,Openblas,我现在面临一个问题,无法在群集中运行任何程序。它给出了错误 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
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
是否还有其他人面临同样的问题,或者对如何解决这个问题有想法?多谢各位
编辑:
好的,看起来这是因为管理员试图实现一些配置限制。现在它又起作用了。这是为将来遇到此错误的其他人准备的。群集设置很可能会限制用户可以在交互节点上运行的进程数。线索在错误的第二行:
OpenBLAS blas_thread_init: pthread_create: Resource temporarily unavailable
OpenBLAS blas_thread_init: RLIMIT_NPROC 64 current, 64 max
此处限制设置为64。虽然这对于正常的CLI使用来说已经足够了,但对于交互式运行Keras作业(如OP)来说可能还不够;或者在我的例子中,尝试运行交互式Dask集群
使用ulimit-u10000可以增加shell的限制,但这不能保证有效。最好像OP一样通知管理员。我在ubuntu服务器上运行numpy时遇到了这个问题。我遇到了以下所有错误,这取决于我是尝试在shell中导入numpy还是运行django应用程序:
- PyCapsule_导入无法从导入模块“datetime”
- numpy.core.\u多数组\u umath导入(OpenBLAS blas\u线程\u初始化:
- 32个线程中的第25个线程的pthread_创建失败:资源暂时不可用
import os
os.environ['OPENBLAS_NUM_THREADS'] = '1'
以前
import numpy as np
我猜服务器对它允许的线程数量有一些限制(?)。希望它能帮助别人!通常,这个问题与通过
ulimit
提供的进程数量限制有关(在Linux中):
我遇到的大多数服务器都将此值设置为挂起信号的数量。例如,ulimit-I
。因此,在上面的示例中,我改为:
ulimit -u 127590
然后,在我的~/.bashrc
文件中添加一行,以在登录时设置它
有关如何永久解决此问题的更多信息,请查看:如果您是经理,您可以:
ulimit-u[number]
/etc/security/limit.conf中的参数nproc
然后,Python中的多线程问题应该得到解决。关键是将线程数设置为小于集群中的限制。基于Ylor的答案,而不是将自己限制为单个线程,阅读错误输出(这里是我的前几行): 并找到失败的最小线程数–然后将线程数设置为少一个(此处为12):
这将最大限度地提高代码使用线程的能力,同时仍保持在当前系统限制内(如果无法更改)当我遇到错误时,我还试图以交互方式运行Keras程序。然后群集管理员取消了限制,我可以使用它。在我的例子中,
OpenBLAS blas_thread_init:pthread_create在线程3/24时失败:资源暂时不可用OpenBLAS blas_thread_init:RLIMIT_NPROC 4096 current,1540106 max
谢谢,这帮了我很大的忙谢谢你@Ylor和@Haramoz。对我来说,在导入熊猫之前添加import os
os.environ['OPENBLAS\u NUM\u THREADS']='1'
时,它就起到了这个解决方案的作用。所有这些都在我的flask应用程序的my app.py文件中
→ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 127590
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 4096 # <------------------culprit
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
ulimit -u unlimited
ulimit -u 127590
$ export OPENBLAS_NUM_THREADS=2
$ export GOTO_NUM_THREADS=2
$ export OMP_NUM_THREADS=2
>>> import os
>>> os.environ['OPENBLAS_NUM_THREADS'] = '1`
OpenBLAS blas_thread_init: pthread_create failed for thread 13 of 64: Resource temporarily unavailable
OpenBLAS blas_thread_init: RLIMIT_NPROC 2048 current, 384066 max
OpenBLAS blas_thread_init: pthread_create failed for thread 58 of 64: Resource temporarily unavailable
OpenBLAS blas_thread_init: RLIMIT_NPROC 2048 current, 384066 max
...
>>> import os
>>> os.environ['OPENBLAS_NUM_THREADS'] = '12`