pytorch中神经网络的多线程数设置:torch.set_num_threads(N)
实验室的同学一直都是在服务器上既用CPU训练神经网络也有使用GPU的,最近才发现原来在pytorch中可以通过设置 torch.set_num_threads(args.thread) 来限制CPU上进行深度学习训练的线程数。
torch.set_num_threads(args.thread) 在使用时的一个注意事项就是如果不设置则默认使用物理CPU核心数的线程进行训练,而往往默认设置是可以保证运算效率最高的,因此该设置线程数是需要小于物理CPU核心数的,否则会造成效率下降。
既然默认设置既可以保证最高的运算效率那么这个设置的意义在哪呢,这个设置的意义就是在多人使用计算资源时限制你个人的改应用的计算资源占用情况,否则很可能你一个进程跑起来开了太多的线程直接把CPU占用率搞到50%或者直接奔100%去了。
总的说,该设置是为了在多人共享计算资源的时候防止一个进程抢占过高CPU使用率的。
给一个自己的设置代码:(实现了pytorch的最大可能性的确定性可复现性,并设置训练、推理时最大的线程数)
# pytorch的运行设备
device = None def context_config(args):
global device seed = args.seed random.seed(seed)
np.random.seed(seed) torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed) torch.set_num_threads(args.thread) # 设置pytorch并行线程数
if torch.cuda.is_available() and args.gpu >= 0:
torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True device = torch.device('cuda:' + str(args.gpu))
else:
device = torch.device('cpu')
================================
运行DQN2013算法,CPU运行,CPU为Intel 10700k, 8核心16线程:
默认设置:

设置20线程:
torch.set_num_threads(20)

结果:
发现如果线程设置过多,超过CPU的物理线程数运行效率不仅没有提升反而下降,正常默认设置即可。
===================================
pytorch中神经网络的多线程数设置:torch.set_num_threads(N)的更多相关文章
- PyTorch中,关于model.eval()和torch.no_grad()
一直对于model.eval()和torch.no_grad()有些疑惑 之前看博客说,只用torch.no_grad()即可 但是今天查资料,发现不是这样,而是两者都用,因为两者有着不同的作用 引用 ...
- 【转载】 Pytorch中的学习率调整lr_scheduler,ReduceLROnPlateau
原文地址: https://blog.csdn.net/happyday_d/article/details/85267561 ------------------------------------ ...
- pytorch中torch.nn构建神经网络的不同层的含义
主要是参考这里,写的很好PyTorch 入门实战(四)--利用Torch.nn构建卷积神经网络 卷积层nn.Con2d() 常用参数 in_channels:输入通道数 out_channels:输出 ...
- pytorch中文文档-torch.nn常用函数-待添加-明天继续
https://pytorch.org/docs/stable/nn.html 1)卷积层 class torch.nn.Conv2d(in_channels, out_channels, kerne ...
- PyTorch 中 weight decay 的设置
先介绍一下 Caffe 和 TensorFlow 中 weight decay 的设置: 在 Caffe 中, SolverParameter.weight_decay 可以作用于所有的可训练参数, ...
- 如何设置活动监视器中的可见作业数能显示更长范围之内的作业(如何让bpdbjobs/Active Monitor显示更多作业信息)
一.问题: 如何设置可以使得活动监视器中的可见作业数能显示更长范围之内的作业(即NBU软件不要自动删除活动监视器中短时间内(如8天)内的作业记录)? 二.解决方法: 默认情况下在Ac ...
- Direcshow中视频捕捉和參数设置报告
Direcshow中视频捕捉和參数设置报告 1. 关于视频捕捉(About Video Capture in Dshow) 1视频捕捉Graph的构建 一个能够捕捉音频或者视频的graph图 ...
- PyTorch 中 torch.matmul() 函数的文档详解
官方文档 torch.matmul() 函数几乎可以用于所有矩阵/向量相乘的情况,其乘法规则视参与乘法的两个张量的维度而定. 关于 PyTorch 中的其他乘法函数可以看这篇博文,有助于下面各种乘法的 ...
- pytorch中的激励函数(详细版)
初学神经网络和pytorch,这里参考大佬资料来总结一下有哪些激活函数和损失函数(pytorch表示) 首先pytorch初始化: import torch import t ...
- 第五章——Pytorch中常用的工具
2018年07月07日 17:30:40 __矮油不错哟 阅读数:221 1. 数据处理 数据加载 ImageFolder DataLoader加载数据 sampler:采样模块 1. 数据处理 ...
随机推荐
- 服务器安装mysql
数据库连接操作 修改root的hostupdate user set host='%' where user='root' and host ="127.0.0.1"flush p ...
- 10分钟掌握Python缓存
全文速览 python的不同缓存组件的使用场景和使用样例 cachetools的使用 项目背景 代码检查项目,需要存储每一步检查的中间结果,最终把结果汇总并写入文件中 在中间结果的存储中 可以使用co ...
- IoTBrowser V2.0:引领物联网时代的全新浏览器
强大的兼容性,无限的可能 IoTBrowser V2.0,基于Chromium内核,完美支持H5/css/js开发界面,让您的物联网应用拥有与主流浏览器同等的流畅体验.同时,它还支持CSS 3动画.C ...
- HTTP 和 HTTPS,为什么HTTPS安全?
HTTP协议通常承载与 TCP协议之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),这个时候,就成了我们常说的HTTPS 默认HTTP的端口号为80,HTTPS的端口号为443 因为网 ...
- Mybatis ResultMap复杂对象一对多查询结果映射之collection
Mybatis复杂对象一对多映射配置ResultMap的collection collection:一对多查询结果映射,比如user有多个订单 表结构 项目结构图 pom.xml <?xml v ...
- 洛谷P1439
这道题也给了我很多的思考,因为很久没有做过LIS和KLCS的题了 为什么能采用二分 因为f数组保存的是LCS长度为i时的最小末尾的值,可以证明f数组一定是单调的,并且是严格单调的 为什么要保存末尾最小 ...
- Solo 独立开发者社区
Solo 独立开发者社区是一个致力于帮助独立开发者发展的社区平台.平台上聚集了大量的独立开发者,他们在这个平台上分享着自己的开发经验.心得和技巧,同时也可以从其他人的分享中获得启发和帮助. 这个社区提 ...
- VS Code 开发统一代码格式化配置
eslint: 是用来做代码风格检查的,比较关注代码质量,并且会提示不符合风格规范的代码,也有一部分代码格式化的功能.不是消除空行. "editor.formatOnSave": ...
- [oeasy]python0012_字符_character_chr函数_根据序号得到字符
字符(character) 回忆上次内容 上次了解了ord函数 这个函数可以通过字符得到序号 那么可以反过来吗? 通过序号得到字符可以吗? 编辑 ord的逆运算chr 有来就有回 编辑 好 ...
- CF1282A 题解
洛谷链接&CF 链接 题目简述 共有 \(T\) 组数据. 有一条数轴,要从 \(a\) 点跑到 \(b\) 点,在 \(c\) 点的地方有网络,覆盖区间为 \([c - r, c+ r]\) ...