V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
suifengingo
V2EX  ›  问与答

万能的 V 圈,请教一个关于如何调用 GPU 资源来训练程序的问题

  •  
  •   suifengingo · 2020-03-10 21:18:31 +08:00 · 1201 次点击
    这是一个创建于 1719 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自己写的程序由于使用 CPU 训练时速度太慢,所以想调用 GPU 来运行程度,网上有查资料说可以加入以下代码片:

    import os
    os.environ["CUDA_VISIBLE_DEVICES"] = "1"

    但是本人这个并不是网络训练的代码,只是一个关于普通图像处理的代码,所以上述的代码片加入后并不能成功地调用到服务器的 GPU,百思不得其解,所以特来在线请教,望能得到解答!
    11 条回复    2020-03-11 15:27:17 +08:00
    favourstreet
        1
    favourstreet  
       2020-03-10 21:28:08 +08:00
    楼主你自己说“使用 CPU **训练**时速度太慢”,又接着说“本人这个**并不是**网络训练的代码”。到底是不是啊[抓狂]。普通图像处理的 GPU 加速完全是另外一个领域的事情了。
    suifengingo
        2
    suifengingo  
    OP
       2020-03-10 21:33:47 +08:00
    @favourstreet 这个是普通的图像处理代码,老哥有什么可以使用 GPU 来加速运行的代码介绍吗?
    suifengingo
        3
    suifengingo  
    OP
       2020-03-10 21:35:13 +08:00
    标题不是“训练程序”,而应该是“运行程序”,说顺嘴了不好意思
    lsvih
        4
    lsvih  
       2020-03-10 21:50:54 +08:00
    可以试试 numba 的 cuda jit
    favourstreet
        5
    favourstreet  
       2020-03-10 21:54:15 +08:00
    @suifengingo opencv 支持 cuda,但是楼主不要抱过多期待,放到 gpu 上算没变慢就不错了。如果楼主对图像的操作真的十分普通,我推荐楼主写一个 Photoshop 批处理脚本,可以用 js 写,Photoshop 也支持 gpu 加速。
    suifengingo
        6
    suifengingo  
    OP
       2020-03-10 22:07:07 +08:00
    @favourstreet 谢谢你,不过我这个代码里面没有调用到 opencv,而且程序我是放到服务器上运行的,貌似没法使用到 PS 来运行[哭
    jaswer
        7
    jaswer  
       2020-03-11 07:56:41 +08:00
    nivdia-smi 看看服务器有几块 GPU,os.environ["CUDA_VISIBLE_DEVICES"] = "1"里面那个“1”是 GPU 的编号,从 0 开始,要是你服务器就一块卡,肯定是调不起来的。CUDA_VISIBLE_DEVICES 就是在多块 GPU 情况下指定特定 GPU 用的。另外你的代码要支持 GPU 才行,图像处理用 TF pytorch 写吧,nb 的直接 CUDA
    jaswer
        8
    jaswer  
       2020-03-11 07:58:02 +08:00
    另外要看你的算法是否复杂,有的时候数据在内存和显存中传的开销比你算法加速的时间还多。
    drawstar
        9
    drawstar  
       2020-03-11 10:08:51 +08:00
    先看你代码支不支持 cuda

    再看你电脑支不支持 cuda
    suifengingo
        10
    suifengingo  
    OP
       2020-03-11 15:08:37 +08:00
    @jaswer 服务器中只有一块编号为 0 的 GPU,我加上了 os.environ["CUDA_VISIBLE_DEVICES"] = "1"
    并且改为使用 opencv 的 cv2.imwrite() 函数来保存图像了,可是通过输入 nvidia-smi 指令发现运行程序时候还是没有调用到 GPU,求大佬的解答
    jaswer
        11
    jaswer  
       2020-03-11 15:27:17 +08:00
    @suifengingo 我看你还是放弃吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2835 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:40 · PVG 17:40 · LAX 01:40 · JFK 04:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.