我想以编程方式找出可用的GPU及其当前的内存使用情况,并根据其内存可用性使用其中一个GPU。我想在PyTorch中做到这一点。

我在post中看到了以下解决方案:

import torch.cuda as cutorch

for i in range(cutorch.device_count()):
    if cutorch.getMemoryUsage(i) > MEM:
        opts.gpuID = i
        break

但在PyTorch 0.3.1中不起作用(没有名为getMemoryUsage的函数)。我对基于PyTorch的(使用库函数)解决方案感兴趣。任何帮助,将不胜感激。

最佳答案

在您提供的网页中,有一个答案:

#!/usr/bin/env python
# encoding: utf-8

import subprocess

def get_gpu_memory_map():
    """Get the current gpu usage.

    Returns
    -------
    usage: dict
        Keys are device ids as integers.
        Values are memory usage as integers in MB.
    """
    result = subprocess.check_output(
        [
            'nvidia-smi', '--query-gpu=memory.used',
            '--format=csv,nounits,noheader'
        ])
    # Convert lines into a dictionary
    gpu_memory = [int(x) for x in result.strip().split('\n')]
    gpu_memory_map = dict(zip(range(len(gpu_memory)), gpu_memory))
    return gpu_memory_map

print get_gpu_memory_map()

关于gpu - 查找具有足够内存的GPU,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49595663/

10-12 04:28