前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何优雅的抢占别人的显卡?

如何优雅的抢占别人的显卡?

作者头像
godweiyang
发布2021-12-29 15:31:19
1.2K0
发布2021-12-29 15:31:19
举报
文章被收录于专栏:算法码上来算法码上来

作者 | godweiyang

出品 | 公众号:算法码上来(ID:GodNLP)

- BEGIN -

先祝大家圣诞快乐,周末玩的开心。

但开心的同时也别忘了把模型训起来哦,通常一训就要好几天,不如花个几分钟先运行起来,周末结束不就能直接收菜了嘛!

但当你兴高采烈登上服务器,一看显卡全部被占满,这你总不能一直盯着别人的程序跑结束,然后赶紧跑你的程序吧,那岂不是要累死。

所以,我给大家写了一个抢占GPU的脚本,只需要花几秒钟运行一下就可以关机去玩了,卷死别人!

有人可能会说,网上抢占的脚本多的是啊,你这有啥区别?区别就是,我这是C++写的,给你也编译好了,不像Python还需要装各种包,我这可以直接运行,非常方便,此外功能也比较人性化。

做人留一线,日后好相见,记得给别人留两张卡,做的别太绝了!

抢占脚本说明

脚本我已经开源了:

https://github.com/godweiyang/GrabGPU

你也可以直接下载下面这个可执行文件:

https://github.com/godweiyang/GrabGPU/blob/master/grab_gpu

目前这个脚本可以指定如下参数:

  • 抢占的显存大小。如果空闲的显存超过这个大小,就抢占成功,否则无限循环抢占。
  • 占有的时间。如果抢占到了,你想占有的时间。如果运行你自己的程序,这个参数无效。
  • 显卡ID。支持多卡,你想抢占哪几张卡。
  • 你自己程序的执行脚本路径(可选)。你可以选择抢占到显卡后,执行你自己的程序,例如模型训练代码。你也可以不指定,这样默认使用我提供的程序,一直把卡占着,别人也用不了。

实际应用举例

举两个实际场景中的例子。

第一个场景,你实验室服务器有8张32GB显存的显卡,但是都被人占满了,你想等他运行完就立刻占住跑你自己的程序gpu.sh,那么可以直接执行下面命令:

代码语言:javascript
复制
./grab_gpu 31 24 -1 gpu.sh

这里有四个参数,31表示每张卡要抢占31GB,24表示抢到后占有24小时(在运行自己程序脚本时无效),-1表示抢占全部8张显卡,gpu.sh是你程序的执行脚本。

第二个场景,你现在也没啥程序想跑的,但就想在服务器空闲的时候占住显卡,防止别人抢了,那你可以执行下面命令:

代码语言:javascript
复制
./grab_gpu 31 24 -1

和第一个场景区别就是没有run.sh了,这时就会执行我提供的默认CUDA程序,显卡利用率会保持在较高水平,同时执行一段时间还会休眠几秒钟,给服务器也喘口气。注意这时候24这个参数就有作用了,占有24小时后会自动停止,释放所有显卡。

源码编译

如果想进一步做定制,满足自己的需求,可以去看看源码并做修改:

https://github.com/godweiyang/GrabGPU

编译命令也很简单:

代码语言:javascript
复制
nvcc grab_gpu.cu -o grab_gpu
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法码上来 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 抢占脚本说明
  • 实际应用举例
  • 源码编译
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档