对基于Matlab和cupy的GPU计算速度的比较

对基于Matlab和cupy的GPU计算速度的比较

介绍

今天做了一个在Matlab环境下和python环境下的GPU运行速度比较,其中Matlab使用了gpuArray(),而Python使用的是cupy库,运算任务是对一组size=(10000,1024,4,4)和一组size=(10000,1024,4,1)的double数组进行若干次点乘运算,话不多说我们直接看结果吧!

Matlab的gpuArray()部分:

首先我们先循环20次。
Matlab代码:

clc;clear;
x=rand(10000,1024,4,4)*1024.;
y=rand(10000,1024,4,1)*512.3254;

x=gpuArray(x);
y=gpuArray(y);
tic
for i=1:20
    z=x.*y;
end
toc

x=rand(10000,1024,4,4)*1024.;
y=rand(10000,1024,4,1)*512.3254;

tic
for i=1:20
    z=x.*y;
end
toc

clear

结果分别为GPU和CPU下的计算时间:
结果分别为GPU和CPU下的计算时间

Python的cupy部分:

同样循环运行20次。
python代码:

import numpy as np
import cupy as cp
import time

x=cp.random.random(size=(10000,1024,4,4))*1024.
y=cp.random.random(size=(10000,1024,4,1))*512.3254
time1=time.time()
for i in range(20):
    z=x*y
print('average time for 20 times gpu:',time.time()-time1)

x=np.random.random(size=(10000,1024,4,4))*1024.
y=np.random.random(size=(10000,1024,4,1))*512.3254
time1=time.time()
for i in range(20):
    z=x*y
print('average time for 20 times cpu:',time.time()-time1)

结果分别为cupy下GPU和CPU下的计算时间:

runfile('C:/Users/Liushl/.spyder-py3/temp.py', wdir='C:/Users/Liushl/.spyder-py3')
average time for 20 times gpu: 0.11713743209838867
average time for 20 times cpu: 18.07845187187195

结论分析

所以到这看起来好像Matlab在用cpu计算上比python快,而用gpu的话,两者相差无几。

附加

你以为到这里就结束了?Too naive young man!无聊的博主把循环次数提升了一下,竟然有惊人的发现!
首先我们把Matlab的循环次数提升一下试试(后面只展示GPU计算速度):
Matlab:

首先Cycle 100次:
历时 0.083524 秒。
Cycle 500次:
历时 0.085372 秒。
Cycle 1000次:
历时 0.089123 秒。

大家是不是:???

经过博主多次测试,

Cycle 1e4次:
历时 0.202748 秒。
Cycle 1e5次:
历时 1.250245 秒。
Cycle 1e6次:
历时 11.663975 秒。

Python:

Cycle 100次:
time for 100 times gpu: 0.11510443687438965
Cycle 500次:
time for 500 times gpu: 0.11411237716674805
Cycle 1000次:
time for 1000 times gpu: 0.12411379814147949
Cycle 1e4次:
time for 10000 times gpu: 118.04505109786987

后面耗时太长了就不测了。。
发现python用cupy随循环次数计算耗时有一个陡增,而matlab没有,应该是matlab可以调用共享gpu内存,以及一些不可告人的优化 \滑稽

今天的分享就这些,祝大家天天增长奇怪的知识!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WHU李相赫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值