GPU排队脚本实现空闲触发python脚本实现示例

今天写了一个GPU排队脚本,事实上还是挺实用的。有的服务器是多用户使用,GPU的资源常常被占据着,很可能在夜间GPU空闲了,但来不及运行自己的脚本。如果没有和别人共享服务器的话,自己的多个程序想排队使用GPU,也可以用这个脚本。环境非常简单,有python就行了:

python3.7

ubuntu16.04

先创建脚本:

?

1

vim narrow_setup.py

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

# author: muzhan

# contact: levio.pku@gmail.com

import os

import sys

import time

cmd = 'python ~/hehe.py'

def gpu_info():

gpu_status = os.popen('nvidia-smi | grep %').read().split('|')

gpu_memory = int(gpu_status[2].split('/')[0].split('M')[0].strip())

gpu_power = int(gpu_status[1].split(' ')[-1].split('/')[0].split('W')[0].strip())

return gpu_power, gpu_memory

def narrow_setup(interval=2):

gpu_power, gpu_memory = gpu_info()

i = 0

while gpu_memory > 1000 or gpu_power > 20: # set waiting condition

gpu_power, gpu_memory = gpu_info()

i = i % 5

symbol = 'monitoring: ' + '>' * i + ' ' * (10 - i - 1) + '|'

gpu_power_str = 'gpu power:%d W |' % gpu_power

gpu_memory_str = 'gpu memory:%d MiB |' % gpu_memory

sys.stdout.write('\r' + gpu_memory_str + ' ' + gpu_power_str + ' ' + symbol)

sys.stdout.flush()

time.sleep(interval)

i += 1

print('\n' + cmd)

os.system(cmd)

if __name__ == '__main__':

narrow_setup()

直接运行脚本:

?

1

python narrow_setup.py

就可以监听nvidia-smi中的信息,以伺机触发python脚本~

运行结果如下:

等待机会中... 如果gpu显存和功耗低于某个值时,就会触发python脚本。

以上就是GPU排队脚本实现一旦空闲就触发python脚本实现示例的详细内容,更多关于GPU排队脚本实现空闲触发python脚本的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/leviopku/article/details/102958166

本文链接:https://my.lmcjl.com/post/18795.html

展开阅读全文

4 评论

留下您的评论.