python编程查看gpu显存使用

使用到了包pynvml

import pynvml


# ======================GPU========================#
# 查看torch使用gpu情况,需要安装一个包pynvml
# 直接使用pip可以安装
# ======================GPU========================#
def get_gpu_info(use_index=(0,)):
    """
    深度学习训练使用,可以回去显卡信息,
    使用到的包:pynvml
    :param use_index: 使用的GPU的物理编号
    :return: 
    """

    # 计算显存是GB还是MB的函数,方便后续查看数据
    def func(number):
        # number单位是MB
        if number // 1024 > 0:  # 如果number对1024取整是大于0的说明单位是GB
            return f"{number / 1024.0:.3f}GB"  # 返回值的单位是GB
        else:
            return f"{number:.3f}MB"

    # 初始化管理工具
    pynvml.nvmlInit()
    # device = torch.cuda.current_device()  # int
    gpu_count = pynvml.nvmlDeviceGetCount()  # int
    information = []
    for index in range(gpu_count):
        # 不是使用的gpu,就剔除
        if index not in use_index:
            continue
        handle = pynvml.nvmlDeviceGetHandleByIndex(index)
        meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)
        total = meminfo.total / 1024 ** 2  # 总的显存大小,单位是MB
        used = meminfo.used / 1024 ** 2  # 已用显存大小
        free = meminfo.free / 1024 ** 2  # 剩余显存大小
        information.append(f"Memory Total:{func(total)}; Memory Used:{func(used)}; Memory Free:{func(free)}")
    # 关闭管理工具
    pynvml.nvmlShutdown()
    return "\n".join(information)


print(get_gpu_info(use_index=(0,)))

改进:改成类,这样实例化的函数就能够通过参数的形式传递了

import pynvml


class GetGPUInfo:
    """
     # ======================GPU========================#
     # 查看torch使用gpu情况,需要安装一个包pynvml
     # 直接使用pip可以安装
     # ======================GPU========================#
    """

    def __init__(self, use_index=(0,)):
        self.use_index = use_index

    @staticmethod
    def get_gpu_info(use_index=(0,)) -> str:
        """
        深度学习训练使用,可以回去显卡信息,
        使用到的包:pynvml
        :param use_index: 使用的GPU的物理编号
        :return: 显存使用的信息str
        """

        # 计算显存是GB还是MB的函数,方便后续查看数据
        def func(number):
            # number单位是MB
            if number // 1024 > 0:  # 如果number对1024取整是大于0的说明单位是GB
                return f"{number / 1024.0:.3f}GB"  # 返回值的单位是GB
            else:
                return f"{number:.3f}MB"

        # 初始化管理工具
        pynvml.nvmlInit()
        # device = torch.cuda.current_device()  # int
        gpu_count = pynvml.nvmlDeviceGetCount()  # int
        information = []
        for index in range(gpu_count):
            # 不是使用的gpu,就剔除
            if index not in use_index:
                continue
            handle = pynvml.nvmlDeviceGetHandleByIndex(index)
            meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)
            total = meminfo.total / 1024 ** 2  # 总的显存大小,单位是MB
            used = meminfo.used / 1024 ** 2  # 已用显存大小
            free = meminfo.free / 1024 ** 2  # 剩余显存大小
            information.append(f"\nMemory Total:{func(total)}; Memory Used:{func(used)}; Memory Free:{func(free)}")
        # 关闭管理工具
        pynvml.nvmlShutdown()
        return "".join(information)

    def __call__(self):
        return self.get_gpu_info(use_index=self.use_index)
        
