【技巧】PyTorch限制GPU显存的可使用上限

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn]

        从 PyTorch 1.4 版本开始,引入了一个新的功能 torch.cuda.set_per_process_memory_fraction(fraction, device),这个功能允许用户为特定的 GPU 设备设置进程可使用的显存上限比例。

        测试代码:

torch.cuda.empty_cache()# 设置进程可使用的GPU显存最大比例为50%
torch.cuda.set_per_process_memory_fraction(0.5, device=0)# 计算总内存
total_memory = torch.cuda.get_device_properties(0).total_memory
print("实际总内存:", round(total_memory / (1024 * 1024), 1), "MB")# 尝试分配大量显存的操作
try:# 使用10%的显存:tmp_tensor = torch.empty(int(total_memory * 0.1), dtype=torch.int8, device='cuda:0')print("分配的内存:", round(torch.cuda.memory_allocated(0) / (1024 * 1024), 1), "MB")print("保留的内存:", round(torch.cuda.memory_reserved(0) / (1024 * 1024), 1), "MB")# 清空显存del tmp_tensortorch.cuda.empty_cache()# 使用50%的显存:torch.empty(int(total_memory * 0.5), dtype=torch.int8, device='cuda:0')
except RuntimeError as e:print("Error allocating tensor:", e)# 打印当前GPU的显存使用情况
print("分配的内存:", torch.cuda.memory_allocated(0) / (1024 * 1024), "MB")
print("保留的内存:", torch.cuda.memory_reserved(0) / (1024 * 1024), "MB")

  • 已分配显存:通过torch.cuda.memory_allocated(device)查询,它返回已经直接分配给张量的显存总量。这部分显存是当前正在被Tensor对象使用的。

  • 保留(预留)显存:通过torch.cuda.memory_reserved(device)查询,它包括了已分配显存以及一部分由PyTorch的CUDA内存分配器为了提高分配效率和减少CUDA操作所需时间而预留的显存。这部分预留的显存不直接用于存储Tensor对象的数据,但可以被视为快速响应未来显存分配请求的“缓冲区”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/288844.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

展示大屏-24小时天气预报

一、项目说明 展示大屏显示未来一周天气和24小时天气详情。 二、技术工具 1.语言&框架:java、springboot 2.UI界面:jQuery、HTML、CSS、 VUE 3.开发工具:IntelliJ IDEA、Eclipse 三、实现步骤 后端步骤 1.调取免费或收费的API接口。 …

数据结构——快速排序的三种方法和非递归实现快速排序

数据结构——快速排序的三种方法和非递归实现快速排序(升序) 快速排序的单趟排序hoare法挖坑法前后指针法 快速排序的实现key基准值的选取快速排序代码快速排序的优化 快速排序(非递归) 快速排序的单趟排序 hoare法 思路:从给定…

AndroidStudio中一些实用插件

1.RainbowBrackets插件为圆括号、方括号和花括号内的代码添加了漂亮的彩虹色 2.CodeGlance类似于Sublime或Xcode,CodeGlance插件在编辑器中嵌入了代码迷你图。滚动条也有所增大。在CodeGlance预览文件的代码模式下,用户可以快速导航到目标处。 3.ADBWifi…

Quest 3 和 Vision Pro 的“杀手级应用” 想法分享

融合空间游戏:通过将现实生活空间与虚拟世界相融合,创造出多人互动的游戏体验,为玩家带来独特而沉浸的感受。在产品设计中,不同的卧室和客厅空间可能对游戏需求产生影响,例如空间大小、布局和家具摆设等因素都可能影响…

Spring boot 发送文本邮件 和 html模板邮件

Spring boot 发送文本邮件 和 html模板邮件 提示:这里使用 spring-boot-starter-mail 发送文本邮件 和 html模板邮件 文章目录 Spring boot 发送文本邮件 和 html模板邮件一、开启QQ邮箱里的POP3/SMTP服务①:开启步骤 二、简单配置①:引入依赖…

win11 环境配置 之 Jmeter

一、安装 JDK 1. 安装 jdk 截至当前最新时间: 2024.3.27 jdk最新的版本 是 官网下载地址: https://www.oracle.com/java/technologies/downloads/ 建议下载 jdk17 另存为到该电脑的 D 盘下,新建jdk文件夹 开始安装到 jdk 文件夹下 2. 配…

IRIS / Chronicles 定义 Item 中的 Add Type 属性

