【问题标题】:How to check if GPU memory is available using PyOpenCL如何使用 PyOpenCL 检查 GPU 内存是否可用
【发布时间】:2015-04-22 23:13:13
【问题描述】:

我想知道是否有一种方法可以在函数使用它之前检查有多少 GPU 内存可用。我的代码经常使用 1.5 GB 或更多的 GPU 内存,如果在我的程序想要使用 GPU 时有其他东西正在使用它,我会收到 MemoryError 异常或类似的东西。

我想实现某种代码,以便我可以检查 GPU 是否有足够的可用内存,如果有,请继续运行,但如果没有,请等到它可用。

(最好在尝试使用 GPU 之前进行检查,而不是使用 try-except 循环,如果失败则重试)

我查看了 PyOpenCL 文档以查看 device_info 下是否有相关内容,但我找不到任何实际描述。

【问题讨论】:

    标签: python pyopencl


    【解决方案1】:

    这是不可能的,实际上是 OpenCL 的限制,而不仅仅是 PyOpenCL。见here

    在 NVIDIA 设备上,您可以使用 nvidia-ml-py。然后你可以这样做:

    from pynvml import *
    nvmlInit()
    for i in range(nvmlDeviceGetCount()):
        handle = nvmlDeviceGetHandleByIndex(i)
        meminfo = nvmlDeviceGetMemoryInfo(handle)
        print("%s: %0.1f MB free, %0.1f MB used, %0.1f MB total" % (
            nvmlDeviceGetName(handle),
            meminfo.free/1024.**2, meminfo.used/1024.**2, meminfo.total/1024.**2))
    nvmlShutdown()
    

    【讨论】:

      【解决方案2】:

      我尝试将上述答案与 python3 一起使用,但我没有工作,但是我能够使用以下代码解决这个问题。

      from py3nvml.py3nvml import *
      nvmlInit()
      deviceCount = nvmlDeviceGetCount()
      for i in range(deviceCount):
          handle = nvmlDeviceGetHandleByIndex(i)
          gpuUtilization = nvmlDeviceGetUtilizationRates(handle)
          print(f'{nvmlDeviceGetName(handle)} Utilization: {gpuUtilization.gpu}% Memory: {gpuUtilization.memory}%')
      nvmlShutdown()
      

      【讨论】:

        猜你喜欢
        • 2022-01-27
        • 2020-08-12
        • 2021-07-13
        • 2019-01-12
        • 2018-06-17
        • 2019-04-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多