if __name__ == "__main__":
	# 使用的显卡的物理编号,用于显示显卡使用信息
	use_cuda_index = (0,)
	get_gpu_info = GetGPUInfo(use_index=use_cuda_index)
	print(get_gpu_info())
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python是一门高效的编程语言,但在处理大规模数据时,会出现运行速度缓慢的问题。针对此问题,我们可以使用GPU加速计算,提高代码运行的效率。在Python中,通过调用第三方库可以方便地使用GPU加速计算。 最常用的GPU计算库是PyTorch和TensorFlow。这两个库支持在GPU上进行计算,可以提高代码运行速度。当我们使用PyTorch的时候,可以使用torch.cuda.is_available()方法查看当前计算机是否支持GPU,如果支持,则可以使用.to('cuda')方法将数据转换到GPU上进行计算。如果想要在tensorflow中使用GPU进行计算,可以使用tf.config.list_physical_devices('GPU')方法检测当前可用的GPU设备,然后使用with tf.device('/GPU:0')方法将计算移动到GPU上。 在使用GPU加速计算时,需要注意有些计算可能会导致GPU溢出的问题,因此需要合理地分配GPU资源,尽可能减小的占用。此外,使用GPU进行计算需要注意正确的安装GPU driver,以及使用合适版本的CUDA和cuDNN。 总之,使用GPU可以提高Python代码的运行速度,尤其适用于处理大规模数据时的计算需求。在使用GPU时,需要注意调用合适的库和方法,以及合理地分配GPU资源,确保代码能够在GPU上顺利运行。 ### 回答2: Python是一种广泛使用编程语言,可以应用于多种领域,包括人工智能、数据科学、机器学习等。随着数据量和计算复杂性的增加,普通的CPU运算速度可能会变得缓慢或不够强大。这就是使用GPU运行代码的原因。使用GPU可以大大提高计算速度,提高代码运行效率。 Python使用GPU运行代码需要使用GPU加速计算库,其中最常用的是CUDA (Compute Unified Device Architecture),它由Nvidia公司开发。CUDA是一个基于GPU体系结构的编程平台,可以用于加速计算密集型应用程序。CUDA允许用户使用C、C++、Fortran等编程语言,利用许多核心的GPU来加速计算,从而在短时间内运行大量的数据集合。 在Python中,借助于CUDA,可以使用类库如Theano、TensorFlow、PyTorch和Keras实现深度学习训练。这些类库中都有提供了一些GPU加速的API,这些API允许用户直接将数据传递到GPU上进行计算,并在运行代码时将内数据移回CPU。在使用这些库时,一般需要安装CUDA和CUDA驱动程序,以便将CUDA的功能与GPU结合使用。 例如,在使用PyTorch进行深度学习训练时,使用以下代码将numpy数组转换为CUDA张量: import torch import numpy as np # Create a numpy array a = np.array([1,2,3]) # Convert numpy array to PyTorch tensor t = torch.from_numpy(a) # Move tensor to GPU t_cuda = t.cuda() 在PyTorch中,只需在最后一步调用.cuda()函数就可以将数据传递到GPU上进行计算。同样,在使用其他类库时,也可以通过相应的函数将数据移动到GPU上进行加速运算。 需要注意的是,在运行代码时,还需要做一些GPU的配置工作,如选择GPU设备号、设置GPU和优化GPU计算,以达到更好的性能。此外,由于GPU的计算资源有限,需要小心地使用,以避免资源耗尽而导致系统崩溃。 总而言之,Python使用GPU进行计算,可以大大提高代码运行效率,特别是在处理大量数据,进行深度学习训练等计算密集型任务时。借助于CUDA,Python用户可以轻松地利用GPU加速计算,同时需要小心地管理GPU资源,以确保系统稳定性和执行效率。 ### 回答3: Python语言是目前非常流行的一种编程语言,其应用范围非常广泛,包括科学计算、数据分析、Web开发等。随着人工智能和深度学习等技术的发展,Python的应用也越来越多地涉及到对GPU的运用,以提升代码的运行速度和效率。 在Python使用GPU运行代码,需要借助于一些第三方库或框架,比如Numpy、TensorFlow、PyTorch等。这些库或框架都支持GPU加速,可以将部分计算任务交给GPU来执行,从而大大提高计算速度和效率。 具体来说,Python使用GPU运行代码的步骤如下: 1. 安装相应的GPU驱动程序和CUDA工具包。这些工具可供下载,需要根据不同的GPU型号和Python版本选择适合的版本。 2. 安装GPU支持的Python库。比如使用pip install tensorflow-gpu安装TensorFlow-gpu库。 3. 编写代码时,需要设置GPU为运行设备。可以使用以下代码: ``` import tensorflow as tf #设置仅使用第一个gpu gpu_options = tf.GPUOptions(allow_growth=True, visible_device_list="0") config = tf.ConfigProto(gpu_options=gpu_options) sess = tf.Session(config=config) ``` 4. 使用GPU来加速计算。在使用GPU加速的库中,一般会提供相应的API来选择使用CPU还是GPU来执行计算任务。比如在PyTorch中可以使用.to(device)将张量转换到GPU上执行,或者使用.nn.DataParallel将模型移动到多个GPU上进行训练。 需要注意的是,在使用GPU进行计算时,要充分考虑GPU资源的限制和内的占用情况,需要合理地管理和分配GPU资源,以避免因为过度使用GPU而导致计算任务运行失败或影响其他程序的执行。 总之,Python使用GPU运行代码是一种非常高效的方式,可以提升计算速度和效率,特别是在处理大规模的数据和复杂的算法时,更加凸出其优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值