当前位置: 首页 > article >正文

个人笔记本安装CUDA并配合Pytorch使用NVIDIA GPU训练神经网络的计算以及CPUvsGPU计算时间的测试代码

2024小白安装Pytorch-GPU版(Anaconda,CUDA,cuDNN讲解)

安装CUDA并使用PyTorch进行GPU加速的神经网络训练,需要遵循以下步骤:

1. 检查GPU兼容性

在开始之前,需要确认你的个人笔记本的GPU是否支持CUDA。可以通过NVIDIA官方网站查询CUDA兼容性。

2. 下载并安装CUDA Toolkit

  • 访问NVIDIA的官方网站下载适合你GPU和操作系统版本的CUDA Toolkit。
  • 选择适当的安装包,并按照提示完成安装。

3. 配置环境变量

安装完成后,需要配置环境变量以便系统可以找到CUDA。

  • 在Windows系统中,需要将CUDA的路径添加到系统环境变量Path中。
  • 在Linux系统中,需要将以下行添加到~/.bashrc~/.zshrc文件中:
    export PATH=/usr/local/cuda/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
    

之后,运行source ~/.bashrc(或对应的shell配置文件)来更新当前会话。

4. 验证CUDA安装

通过运行nvcc --version命令来验证CUDA是否正确安装。

5. 安装cuDNN

  • 从NVIDIA官网下载与CUDA版本兼容的cuDNN。
  • 将下载的cuDNN文件解压并放置到CUDA Toolkit目录下。

6. 安装PyTorch

  • 访问PyTorch官网,根据你的系统和CUDA版本选择合适的安装命令。
  • 使用conda或pip安装PyTorch,确保选择带有cuda后缀的版本。
    例如,使用pip安装命令可能如下所示:
pip install torch torchvision torchaudio cudatoolkit=xx.x  # xx.x 是CUDA版本号

7. 验证PyTorch是否可以识别GPU

在Python中运行以下代码来验证PyTorch是否能够识别和使用GPU:

import torch
print(torch.cuda.is_available())

如果返回True,则表示安装成功。

8. 使用GPU进行训练

在编写PyTorch代码时,确保将你的模型和数据移动到GPU上。以下是一个简单的例子:

# 定义模型
model = YourModel().cuda()  # 将模型移至GPU
# 定义损失函数和优化器
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# 训练数据
for data, target in train_loader:
    data, target = data.cuda(), target.cuda()  # 将数据移至GPU
    optimizer.zero_grad()
    output = model(data)
    loss = criterion(output, target)
    loss.backward()
    optimizer.step()

以上步骤概述了在个人笔记本上安装CUDA和PyTorch,并使用GPU进行神经网络训练的过程。每个步骤的详细说明和可能的问题解决方法,你可以在相应的官方网站找到。在安装和配置过程中,务必确保所有组件的版本兼容性。

测试CPU和GPU计算差异:
运行CPU vs GPU.py代码

import time
import torch

# 定义一个函数来测量时间
def measure_time(device, X):
    X = X.to(device)
    time_start = time.time()
    Z = torch.mm(X, X)
    time_end = time.time()
    return round((time_end - time_start) * 1000, 2), device

# 检查CUDA是否可用
if torch.cuda.is_available():
    gpu_device = 'cuda:0'
else:
    print("CUDA is not available. Using CPU instead.")
    # gpu_device = 'cpu'

# 计算量较大的任务
X_large = torch.rand((10000, 10000))
cpu_time_large, cpu_device = measure_time('cpu', X_large)
gpu_time_large, gpu_device = measure_time(gpu_device, X_large)
print(f'Large task - CPU time cost: {cpu_time_large}ms on {cpu_device}')
print(f'Large task - GPU time cost: {gpu_time_large}ms on {gpu_device}')

# 计算量很小的任务
X_small = torch.rand((5000, 5000))
cpu_time_small, cpu_device = measure_time('cpu', X_small)
gpu_time_small, gpu_device = measure_time(gpu_device, X_small)
print(f'Small task - CPU time cost: {cpu_time_small}ms on {cpu_device}')
print(f'Small task - GPU time cost: {gpu_time_small}ms on {gpu_device}')

个人笔记本运行结果

Large task - CPU time cost: 2216.92ms on cpu
Large task - GPU time cost: 15.62ms on cuda:0
Small task - CPU time cost: 297.88ms on cpu
Small task - GPU time cost: 1.64ms on cuda:0

http://www.kler.cn/a/406752.html

相关文章:

  • Mysql的UPDATE(更新数据)详解
  • 企业网页设计的安全与数据保护
  • VM虚拟机装MAC后无法联网,如何解决?
  • day06(单片机高级)PCB设计
  • 数据结构-7.Java. 对象的比较
  • Kafka 数据倾斜:原因、影响与解决方案
  • Android adb shell dumpsys audio 信息查看分析详解
  • 企业OA管理系统:Spring Boot技术深度探索
  • PTC在电池中的作用
  • 万有引力定律和库仑定律:自然的对称诗篇
  • Android opencv使用Core.hconcat 进行图像拼接
  • 《筑牢安全防线:培养 C++安全编程思维习惯之道》
  • 什么是 C++ 中的模板特化和偏特化?如何进行模板特化和偏特化?
  • Python编程技巧:多变量赋值的优雅艺术
  • 躺平成长-腾讯云数据库(又消失了一次)
  • 打造极致网页体验:HTML与CSS高级实战秘籍
  • 利用Docker容器技术部署发布web应用程序
  • Playwright(Java版) - 7: Playwright 页面对象模型(POM)
  • Vue 是如何实现数据双向绑定的?
  • logstash 解析数组格式json数据:split, json
  • element-plus入门教程:Button
  • 【高阶数据结构】并查集
  • RPC学习
  • 安宝特分享 | 如何利用AR技术革新医疗实践:从远程急救到多学科协作
  • QT QChart+Eigen库绘制线性回归散点图
  • 【电路笔记】-布尔逻辑AND函数