GPU利用率低的解决办法

GPU利用率低的解决办法watch-n0.1-dnvidia-smi#检查GPU利用率参数解决办法:1.dataloader设置参数2.增大batchsize3.减少IO操作,比如tensorboard的写入和打印。4.换显卡

大家好,又见面了,我是你们的朋友全栈君。

watch -n 0.1 -d nvidia-smi # 检查GPU利用率参数

解决办法:

1. dataloader设置参数

GPU利用率低的解决办法

2.增大batchsize

3. 减少IO操作,比如tensorboard的写入和打印。

4. 换显卡

5. 性能分析

import time
import cProfile, pstats, profile


def add(x, y):
    time.sleep(1)
    value = x + y
    return value


def sub(x, y):
    time.sleep(1.5)
    value = x - y
    return value


class TestProfile:
    def calc(self, x, y):
        time.sleep(1)
        add_result = add(x, y)
        sub_result = sub(x, y)
        print(f"{x} add {y} result is: {add_result}")
        print(f"{x} sub {y} result is: {sub_result}")


if __name__ == '__main__':
    obj = TestProfile()
    # 要分析的函数。
    # 原来调用该怎么写就写成相应的字符串形式就好了
    be_analysed_function = "obj.calc(1,2)"
    # 给此次监测命个名,随意起。
    analysed_tag_name = "test_analysed"
    # 使用c语言版的profile进行分析,好处是自身占用资源更少,对函数的耗时定位更准确
    cProfile.run(be_analysed_function, analysed_tag_name)
    # 使用python版的profile进行分析,格式都一样的。
    # profile.run(be_analysed_function, analysed_tag_name)

    # 对此次监测进行分析。
    s = pstats.Stats(analysed_tag_name)
    # 移除文件目录,减少打印输出
    # s.strip_dirs()
    # 排序。
    # "time"表示按函数总耗时排序,python3.7后可用枚举变量pstat.SortKey来取排序项
    s.sort_stats("time")
    # 打印统计结果
    # ncalls--函数被调用的次数
    # tottime--此函数在所有调用中共耗费的时间秒数(不包括其调用的子函数耗费的时间)。分析耗时主要看这个。
    # percall--此函数平均每次被调用耗时。分析耗时次要看这个
    # cumtime--执行此函数及其调用子函数所占用的时间。
    # percall--此函数平均每次调用每个子函数所用的时间。
    s.print_stats()
    # print_stats的结果并不显示谁调用的谁,比如是A调用的C还是B调用的C是不清楚的
    # 要打印出函数的调用者,可使用print_callers()
    # 结果中右边是被调用函数,左边是调用该函数的函数
    # s.print_callers()

https://blog.csdn.net/DD_PP_JJ/article/details/111829869

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147473.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 公司怎么建局域网_大型局域网组建教程

    公司怎么建局域网_大型局域网组建教程什么是局域网局域网(LocalAreaNetwork,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程

    2022年8月1日
    8
  • ES6转ES5_nodejs支持es6吗

    ES6转ES5_nodejs支持es6吗Babel介绍Babel是一个ES6转码器,能将ES6代码转为ES5代码,这样原本不支持ES6的老版本浏览器执行ES6代码//转码前:使用了ES6箭头函数items.map(item=>item+1);//转码后:转为了普通函数items.map(function(item){returnitem+1;});Babel安装安装Babel,一个命令就够了:$npminstall–save-dev@babel/cor…

    2022年9月24日
    2
  • Django(9)url指定默认参数[通俗易懂]

    Django(9)url指定默认参数[通俗易懂]前言当我们访问网页的时候,后台返回列表中有n条数据,此时我们会使用分页,比如一页只展示10条,但是我们访问第一页的时候大多数情况下,都会给url一个默认值,访问的时候直接展示第一页数据案例我们的

    2022年7月31日
    9
  • java山寨qq账号密码验证_java swing实现QQ账号密码输入框

    java山寨qq账号密码验证_java swing实现QQ账号密码输入框本文实例为大家分享了Javaswing仿QQ账号密码输入框,供大家参考,具体内容如下主要思路是自己定义AccountPanel和PasswordPanel类,继承JPanel,通过paintComponent(Graphicsg)方法重绘面板,实现目标样式。先上效果图正常显示效果:鼠标放在控件上时的效果:腾讯QQ登录界面的账号密码输入部分效果比对:下面直接给出代码吧Account…

    2022年7月20日
    13
  • 为公司linux服务器写的一个初始化脚本

    为公司linux服务器写的一个初始化脚本

    2021年8月20日
    47
  • 使用VScode配置Java环境—JDK-17

    使用VScode配置Java环境—JDK-17一、JDK的安装与环境配置1、在java的官网下载页面找到安装包进行安装。找到对应的操作系统,第一个是直接下载压缩包,第二个是下载一个下载器再安装,我是直接下的第一个。2、修改环境变量,先建立一个JAVA_HOME变量,将JDK的安装下载位置设为值。3、点击系统变量中的Path,然后点击编辑,然后把bin的路径填上。按道理来说其实填路径这一步,直接把bin的路径加到Path中也可以,但是网上好多教的都是做一个JAVA_HOME变量,我也不知道为啥。记得退出环境…

    2022年10月3日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号