python琐事系列1:关于如何真正的在vscode用gpu跑代码

笑死了,手动狗头
你们要的完整代码:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "args": ["-gpu"],
            "console": "integratedTerminal",
            "justMyCode": true
        }
    ]
}

前言:

我看到别人用os的这个代码去试着跑代码,我真的笑死…原理都不一样。

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "GPU设备号"

os.environ是干什么的:
官方文档(机翻):
os.environ
一个映射对象,其中键和值是表示流程环境的字符串。例如,是主目录的路径名(在某些平台上),等效于 C 中。environ['HOME']getenv("HOME")

此映射在首次导入 os 模块时捕获,通常在 Python 启动期间作为处理的一部分。在此时间之后对环境所做的更改不会反映在 中,但通过直接修改 os.environ 所做的更改除外。site.py

此映射可用于修改环境以及查询环境。当映射被修改时, 将被自动调用。

在Unix上,键和值使用sys.getfilesystemencoding()和错误处理程序。如果要使用其他编码,请使用环境。'surrogateescape'

人话:在python运行时临时使用一个操作系统的系统环境变量
图:在这里插入图片描述
其中,cuda相关:在这里插入图片描述
具体原理(逻辑):

1.os.environ调用代码中描述的环境变量,随后调用相关环境变量
2.环境变量中指定的指令和程序,软件被执行
3.与兼容的pipy库运行指令和代码(那些支持cuda的,如keras,tensorflow,torch)
4.将需要在cuda设备下运行的指令,代码,数据搬到cuda下用gpu跑

tips:你应该看出来了吧,写个print(list(变量))或者用matplotlib把整张图绘制出来(比如说你搞个人工智能分辨率修复,你把4000x8000的人物立绘整个x16倍),这些代码是不跑cuda的,那也就意味着不gpu,但是单单运行这些都比整个神经网络单次运行的计算量要大得多!

正文:

虽然python的自带库没有将整个代码塞进gpu跑的,但是python却自带了相关的参数
没错,就是python filepath -gpu
cmd和powershell都能用就差vscode了!
由于vscode的python内置了终端交互,所以多少有点方便,但是却不能直接通过终端赋予参数,只能用cmd或者powershell去运行python,这导致终端输出变成了相应的。
所以,说人话就是vscode通过launch.json达到了相应的功能。本是同根生,相煎何太急?

教程:

1.
运行,打开配置,然后就打开了launch.json

2.在

"program": "${file}",

下面插入

 "args": ["-gpu"],

3.保存,然后尽情的烧电脑吧!!记得架个平底锅煎蛋!!

缺点:

由于只是交由gpu运行,所以不能指定设备。而且默认是核显,主显卡几乎不运行,很怪。
由于只是运行程序,所以速度是一样的,没有加速功能。

优点:

主程序不占用cpu
由于python奇怪的gpu使用逻辑(哪怕你用keras和tensorflow也是一样),几乎不占用gpu
仍然可以使用vscode自带终端


版权声明:本文为qq_40741496原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。