找回密码
 注册
Simdroid-非首页
查看: 214|回复: 5

matalb GPU 运算

[复制链接]
发表于 2011-8-6 10:55:16 | 显示全部楼层 |阅读模式 来自 山东烟台
如果硬件(显卡,一定是NVIDIA显卡)较新的话  就可以在matlab2011中实现GPU数值计算了,据说(NVIDIA说的)浮点数计算速度是CPU数十上百倍。很遗憾本人显卡所限(GF9300 GE),不能直接使用matlab GPU 计算功能。
于是下载安装jacket 虚拟机GPU计算平台来小试牛刀,效果还行
以下是几个案例:
案例1 圆周率计算:

  1. tic
  2. NSET = 10000000;
  3. X = grand( 1, NSET );
  4. Y = grand( 1, NSET );
  5. distance_from_zero = sqrt( X.*X + Y.*Y );
  6. inside_circle = (distance_from_zero <= 1);
  7. pi = 4 * sum(inside_circle) / NSET
  8. toc
复制代码
GPU计算时间:
  1. Elapsed time is 0.316980 seconds.
复制代码
  1. tic
  2. NSET = 10000000;
  3. X = rand( 1, NSET );
  4. Y = rand( 1, NSET );
  5. distance_from_zero = sqrt( X.*X + Y.*Y );
  6. inside_circle = (distance_from_zero <= 1);
  7. pi = 4 * sum(inside_circle) / NSET
  8. toc
复制代码
CPU计算时间:
  1. Elapsed time is 0.685731 seconds.
复制代码
看看第二个案例:什么叫茶具
  1. %GPU calculate
  2. tic
  3. gfor i=1:10000
  4.      A=grand(400);
  5. gend
  6. toc
复制代码
GPU计算结果:
  1. Elapsed time is 0.008953 seconds.
复制代码
  1. %CPU calculate
  2. tic
  3. for i=1:10000
  4.      A=rand(400);
  5. end
  6. toc
复制代码
CPU计算计算结果:
  1. Elapsed time is 36.617145 seconds.
复制代码

评分

2

查看全部评分

 楼主| 发表于 2011-8-6 11:13:05 | 显示全部楼层 来自 山东烟台
Simdroid开发平台
再补一帖:这个帖子叫 杯具
  1. %GPU calculate
  2. tic
  3. gfor i=1:10000
  4.      A=grand(400)*grand(400);
  5. gend
  6. toc
复制代码
计算时间:
  1. Elapsed time is 0.028614 seconds.
复制代码
  1. %CPU calculate
  2. tic
  3. for i=1:10000
  4.      A=rand(400)*rand(400);
  5. end
  6. toc
复制代码
计算时间:
  1. Elapsed time is 504.799773 seconds.
复制代码
  1. 504.799773/0.028614
  2. ans =

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

使用道具 举报

 楼主| 发表于 2011-8-6 11:14:40 | 显示全部楼层 来自 山东烟台
不小心重复发帖了
请斑竹删一个
回复 不支持

使用道具 举报

发表于 2011-8-6 11:31:25 | 显示全部楼层 来自 上海闸北区
再补一帖:这个帖子叫 杯具计算时间:计算时间:悲剧的是我们都在用CPU进行计算,如果能在流体模拟、图像处 ...
liuyalong008 发表于 2011-8-6 11:13

现在GPU计算的优势好像只是在单精度浮点数,如果换成双精度浮点数计算的话,优势就不那么明显了,对于不少算法而言,单精度可能无法保证收敛性和稳定性
回复 不支持

使用道具 举报

 楼主| 发表于 2011-8-6 11:35:27 | 显示全部楼层 来自 山东烟台
回复 5# pasuka
斯言甚是
回复 不支持

使用道具 举报

 楼主| 发表于 2011-8-6 11:45:20 | 显示全部楼层 来自 山东烟台
回复 5#
默认的是single类型数据计算
刚才试了一下double精度的GPU计算,效果依然
  1. tic
  2. gfor i=1:10000
  3. A=gdouble(grand(400))*gdouble(grand(400));
  4. gend
  5. toc
复制代码
结果:
  1. Elapsed time is 0.012289 seconds.
复制代码
至于为何比刚才还小,大概是因为我刚开关了matlab  又重启的结果吧
anyway,我觉得效果还可以,希望大家尝试,并讨论
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-23 19:36 , Processed in 0.042954 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表