专栏首页实验盒Python创建大量线程时遇上OpenBLAS blas_thread_init报错怎么办?

Python创建大量线程时遇上OpenBLAS blas_thread_init报错怎么办?

计算机明明还有空闲资源,但 Python 创建大量线程时,遇上OpenBLAS blas_thread_init 报错怎么办?

具体看看着报错信息:

OpenBLAS blas_thread_init: RLIMIT_NPROC 4096 current, 8251551 max
OpenBLAS blas_thread_init: pthread_create failed for thread 122 of 128: Resource temporarily unavailable

里面说到,OpenBLAS 无法创建线程。

cat /proc/cpuinfo| grep "processor"| wc -l 查看CPU的逻辑核数,总共有160个:

再用 top 看一下系统资源情况:

还有近 1.8T 的闲置内存,一小半的核数。但用 Python 的 multiprocessing 创建的线程数也小于空闲核数,为什么还会失败?

再来看看报错信息,里面提到的 RLIMIT_NPROC 变量控制了用户可以使用的 CPU 核数。OpenBLAS 创建线程时超过了核它,从而导致失败。虽然操作时设置的线程数没有超,但OpenBLAS可能尝试同时启动多个线程来加速线性代数,导致总的线程数超过可利用的线程数。

简单来说,可以在 bash 用以下三种方法其中一个控制 OpenBlas 线程数,直接在 bash 输入,最后的数字根据自己需要设定:

export OPENBLAS_NUM_THREADS=2
export GOTO_NUM_THREADS=2
export OMP_NUM_THREADS=2

或者在 Python 程序的开头加入:

import os
os.environ['OPENBLAS_NUM_THREADS'] = '1`

本文分享自微信公众号 - 实验盒(gh_8a85afc0b064),作者:实验盒

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 迁移学习︱艺术风格转化:Artistic style-transfer+ubuntu14.0+caffe(only CPU)

    本节内容来源于CDA深度学习课程,由唐宇迪老师所述,主要参考论文:《Image Style Transfer Using Convolutional Neur...

    素质
  • linux服务器搭建之路15-常用医学图像处理软件的安装

    作为一个医学图像研究僧,怎么能不会各种医学图像处理软件的安装,今天记录一下这些软件的安装过程,很简单。这些软件包括spm,FSL,freesurfer等。

    锦小年
  • 开发 | 低配硬件就不能运行深度神经网络了?手把手教你克服“杀牛用鸡刀”难题

    如果对深度学习有所了解的小伙伴们想必都知道,深度学习需要使用强大的服务器、加速嵌入式平台(如NVIDIA的Jetson)来运行深度学习算法,然而这也同样意味着不...

    AI科技评论
  • Caffe在Ubuntu 14.04 64bit 下的安装------pycaffe 配置

    http://www.linuxidc.com/Linux/2015-07/120449.htm

    用户1148525
  • Caffe - Ubuntu 安装及问题解决

    注:cuDNN在很多工程中兼容性较差,可能需要安装特定的历史版本,只需对如上命令中的版本进行修改. 查看caffe 是否成功使用cuDNN v5:

    AIHGF
  • OpenBLAS:改进OpenBLASConfig.cmake生成方式,解除cmake脚本的路径依赖

    问题描述 当我们用OpenBLAS提供的Makefile进行编译,并用make install PREFIX=/you/install/path,安装到指定的路...

    用户1148648
  • OpenBLAS项目与矩阵乘法优化 | 公开课+文字转录

    提起矩阵计算,学过《高等数学》的人可能都听过,但若不是这个领域的研究者,恐怕也只停在“听过”的程度。在矩阵计算领域,开源项目OpenBLAS影响巨大,除IBM、...

    AI研习社
  • Caffe:CPU模式下使用openblas-openmp(多线程版本)

    版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net...

    用户1148648
  • ​Python又添一大科学计算库,基于Armadillo矩阵库的PyArmadillo发布

    作为 C++ 中与 Eigen 并驾齐驱的一大科学计算库, Armadillo 因其简单易用的特性深受广大程序员和科学家的喜爱,也获得了 Facebook、NA...

    机器之心
  • 实用Manjaro Linux的安装与入门 Julia初步学习

    Julia是一门为科学计算而生的编程语言,其着重强调了开源、生态与性能。从开源角度来说,相比于Matlab就要友好很多,用户可以免费使用,而且MIT协议应该是最...

    不知名站长
  • 为科学计算而生的Julia——基于Manjaro Linux的安装与入门

    Julia是一门为科学计算而生的编程语言,其着重强调了开源、生态与性能。从开源角度来说,相比于Matlab就要友好很多,用户可以免费使用,而且MIT协议应该是最...

    DechinPhy
  • 取代Python?Rust凭什么

    【导语】Rust 也能实现神经网络?在前一篇帖子中,作者介绍了MNIST数据集以及分辨手写数字的问题。在这篇文章中,他将利用前一篇帖子中的代码,通过Rust实现...

    AI科技大本营
  • 知乎热议:中国重新开发MATLAB要多久?网友:至少十年

    随着哈工大、哈工程MATLAB被禁用一事还在持续发酵,有关中国开发MATLAB需要多久的问题上了知乎热榜。

    新智元
  • 全民Python?不!我就偏爱Excel~

    不知道是不是因为营销号们最近洗脑的缘故,感觉周围所有人都在学Python的路上。这么说可能有点夸张,如果学Python只是为了做日常的数据分析的话,不如先回去把...

    二号姬
  • 深度学习指南:基于Ubuntu从头开始搭建环境

    用户1737318
  • node-sass 埋坑记录

    由于升级了 Angular 版本,同样也升级了 Angular-CLI 版本,导致 v8.x 版本的 node 已经无法编译 angular 项目,至少需要使用...

    请叫我大苏
  • Python 面试基础

    9.举例说明异常模块中 try except else finally 的相关意义

    LittlePanger
  • R︱并行计算以及提高运算效率的方式(parallel包、clusterExport函数、SupR包简介)

    终于开始攻克并行这一块了,有点小兴奋,来看看网络上R语言并行办法有哪些:

    素质
  • 当你装不上Python外部包时,试试这个网站

    Python以第三方包丰富而著称,你想要的功能几乎都可以通过pip命令安装,避免什么都要自己重新造轮子尬尴。

    Crossin先生

扫码关注云+社区

领取腾讯云代金券