54 lines
3.8 KiB
Python
54 lines
3.8 KiB
Python
import GPUtil
|
||
import json
|
||
# 网址:https://github.com/anderskm/gputil
|
||
GPUtil.showUtilization()
|
||
#返回可用 GPU 的列表 ID。
|
||
# order- 确定返回可用 GPU 设备 ID 的顺序。order应指定为以下字符串之一:
|
||
# 'first'- 按升序排列可用的 GPU 设备 ID(默认)
|
||
# 'last'- 按 id 降序排列可用的 GPU 设备 id
|
||
# 'random'- 随机订购可用的 GPU 设备 ID
|
||
# 'load'- 按负载递增排序可用的 GPU 设备 ID
|
||
# 'memory'- 通过升序内存使用来排序可用的 GPU 设备 ID
|
||
# limit- 将返回的 GPU 设备 ID 数量限制为指定数量。必须是正整数。(默认 = 1)
|
||
# maxLoad- 被认为可用的 GPU 的最大当前相对负载。负载大于 的 GPUmaxLoad不会返回。(默认 = 0.5)
|
||
# maxMemory- 被视为可用的 GPU 的最大当前相对内存使用量。maxMemory不返回当前内存使用量大于的 GPU 。(默认 = 0.5)
|
||
# includeNan- 真/假标志,指示是否包括负载或内存使用为 NaN 的 GPU(指示无法检索使用情况)。(默认 = 假)
|
||
# excludeID- ID 列表,应从可用 GPU 列表中排除。见GPU类描述。(默认 = [])
|
||
# excludeUUIDexcludeID-除了它使用 UUID 之外,其他相同。(默认 = [])
|
||
# 输出
|
||
# deviceIDs - 所有可用 GPU 设备 ID 的列表。如果当前负载和内存使用量分别小于maxLoad和maxMemory,则认为 GPU 可用。该列表是根据 排序的order。返回的设备 ID 的最大数量由 限制limit。
|
||
deviceIDs = GPUtil.getAvailable(order = 'memory', limit = 1, maxLoad = 0.8, maxMemory = 0.8, includeNan=False, excludeID=[], excludeUUID=[])
|
||
print(deviceIDs)
|
||
# 返回第一个可用的 GPU。可用性是根据当前的内存使用和负载确定的,排序由指定的顺序确定。如果找不到可用的 GPU,则会引发错误。使用默认值时,与getAvailable(order = 'first', limit = 1, maxLoad = 0.5, maxMemory = 0.5)
|
||
# 输入
|
||
# order- 见描述GPUtil.getAvailable(...)
|
||
# maxLoad- 被认为可用的 GPU 的最大当前相对负载。负载大于 的 GPUmaxLoad不会返回。(默认 = 0.5)
|
||
# maxMemory- 被视为可用的 GPU 的最大当前相对内存使用量。maxMemory不返回当前内存使用量大于的 GPU 。(默认 = 0.5)
|
||
# attempts- 在放弃寻找可用 GPU 之前,该函数应进行的尝试次数。(默认 = 1)
|
||
# interval- 每次尝试查找可用 GPU 的时间间隔(以秒为单位)。(默认 = 900 --> 15 分钟)
|
||
# verbose- 如果True是,则在每次尝试之前打印尝试次数,如果找到可用的,则打印 GPU id。
|
||
# includeNan- 见说明GPUtil.getAvailable(...)。(默认 = 假)
|
||
# excludeID- 见说明GPUtil.getAvailable(...)。(默认 = [])
|
||
# excludeUUID- 见说明GPUtil.getAvailable(...)。(默认 = [])
|
||
# 输出
|
||
# deviceID - 包含 1 个元素的列表,其中包含第一个可用的 GPU 设备 ID。如果当前负载和内存使用量分别小于maxLoad和maxMemory,则认为 GPU 可用。顺序和限制分别固定为'first'和1。
|
||
deviceID = GPUtil.getFirstAvailable(order = 'first', maxLoad=0.5, maxMemory=0.5, attempts=1, interval=900, verbose=False)
|
||
print(deviceID)
|
||
GPUtil.showUtilization(all=True, attrList=None, useOldCode=True)
|
||
# 打印所有 GPU 的当前状态(id、内存使用情况、uuid 负载)
|
||
# 输入
|
||
# all- 真/假标志,指示是否应显示 GPU 上的所有信息。覆盖attrList。
|
||
# attrListGPU-要显示的属性列表列表。有关更多信息/示例,请参见代码。
|
||
# useOldCode- 真/假标志,指示是否应使用显示 GPU 利用率的旧代码。
|
||
# 输出
|
||
# 没有任何
|
||
|
||
GPUs = GPUtil.getGPUs()
|
||
for gpu in GPUs:
|
||
print(gpu.id)
|
||
# 输入
|
||
# 没有任何
|
||
# 输出
|
||
# GPUs- 所有 GPU 的列表。每个GPU对应于计算机中的一个 GPU,并包含一个设备 ID、相对负载和相对内存使用情况。
|
||
if __name__ == "___main__":
|
||
pass |