使用PyTorch检测和验证多GPU环境的Python脚本

news2024/9/23 18:34:49

使用PyTorch检测和验证多GPU环境的Python脚本

在深度学习和机器学习中,GPU的计算能力对模型训练和推理的速度有着极大的影响。随着多GPU系统的普及,如何确保多GPU能被正确识别并使用,是一个非常关键的问题。本文将为大家介绍一段简洁的Python脚本,它可以帮助你验证PyTorch安装是否正常,并确保系统中的多张GPU都能被正确识别和使用。

脚本功能概述

这段代码的主要功能是:

  1. 检查PyTorch是否正确安装。
  2. 检查CUDA是否可用。
  3. 获取系统中可用的GPU数量,并分别输出每张GPU的详细信息。
  4. 测试每张GPU是否能正常工作,在GPU上创建张量。
脚本代码
import torch

def check_multiple_gpus():
    # 检查PyTorch是否安装以及版本信息
    print(f"PyTorch Version: {torch.__version__}")

    # 检查是否安装了CUDA
    cuda_available = torch.cuda.is_available()
    print(f"CUDA Available: {cuda_available}")

    if cuda_available:
        # 获取可用GPU的数量
        gpu_count = torch.cuda.device_count()
        print(f"Number of GPUs available: {gpu_count}")

        # 循环遍历每一张GPU
        for i in range(gpu_count):
            print(f"GPU {i}: {torch.cuda.get_device_name(i)}")
            
            # 测试在该GPU上创建张量
            try:
                with torch.cuda.device(i):
                    x = torch.rand(3, 3).cuda(i)
                    print(f"Tensor successfully created on GPU {i}: \n{x}")
            except Exception as e:
                print(f"Error when creating tensor on GPU {i}: {e}")
    else:
        print("CUDA is not available, make sure it is installed correctly.")

if __name__ == "__main__":
    check_multiple_gpus()
代码解释
  1. 检查PyTorch版本和CUDA可用性

    • torch.__version__:打印PyTorch的版本信息,确保安装正确。
    • torch.cuda.is_available():判断CUDA是否可用。如果CUDA可用,意味着系统已正确配置了NVIDIA驱动和CUDA。
  2. 获取可用GPU的数量

    • torch.cuda.device_count():返回系统中可用的GPU数量。如果你有多张显卡,比如双卡,这里应该返回大于1的数值。
  3. 输出每张GPU的名称

    • torch.cuda.get_device_name(i):对于每张显卡,获取并输出它的名称。这样可以确认每张显卡是否被正确识别。
  4. 在每张GPU上进行张量操作

    • with torch.cuda.device(i):指定在第 i 张显卡上进行接下来的操作。
    • torch.rand(3, 3).cuda(i):在第 i 张GPU上创建一个3x3的随机张量。这一步的成功执行证明该GPU可以正常进行计算。
  5. 异常处理

    • 脚本通过 try-except 结构捕获潜在的错误。如果某张GPU无法创建张量,会抛出异常并输出错误信息,帮助用户排查问题。
使用方法
  1. 确保你已经正确安装了PyTorch和CUDA驱动。可以通过以下命令安装PyTorch:

    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
    
  2. 运行该脚本:

    python check_gpus.py
    
  3. 脚本将输出类似如下的信息:

    PyTorch Version: 2.0.1
    CUDA Available: True
    Number of GPUs available: 2
    GPU 0: NVIDIA GeForce RTX 4090 D
    Tensor successfully created on GPU 0: 
    tensor([[0.1409, 0.2232, 0.2413],
            [0.5565, 0.3695, 0.5665],
            [0.3443, 0.6117, 0.1937]], device='cuda:0')
    GPU 1: NVIDIA GeForce RTX 4090 D
    Tensor successfully created on GPU 1: 
    tensor([[0.5749, 0.4472, 0.0666],
            [0.7913, 0.7882, 0.8210],
            [0.9765, 0.4896, 0.9297]], device='cuda:1')
    

    在这里插入图片描述

总结

通过这个脚本,你可以轻松验证系统中的多张显卡是否被PyTorch和CUDA正确识别,并确认每张显卡是否能正常工作。该脚本在检测多GPU系统时非常实用,特别适用于需要在深度学习中使用多GPU进行并行训练的场景。

如果你在运行该脚本时遇到问题,可以检查以下几点:

  1. NVIDIA驱动是否正确安装。
  2. CUDA Toolkit是否与PyTorch兼容。
  3. 确保你的PyTorch版本是支持CUDA的版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2158198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新一代图像生成E2E FT:深度图微调突破

文章地址:Fine-Tuning Image-Conditional Diffusion Models is Easier than You Think 项目主页:https://gonzalomartingarcia.github.io/diffusion-e2e-ft/ 代码地址:https://github.com/VisualComputingInstitute/diffusion-e2e-ft 机构&am…

【常见框架漏洞】ThinkPHP、struts2、Spring、Shiro

一、ThinkPHP 1.环境配置 靶场:vulhub/thinkphp/5-rcedocker-compose up -d #启动环境 访问靶场:http://ip:8080/index.php2.远程命令执行 执行whoami命令 poc: http://47.121.211.205:8080/index.php?sindex/think\app/invokefunction&functioncall_user_func_array&…

物联网(IoT)中基于深度学习的入侵检测系统的综合综述

这篇论文是一篇全面的综述,标题为“A comprehensive survey on deep learning-based intrusion detection systems in Internet of Things (IoT)”,作者是Qasem Abu Al-Haija和Ayat Droos。论文主要探讨了在物联网(IoT)环境中基于深度学习的入侵检测系统…

Python自动化-操作Excel

