对基于Matlab和cupy的GPU计算速度的比较
程序员文章站
2022-04-02 11:05:52
对基于Matlab和cupy的GPU计算速度的比较介绍Matlab的gpuArray()部分:Python的cupy部分:结论分析附加介绍今天做了一个在Matlab环境下和python环境下的GPU运行速度比较,其中Matlab使用了gpuArray(),而Python使用的是cupy库,运算任务是对一组size=(10000,1024,4,4)和一组size=(10000,1024,4,1)的double数组进行若干次点乘运算,话不多说我们直接看结果吧!Matlab的gpuArray()部分:首先...
对基于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下的计算时间:
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内存,以及一些不可告人的优化 \滑稽
今天的分享就这些,祝大家天天增长奇怪的知识!
本文地址:https://blog.csdn.net/weixin_45864655/article/details/110427277