你们要的完整代码:
{
"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自带终端
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)