在数据处理和报表生成过程中,Excel是一个经常使用的工具。Python中的openpyxl库可以让您通过编程方式读取、写入和操作Excel文件,从而实现自动化的数据处理和报表生成。本文将介绍openpyxl库的基本用法和常见操作,帮助您快速上手使用Python处…

蘑菇成熟待收检测系统源码分享

蘑菇成熟待收检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

TQRFSOC开发板47DR PS端DDR4测试

本例程实现对PS端的DDR4进行测试,包括内存读写测试,读写眼图测试等。 创建vivado项目与vitis平台项目的流程与hello world相同,我就不在此处重复演示,也可以在hello world 项目基础上添加应用程序项目。在vitis中创建平台项目后新…

隐私计算相关知识

WOE( Weight of Evidence)编码 一种在数据分析,尤其是信用评分和欺诈检测等领域中常用的特征编码方法。它的主要目的是将分类变量转换为数值变量,从而使得模型能够更好地理解类别与目标变量之间的关系 IV( Informatio…

二.python基础语法

目录 1.第一个python实例 2.python编码规范 2.1.编写规则 2.2.命名规范 2.3. 空格 2.4. 缩进 2.5. 注释 3.python关键字和标识符 3.1.标识符 3.2.关键字 4.python变量 4.1. 定义变量 4.2. 变量类型是可变的 4.3. 多个变量指向同一个值 5.python基本数据类型 5.…

通过组态王在ARMxy边缘计算网关上实现设备集成

随着工业4.0和智能制造理念的普及,设备集成已成为提高生产效率、优化资源配置的重要手段之一。ARMxy系列中的BL340边缘计算网关,以其强大的处理能力和丰富的接口资源,成为实现设备集成的理想平台。 1. BL340边缘计算网关概述 BL340系列是AR…

rce漏洞进阶-玩法思路-绕过姿态

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要是整理rce的一些绕过,以及思路等 用于实战中对着测漏洞用 偏进阶,不涉及基础的漏洞原理等内容 玩法思路 代码执行转化命令执行 遇到代码执行漏洞,我们可以传递syste…

计算机毕业设计选题推荐-基于python+Django的全屋家具定制服务平台

精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻 💖🔥作者主页:计算机毕设木哥🔥 💖 文章目录 一、全屋家具定制…

操作系统 | 学习笔记 | | 王道 | 5.3 磁盘和固态硬盘

5.3 磁盘和固态硬盘 5.3.1 磁盘 磁盘结构 磁盘:磁盘的表面由一些磁性物质组成,可以用这些磁性物质来记录二进制数据 磁道:磁盘的盘面被划分成一个个磁道。这样的一个“圈”就是一个磁道 扇区:一个磁道又被划分成一个个扇区&am…

医院信息化运维监控:确保医疗系统的稳定与安全

在当今数字化时代,医院的信息化水平直接关系到医疗服务的效率和质量。随着医疗信息化的不断推进,医院对信息化运维监控的需求也日益增强。特别是IT软硬件资源监控和机房动环监控,它们在保障医院信息系统稳定运行中发挥着至关重要的作用。 首先…

在windows上使用vs code调试Rust程序

视频参考:https://www.youtube.com/watch?vTlfGs7ExC0A 前置条件 需要安装的软件: rustvs codeMinGW 或者其它能在 Windows 平台上运行 gdb、gcc 和 g 的软件。 需要安装的插件: rust-analyzer CodeLLDB 然后,在 vs code 中…

iPhone锁屏密码忘了怎么解锁?轻松解锁攻略来了

在日常生活中,智能手机已成为我们不可或缺的伙伴。其中,iPhone以其出色的性能和优雅的设计,赢得了全球用户的喜爱。然而,即便是最忠实的iPhone用户,也可能会遇到一些棘手的问题,比如忘记了锁屏密码。面对这…

韦唯湾区升明月演绎经典 震撼演绎传递爱与力量

9月22日晚,《“湾区升明月”2024大湾区电影音乐晚会》为全球观众送上了一场融合电影艺术与音乐魅力的艺术狂欢,晚会中不光有对不同代际经典影视金曲、经典歌曲的全新演绎,更是汇集了来自海峡两岸暨港澳地区的电影人、音乐人、奥运健儿代表。中…

【AI画图】stable-diffusion-webui学习之一《安装部署》

简介 Stable Diffusion是2022年发布的深度学习文本到图像生成模型,它是一种潜在扩散模型,它由创业公司Stability AI与多个学术研究者和非营利组织合作开发。目前的SD的源代码和模型都已经开源,在Github上由AUTOMATIC1111维护了一个完整的项目…

git报错:无法读取远程分支 ‘origin‘ does not appear to be a git repository

问题分析 push上传的时候本地分支和远程分支断开连接 所以重新链接即可 排查问题 1. 查看是否有分支,检查分支是否正确 git branch -v 2. 查看连接是否断开,断开无内容展示 查看远程仓库详细信息,可看到仓库地址 git remote -v 解决…

k8s中pod的创建过程和阶段状态

管理k8s集群 kubectl k8s中有两种用户 一种是登录的 一种是/sbin/nologin linux可以用密码登录,也可以用证书登录 k8s只能用证书登录 谁拿到这个证书,谁就可以管理集群 在k8s中,所有节点都被网络组件calico设置了路由和通信 所以pod的ip是可以…

如何在拥挤的应用商店中脱颖而出

在现在移动应用程序已成为我们日常生活中必不可少的一部分,从通信和娱乐到财务和健康管理,为各种问题提供解决方案。然而,Google Play 和 App Store 等应用商店的竞争每年都变得更加激烈。数以百万计的应用程序争夺用户的注意力,仅…