liuyalong008 发表于 2011-8-6 10:55:16

matalb GPU 运算

如果硬件(显卡,一定是NVIDIA显卡)较新的话就可以在matlab2011中实现GPU数值计算了,据说(NVIDIA说的)浮点数计算速度是CPU数十上百倍。很遗憾本人显卡所限(GF9300 GE),不能直接使用matlab GPU 计算功能。
于是下载安装jacket 虚拟机GPU计算平台来小试牛刀,效果还行
以下是几个案例:
案例1 圆周率计算:
tic
NSET = 10000000;
X = grand( 1, NSET );
Y = grand( 1, NSET );
distance_from_zero = sqrt( X.*X + Y.*Y );
inside_circle = (distance_from_zero <= 1);
pi = 4 * sum(inside_circle) / NSET
tocGPU计算时间:Elapsed time is 0.316980 seconds.tic
NSET = 10000000;
X = rand( 1, NSET );
Y = rand( 1, NSET );
distance_from_zero = sqrt( X.*X + Y.*Y );
inside_circle = (distance_from_zero <= 1);
pi = 4 * sum(inside_circle) / NSET
tocCPU计算时间:Elapsed time is 0.685731 seconds.看看第二个案例:什么叫茶具%GPU calculate
tic
gfor i=1:10000
   A=grand(400);
gend
tocGPU计算结果:Elapsed time is 0.008953 seconds.%CPU calculate
tic
for i=1:10000
   A=rand(400);
end
tocCPU计算计算结果:Elapsed time is 36.617145 seconds.

liuyalong008 发表于 2011-8-6 11:13:05

再补一帖:这个帖子叫 杯具%GPU calculate
tic
gfor i=1:10000
   A=grand(400)*grand(400);
gend
toc计算时间:Elapsed time is 0.028614 seconds.%CPU calculate
tic
for i=1:10000
   A=rand(400)*rand(400);
end
toc计算时间:Elapsed time is 504.799773 seconds.504.799773/0.028614
ans =

17641.705913189347484149038791656悲剧的是我们都在用CPU进行计算,如果能在流体模拟、图像处理,以及其他科学计算领域使用GPU的话,生活可能更美好
intelAMD 表示压力很大!!!

liuyalong008 发表于 2011-8-6 11:14:40

不小心重复发帖了
请斑竹删一个

pasuka 发表于 2011-8-6 11:31:25

再补一帖:这个帖子叫 杯具计算时间:计算时间:悲剧的是我们都在用CPU进行计算,如果能在流体模拟、图像处 ...
liuyalong008 发表于 2011-8-6 11:13 http://forum.simwe.com/images/common/back.gif
现在GPU计算的优势好像只是在单精度浮点数,如果换成双精度浮点数计算的话,优势就不那么明显了,对于不少算法而言,单精度可能无法保证收敛性和稳定性

liuyalong008 发表于 2011-8-6 11:35:27

回复 5# pasuka
斯言甚是

liuyalong008 发表于 2011-8-6 11:45:20

回复 5#
默认的是single类型数据计算
刚才试了一下double精度的GPU计算,效果依然tic
gfor i=1:10000
A=gdouble(grand(400))*gdouble(grand(400));
gend
toc
结果:Elapsed time is 0.012289 seconds.至于为何比刚才还小,大概是因为我刚开关了matlab又重启的结果吧
anyway,我觉得效果还可以,希望大家尝试,并讨论
页: [1]
查看完整版本: matalb GPU 运算