OpenBLAS blas_thread_init: pthread_create: 资源暂时不可用

Har*_*moz 11 python-3.x openblas keras

我现在面临一个问题,无法在集群中运行任何程序。它给出了错误。

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
Run Code Online (Sandbox Code Playgroud)

这个问题,我假设与这个相同多个同时运行的 Python 实例限制为 35

所以根据我设置时的解决方案 export OPENBLAS_NUM_THREADS=1

然后我最终得到以下错误:

terminate called after throwing an instance of 'std::system_error'
  what():  Resource temporarily unavailable
Aborted
Run Code Online (Sandbox Code Playgroud)

有没有其他人面临同样的问题或对如何解决这个问题有想法?谢谢你。

编辑:好的,这似乎是由于管理员试图实施的一些配置限制而发生的。现在它又工作了。

Ylo*_*lor 31

我在 ubuntu 服务器上运行 numpy 时遇到了这个问题。我收到了以下所有错误,具体取决于我是尝试在 shell 中导入 numpy 还是运行我的 django 应用程序:

  • PyCapsule_Import 无法从
  • numpy.core._multiarray_umath 导入(OpenBLAS blas_thread_init:
  • 第 25 个线程(共 32 个)的 pthread_create 失败:资源暂时不可用

我发布这个答案是因为它让我发疯了。对我有帮助的是添加:

import os
os.environ['OPENBLAS_NUM_THREADS'] = '1'
Run Code Online (Sandbox Code Playgroud)

import numpy as np
Run Code Online (Sandbox Code Playgroud)

我猜服务器对它允许的线程数量有一些限制(?)。希望它可以帮助某人!

  • 谢谢@Ylor 和@Haramoz。对我来说,在导入 pandas 之前添加 `import os` `os.environ['OPENBLAS_NUM_THREADS'] = '1'` 时,这个解决方案有效。全部在我的 Flask 应用程序的 app.py 文件中 (2认同)

mim*_*lea 9

通常,此问题与通过(在 Linux 中)可用的进程数量限制有关ulimit

\n\n
\xe2\x86\x92 ulimit -a\ncore file size          (blocks, -c) 0\ndata seg size           (kbytes, -d) unlimited\nscheduling priority             (-e) 0\nfile size               (blocks, -f) unlimited\npending signals                 (-i) 127590\nmax locked memory       (kbytes, -l) 64\nmax memory size         (kbytes, -m) unlimited\nopen files                      (-n) 1024\npipe size            (512 bytes, -p) 8\nPOSIX message queues     (bytes, -q) 819200\nreal-time priority              (-r) 0\nstack size              (kbytes, -s) 8192\ncpu time               (seconds, -t) unlimited\nmax user processes              (-u) 4096         # <------------------culprit\nvirtual memory          (kbytes, -v) unlimited\nfile locks                      (-x) unlimited\n
Run Code Online (Sandbox Code Playgroud)\n\n

临时解决方案是增加此限制:

\n\n
ulimit -u unlimited\n
Run Code Online (Sandbox Code Playgroud)\n\n

我遇到的大多数服务器都将此值设置为待处理信号的数量。例如ulimit -i。因此,在上面的示例中,我改为:

\n\n
ulimit -u 127590\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后,在我的文件中添加一行~/.bashrc以在登录时进行设置。

\n\n

有关如何永久修复此问题的更多信息,请查看:https ://serverfault.com/a/485277

\n


suv*_*ayu 8

这适用于将来遇到此错误的其他人。集群设置很可能会限制用户在交互式节点上可以运行的进程数。线索在错误的第二行:

OpenBLAS blas_thread_init: pthread_create: Resource temporarily unavailable
OpenBLAS blas_thread_init: RLIMIT_NPROC 64 current, 64 max
Run Code Online (Sandbox Code Playgroud)

这里的限制设置为 64。虽然这对于正常的 CLI 使用来说已经足够了,但对于交互式运行 Keras 作业(如 OP)来说可能还不够;或者就我而言,尝试运行交互式 Dask 集群。

可以使用例如 来增加 shell 的限制ulimit -u 10000,但这不能保证有效。最好像 OP 一样通知管理员。

  • 在我的例子中,`OpenBLAS blas_thread_init: pthread_create failed for thread 3 of 24: Resource暂时不可用 OpenBLAS blas_thread_init: RLIMIT_NPROC 4096 current, 1540106 max ` (3认同)

vli*_*ana 7

Docker 中也有这个问题,看来是旧版本的问题。

如果有人遇到这个问题并且无法升级 Docker 版本,我找到的解决方法是向容器添加运行以下选项

--security-opt seccomp=unconfined
Run Code Online (Sandbox Code Playgroud)