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

充分利用双核电脑进行多线程计算

[复制链接]
发表于 2008-1-1 13:56:30 | 显示全部楼层 |阅读模式 来自 湖北武汉
在mathworks网站上看到了Loren写的如何充分利用双核笔记本多线程计算的介绍,感觉非常有用,以前的matlab版本一直不能利用多核电脑的功能使得电脑的一个核完全浪费,2007b加入的新功能现在看来完全支持多线程计算了,这对于一些常常进行大规模计算的用户是一个很好的消息。这里把Loren的方法关键地方摘要出来,供大家参考,原帖可以登录:http://blogs.mathworks.com/loren/2007/10/03/parfor-the-course/#comment-23981

直接给出例子,计算随机生成方阵的秩,方阵大小从1变到400,单核计算方法:

n = 400;
ranksSingle = zeros(1,n);
maxNumCompThreads(1);
tic
for ind = 1:n
    ranksSingle(ind) = rank(magic(ind));
end
toc
plot(1:n,ranksSingle, 'b-o', 1:n, 1:n, 'm--')
Elapsed time is 22.641646 seconds.
多核计算方法
先写一个函数
function ranks = parMagic(n)
   
    ranks = zeros(1,n);
    parfor (ind = 1:n)
        ranks(ind) = rank(magic(ind));  % last index could be ind,not n-ind+1
    end
这里的parfor是2007b的新函数,用于并行计算
执行如下语句
matlabpool local 2
tic
   ranksPar = parMagic(n);
toc
Elapsed time is 13.836088 seconds.
可以看见时间减少了差不多二分之一
还有很多值得探讨的地方,大家都来发表发表看法吧。

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-4-26 18:20 , Processed in 0.035613 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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