根据我们前面说的 Item 中的 Add Type 属性,这个主要用来标识输入的数据是不是随着时间的变化而变化,有下面 3 种选项。 No‐Add 这个就是当数据输入后,是不会再变化了,不会随着时间的变化而变化。 Response Each Time 这个就…

第115讲:Mycat核心配置文件各项参数的作用以及概念

文章目录 1.Mycat配置文件相关概念2.Schema配置文件3.Rule配置文件4.Server配置文件 1.Mycat配置文件相关概念 在Mycat中核心的配置文件有schema.xml和rule.xml以及server.xml三个,其中schema.xml是用来配置数据库、表、读写分离、分片节点、分片规则等信息&#x…

政安晨:【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】(六)—— 二元分类

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战演绎 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 这篇文章咱们将深度学习应用到另一个常见任务…

【吊打面试官系列】Redis篇 -怎么测试 Redis 的连通性?

大家好,我是锋哥。今天分享关于 【怎么测试 Redis 的连通性?】面试题,希望对大家有帮助; 怎么测试 Redis 的连通性? 使用 ping 命令。 要测试Redis的连通性,可以使用redis-cli命令行工具或编写代码。以下是…

干货:教你如何在JMeter中调用Python代码N种方法!

在性能测试领域,JMeter已经成为测试专业人士的首选工具,用于模拟用户行为、测量响应时间、评估系统性能。而现在大部分接口都会涉及到验签、签名、加密等操作,为了满足特定需求,我们需要更多的灵活性,比如引入Python来…

[CISCN2019 华北赛区 Day2 Web1]Hack World

本题首先考察的是sql注入 拿过滤字符集先跑一遍 发现以上字符集都被过滤了 尝试id1 id11 尝试id(1)(2) 这里就已经给出了个思路我们可以尝试盲注去打 id(select(ascii(mid(flag,1,1))102)from(flag)) 这里表跟列已经给了我们了,所以我们可以写脚本了 import reque…

13 Games101 - 笔记 - 光线追踪(Whitted-Style光线追踪原理详解及实现细节)

13 光线追踪(Whitted-Style光线追踪原理详解及实现细节) 引入光线追踪的原因 光栅化的缺点:不能很好的处理全局光照。(因为Blinn-Phong这种局部模型无法处理全局效果!) 光栅化:快 real-time 质量低光线追…

嵌入式和 Java 走哪条路?

最近看到一个物联网大三学生的疑问,原话如下: 本人普通本科物联网工程专业,开学大三,现在就很迷茫,不打算考研了,准备直接就业,平时一直在实验室参加飞思卡尔智能车比赛,本来是想走嵌…

【分享】Word文档的5个隐藏功能

编辑Word文档的过程中,有时候我们需要隐藏一些格式,或者重要信息,今天小编来分享4个Word文档的隐藏功能,记得收藏哦! 功能1:隐藏文本内容 对于不想被他人看到的文本内容,可以设置隐藏起来。 首…

来了!小学生Python创意编程(视频教学版)

目录 写在前面 推荐图书 推荐理由 写在最后 写在前面 在最好的年纪,一起来学Python吧!本期博主给大家推荐一本适合小学生阅读的书籍,一起来看看吧~ 推荐图书 小学生Python创意编程(视频教学版) 直达链接&#x…

【Linux】网络基础1

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:题目解析 目录 👉🏻一些常见网络设备👉🏻网络协议(栈)👉🏻协议分层OSI参考模型每个层…

ABC346 A-G 题解

ABC346 A-G题解 A题目AC Code:时间复杂度 B题目时间复杂度AC Code: C题目时间复杂度AC Code: D题目时间复杂度AC Code: E题目时间复杂度AC Code: F题目时间复杂度AC Code: G题目时间复杂度AC Code&#xff…

31---JTAG电路设计

视频链接 JTAG电路设计(JLINK&XILINX&ALTERA)_哔哩哔哩_bilibili JTAG电路设计 1、JTAG简介 JTAG(Joint Test Action Group):联合测试工作组,是在名为标准测试访问端口和边界扫描结构的IEEE的标…

Redis数据结构的基础插入操作

数据结构与内部编码 Redis常见的数据结构 数据结构和内部编码 数据结构的插入操作 在Redis中,数据结构的插入操作取决于你要插入的数据类型。以下是一些常见的数据结构和它们的插入操作: 字符串 (String):使用 SET 命令来插入字符串。例…