Linux系统下使用pytorch多进程读取图片数据时的注意事项——DataLoader的多进程使用注意事项
原文:
PEP 703 – Making the Global Interpreter Lock Optional in CPython
相关内容:
The GIL Affects Python Library Usability
The GIL is a CPython implementation detail that limits multithreaded parallelism, so it might seem unintuitive to think of it as a usability issue. However, library authors frequently care a great deal about performance and will design APIs that support working around the GIL. These workaround frequently lead to APIs that are more difficult to use. Consequently, users of these APIs may experience the GIL as a usability issue and not just a performance issue.
For example, PyTorch exposes a multiprocessing-based API called DataLoader
for building data input pipelines. It uses fork()
on Linux because it is generally faster and uses less memory than spawn()
, but this leads to additional challenges for users: creating a DataLoader
after accessing a GPU can lead to confusing CUDA errors. Accessing GPUs within a DataLoader
worker quickly leads to out-of-memory errors because processes do not share CUDA contexts (unlike threads within a process).
===========================================
在pytorch中的多进程读取图片的API为DataLoader
,该API底层使用python的multiprocessing来实现的,多进程使用的是Linux中的fork()而不是spawn(),因为fork()速度更快并且内存更小,但是fork()的特性导致DataLoader API必须在代码中最早的位置实现,如果该API在CUDA调用之后实现那么该API所生成的所有子进程均会copy一个CUDA context进入到自身的内存空间中,从而造成内存泄露,占用大量内存空间,甚至导致程序因为内存不足而失败。
重点:
pytorch中要在代码最早的位置实现DataLoader的多进程操作。
===========================================
Linux系统下使用pytorch多进程读取图片数据时的注意事项——DataLoader的多进程使用注意事项的更多相关文章
- Oracle使用——Linux系统下使用命令实现oracle数据库数据导入
背景 在工作当中,数据库的备份及数据导入是必不可少的操作,在完全无界面的Linux操作系统中,我们应该怎样实现oracle数据库的导入呢 前提 服务器已配置ftp 模拟环境 一台linux应用服务器上 ...
- Linux系统下通过命令行对mysql数据进行备份和还原
一.备份 1.进入mysql目录 cd /var/lib/mysql (进入mysql目录,根据安装情况会有差别) 2.备份 mysqldump -u root -p密码 数据库名 数据表名 > ...
- Linux系统下使用ckfinder上传中文名的图片无法正常预览
问题描述:使用ckfinder上传带有中文名称的图片后在Windows本地可以正常预览,部署在Linux系统后,带有中文名的图片不能正常显示 解决办法:找到Tomcat的根目录 --> conf ...
- linux系统下,11款常见远程桌面控制软件(转载)
远程控制能够给人们带来很多便利,本文介绍了11款常见的Linux系统下的远程桌面控制工具,总有一款能适合您. 一. Grdc 它是一个用GTK+编写的,适用于gnome桌面环境的远程桌面访问软件.看图 ...
- linux系统下的权限知识梳理
下面对linux系统下的有关权限操作命令进行了梳理总结,并配合简单实例进行说明.linux中除了常见的读(r).写(w).执行(x)权限以外,还有其他的一些特殊或隐藏权限,熟练掌握这些权限知识的使用, ...
- linux系统下修改文件夹目录权限
linux系统下修改文件夹目录权限 文件夹权限问题 Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何 ...
- Linux系统下远程文件拷贝scp命令
在Linux系统下,不同机器上实现文件拷贝 一.将本地文件拷贝到远程机器: scp /home/administrator/news.txt root@192.168.6.129:/etc/squid ...
- linux系统下sd卡的备份与恢复
linux系统下sd卡的备份与恢复 现在各种的开发板都是从sd卡上面启动的,因此大修改工作之前很有必要备份一下. 备份 在linux系统下用读卡器读取sd卡 用df -h命令看分区的路径 一般都是/d ...
- linux系统下搭建自己的web服务器
之前在windows 2008 server上搭建了一个用于测试的web服务器,但是在打开网站的时候特别的慢,尤其是图片的加载都会失败,当时以为是路径的问题,但是在服务器上自己打开都特别慢,自己实在找 ...
- linux 系统下java开发环境的配置
在安装之前,确保你的linux系统下有 jdk,jboss等相关软件 一.配置JDK环境变量 步骤: 解压缩JDK文件: unzip jdk1.6.0_31.zip 目录下显示文件夹jdk1.6.0_ ...
随机推荐
- Vue学习:1.V标签综合1
认识V标签 目录 认识V标签 v-text: v-html: v-bind (缩写为 :): v-if / v-else / v-else-if: v-show: v-for: v-model: Vu ...
- 性能分析: 快速定位SQL问题
在数据库性能调优的实践中,SQL性能分析是至关重要的一环.一个执行效率低下的SQL语句可能会导致整个系统的性能瓶颈. 为了快速定位并解决这些问题,我们需要对SQL进行性能分析.本文将介绍一些常用的方法 ...
- @Valid + BindingResult 拦截接口错误信息
@Valid + BindingResult 拦截接口错误信息###测试发现: HttpServletRequest request, HttpServletResponse response, 需要 ...
- skywalking需要引入的背景(查询调用链),传统的日志查询方法, 引入EFK日志搜索重要性
1.根据两次请求日志的关键点来截取日志,缩小日志的范围.tail -f orderApi.log | grep "orderKeyWordSubmit" 确定两次异常请求的 ...
- 深入了解 C# Span:高性能内存操作的利器
深入了解 C# Span:高性能内存操作的利器 在 C# 7.2 中引入的 Span<T> 类型为我们提供了一种高效且安全地对内存进行操作的方式.Span<T> 是一个轻量级的 ...
- Xcode编译错误看不到错误详情
问题描述 Xcode提示错误后想详细看报错信息无论如何双击都不见弹出错误详情. 解决办法 不知道是bug还是苹果婊又自作主张改变用户习惯了,需要点击navigator最右边的一个图标,在里面找到相应的 ...
- vba--数组,多个表中的程序合并到一起,设置为一个按钮
Sub ttt() t = Timer Application.DisplayAlerts = False '清空数据 Sheets("买卖4").Select Range(&qu ...
- Unicode 和JS中的字符串
计算机内部使用二进制存储数据,只认识0和1两个数字,计算机的世界只有0和1.但我们的世界却充满着文字,如a, b, c.怎样才能让计算机显示文字,供我们使用和交流?只能先把文字转化成数字进行存储,然后 ...
- DarkHole_1靶机渗透流程
VulnHub_DarkHole1靶机渗透流程 注意:部署时,靶机的网络连接模式必须和kali一致,让靶机跟kali处于同一网段,这用kali才能扫出靶机的主机 1. 信息收集 1.1 探测IP 使用 ...
- npm基本操作手册
查看npm版本 npm -v 设置仓库地址 # 默认仓库地址 npm config set registry https://registry.npmjs.org/ # 淘宝镜像地址 npm conf ...