Pytorch在cuda、AMD DirectML和AMD CPU下性能比较

这篇具有很好参考价值的文章主要介绍了Pytorch在cuda、AMD DirectML和AMD CPU下性能比较。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、测试环境

CUDA环境: i7-8550u + 16G DDR4 2133MHz + nVidia MX150 2GB

AMD DirectML环境: Ryzen 5 5600G + 32G DDR4 3200MHz + Vega7 4GB

AMD 纯CPU环境:Ryzen 5 5600G + 32G DDR4 3200MHz 

其他硬件配置的硬盘、电源均一致。Pytorch版本为2.0.0,Python环境为3.7.11,Win10 LTSC。

二、测试代码

拟合一个100万点数的函数,并计算从神经网络被传入内存/显存开始,到计算结果出来,所耗费的时间。不含前面准备时间、出图时间。计算三次手动记录平均值。代码如下:

CUDA测试代码

# -*- coding: utf-8 -*-
# @Time    : 19/12/9 16:38
# @Author  : JL
# @File    : pytorchTest.py
# @Software: PyCharm

import matplotlib.pyplot as plt
import torch
import time

x = torch.unsqueeze(torch.linspace(-1, 1, 1000000), dim=1).cuda()
y = x.pow(2) + 0.3 * torch.rand(x.size()).cuda()

net1 = torch.nn.Sequential(
    torch.nn.Linear(1, 10),
    torch.nn.ReLU(),
    torch.nn.Linear(10, 1)
)
optimizer = torch.optim.SGD(net1.parameters(), lr=0.5)
lossFunc = torch.nn.MSELoss()

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print("当前使用的设备是:" + str(torch.cuda.get_device_name(torch.cuda.current_device())))
print("当前CUDA、CUDNN版本号分别为:"+str(torch.version.cuda)+"、"+str(torch.backends.cudnn.version()))
print("当前Pytorch版本号为:"+str(torch.__version__))

startTime = time.perf_counter()

net1.to(device)

for t in range(100):
    prediction = net1(x)
    loss = lossFunc(prediction, y)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    print(loss.data.cpu().numpy())

endTime = time.perf_counter()
delta = endTime-startTime

print("Treat a net in %0.2f s." % delta)

plt.scatter(x.data.cpu().numpy(), y.data.cpu().numpy())
plt.show()

DirectML、AMD CPU测试代码:

# -*- coding: utf-8 -*-
# @Time    : 19/12/9 16:38
# @Author  : Jay Lam
# @File    : pytorchTest.py
# @Software: PyCharm

import matplotlib.pyplot as plt
import torch
import torch_directml
import time

dml = torch_directml.device(0)  # 如果使用DirectML,则分配到dml上
cpuML = torch.device("cpu")  # 如果仅使用CPU,则选择分配到cupML上

# 注意修改dml或cpuML
x = torch.unsqueeze(torch.linspace(-1, 1, 1000000), dim=1).to(dml)
y = x.pow(2).to(dml)+ 0.3 * torch.rand(x.size()).to(dml)

net1 = torch.nn.Sequential(
    torch.nn.Linear(1, 10),
    torch.nn.ReLU(),
    torch.nn.Linear(10, 1)
)
lossFunc = torch.nn.MSELoss()

print("当前Pytorch版本号为:" + str(torch.__version__))

net1.to(dml)  # 注意修改dml或cpuML
startTime = time.perf_counter()

for t in range(100):
    optimizer = torch.optim.SGD(net1.parameters(), lr=0.01) # 注意: 对于使用AMD显卡做DML的要把optimizer放在循环内,不然梯度无法下降
    prediction = net1(x)
    loss = lossFunc(prediction, y)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    print(loss.data.cpu().numpy())

endTime = time.perf_counter()
delta = endTime - startTime

print("Treat a net in %0.2f s." % delta)

plt.scatter(x.data.cpu().numpy(), y.data.cpu().numpy())
plt.show()

三、测试结论

测试类型  耗费时间(秒,越小越好)
CUDA 3.57
DirectML 4.48
纯CPU 5.31

看起来DirectML有点加速效果,但是还是和CUDA有差距,更何况这个是笔记本上最弱的MX150显卡的CUDA。微软要加油了。另外AMD的CPU,还是安心打游戏好了。文章来源地址https://www.toymoban.com/news/detail-615133.html

