获取GPU资源

import time
import csv
import pynvml
import argparse


def gpu_usage(gpu_info_csv, query_interval, max_time):
    header = ['time']
    pynvml.nvmlInit()
    gpu_num = pynvml.nvmlDeviceGetCount()  # 显示有几块GPU

    for i in range(gpu_num):
        header.append("gpu_{}".format(i))

    # write header
    with open(gpu_info_csv, 'w', encoding='utf-8', newline='') as fp:
        writer = csv.DictWriter(fp, fieldnames=header)
        writer.writeheader()

        max_query_time = int(max_time / query_interval)
        count = 0
        time_records = []
        message = ""
        while count < max_query_time:
            current_time = time.ctime()
            record = [current_time]
            for i in range(gpu_num):
                handle = pynvml.nvmlDeviceGetHandleByIndex(i)
                meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)
                gpu_usage = meminfo.used / 1024.0 / 1024.0
                record.append(gpu_usage)
                message += "gpu_{} usage: {}M, ".format(i, gpu_usage) 

            time_records.append(record)
            message = "time: {}".format(current_time) + message  
            print(message)
            
            writer.writerow(dict(zip(header, record)))
            
            message = " "
            time.sleep(query_interval)
            count += 1

if __name__ == '__main__':

    long_description = "Get gpu memory usage"
    parser = argparse.ArgumentParser(description=long_description)
    parser.add_argument('-o', '--output', nargs='?', default='/home/zxj/gpu_info.csv',
                        help='输出的csv路径')
    parser.add_argument('--interval', type=float, default=0.5, help='查询显存使用量的时间间隔')
    parser.add_argument('--max_time', type=int, default=5, help='程序运行最大时间(秒)')

    args = parser.parse_args()
    gpu_usage(args.output, args.interval, args.max_time)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值