到了这里,关于Pytorch在cuda、AMD DirectML和AMD CPU下性能比较的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 腾讯云服务器SA3实例AMD处理器CPU网络带宽性能详解

    腾讯云AMD服务器SA3实例CPU采用2.55GHz主频的AMD EPYCTM Milan处理器,睿频3.5GHz,搭载最新一代八通道DDR4,内存计算性能稳定,默认网络优化,最高内网收发能力达1900万pps,最高内网带宽可支持100Gbps 。腾讯云服务器网分享腾讯云AMD服务器SA3实例性能详解: 目录 腾讯云CVM服务器S

    2024年02月08日
    浏览(75)
  • 阿里云CPU性能AMD EPYC Genoa 9T34处理器主频3.4 GHz

    阿里云AMD服务器CPU AMD EPYC Genoa 9T34 处理器,主频3.4 GHz,单核睿频最高3.75 GHz,计算性能稳定,阿里云服务器网分享AMD EPYC Genoa 9T34性能测评: 阿里云AMD服务器性能增强通用型g8ae、计算平衡增强型c8ae实例和内存平衡增强型r8ae,处理器均采用3.4 GHz主频的AMD EPYCTM Genoa 9T34处理器,

    2024年02月05日
    浏览(48)
  • PYTORCH 依赖 cuda 11.8 , cuda 12.1 cpu 里 torch torchvision torchaudio对应关系

    Pytorch是Facebook人工智能研究院基于Torch开发的一个开源的Python机器学习库,它提供了两项强大的功能: 1、强大的GPU加速的张量计算(NumPy)。 2、自动求导系统的深度神经网络。 cuda 11.8 cuda 12.1 cpu  Previous PyTorch Versions | PyTorch

    2024年02月01日
    浏览(57)
  • Linux和Windows系统下:安装Anaconda、Paddle、tensorflow、pytorch,GPU[cuda、cudnn]、CPU安装教学,以及查看CPU、GPU内存使用情况

    Anaconda安装:Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。使用Anaconda可以通过创建多个独立的Python环境,避免用户的Python环境安装太多不同版本依赖导致冲突。 Anaconda 是一个免费开源的 Python 和 R 语言的发行版本,用于计算科学,Anac

    2024年02月04日
    浏览(64)
  • 深度学习|如何确定 CUDA+PyTorch 版本

    对于深度学习初学者来说,配置深度学习的环境可能是一大难题,因此本文主要讲解CUDA; cuDNN; Pytorch 三者是什么,以及他们之间的依赖关系。 CUDA(Compute Unified Device Architecture)是由NVIDIA开发的用于并行计算的平台和编程模型。CUDA旨在利用NVIDIA GPU(图形处理单元)的强大计算

    2024年02月07日
    浏览(47)
  • 深度学习环境配置(Aanconda+cuda+pytorch)

    1.Anaconda安装包下载 ①从官网下载(速度感人) 官网下载网址:https://www.anaconda.com/products/distribution ②从清华大学开源软件镜像下载(推荐) 镜像网址:https://mirrors.bfsu.edu.cn/anaconda/archive/ 选择自己电脑所适配的版本。(推荐下载Anaconda3系列版本) 2.Anaconda的安装 找到下载好的

    2024年02月14日
    浏览(44)
  • 【学习心得】安装cuda/cudann和pytorch

     也可以右下角图标打开NVIDIA 设置进行查看 推荐自定义安装。建议只勾选Cuda,只安装这一个就好,以免报错安装失败。 验证CUDA是否安装成功,打开cmd,输入 nvcc –V,如下返回则说明安装成功。 【注】Cuda和CudaNN的关系 cuda和cudann是nvidia用于GPU加速计算的两个关键技术。 它

    2024年02月13日
    浏览(38)
  • CUDA学习笔记(七)Kernel性能调节

    本篇博文转载于https://www.cnblogs.com/1024incn/tag/CUDA/,仅用于学习。 这部分主要介绍并行分析,涉及掌握nvprof的几个metric参数,具体的这些调节为什么会影响性能会在后续博文解释。 下面是我们的kernel函数sumMatrixOnGPUD: 我们指定一个比较大的数据矩阵,包含16384个元素: 下面的

    2024年02月07日
    浏览(34)
  • 【深度学习环境配置】ubuntu 20.04+4060 Ti+CUDA 11.8+pytorch(装机、显卡驱动、CUDA、cudnn、pytorch)

    【深度学习环境配置】ubuntu 20.04+4060 Ti+CUDA 11.8+pytorch(装机、显卡驱动、CUDA、cudnn、pytorch) 📆 安装时间 2023.11.08-2023.11.10 Windows 和 Ubuntu 双系统的安装和卸载 B站教程 【本文基本上跟这个详细教程一致,优先推荐看这个!】ubuntu20.04 下深度学习环境配置 史上最详细教程 【精

    2024年02月04日
    浏览(65)
  • 深度学习部署(十九): CUDA RunTime API YOLOV5后处理cpu解码以及gpu解码

    看看我们干了什么, 就是把bouding box恢复成框而已 对于模型推理后的后处理,可以直接使用cuda核函数进行解码,效率比较高 nms也可以在核函数里面实现 这里演示了一个yolov5的实际案例,后续其他的操作都是类似的 gpu_decoder难度较大,一般先写一个cpu的decoder, 再写个gpu_decode

    2023年04月11日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包