performance - Matlab 中 parfor 循环优于 for 循环的具体例子

我对 Matlab 中的并行计算还是有些陌生。我在 C 中成功使用了 OpenMP,但在 Matlab 中无法获得更好的性能。

首先,由于我是一所大学的新机器,我通过在命令提示符中键入 ver 验证了我所在的机器是否具有 Parallel Computing Toolbox,它显示: 并行计算工具箱版本 5.2 (R2011b)。注意机器有4核

我尝试了使用 parforfor 的简单示例,但 for 总是赢,尽管这可能是因为开销成本。我正在做一些简单的事情,比如这里的例子:MATLAB parfor is slower than for -- what is wrong?

在尝试将 parfor 应用于我更大更复杂的程序之前(我需要计算一个函数的 500 次评估,每次评估大约需要一分钟,因此并行化在这里会有所帮助),我非常希望看到一个具体的例子parfor 胜过 for。 . OpenMP 的例子很多,但没有找到一个简单的例子,我可以复制和粘贴显示 parforfor

最佳答案

我使用以下代码(每个 Matlab session 一次)来使用 parfor:

pools = matlabpool('size');
cpus = feature('numCores');
if pools ~= (cpus - 1)
    if pools > 0
        matlabpool('close');
    end
    matlabpool('open', cpus - 1);
end

这为其他进程留下了 1 个核心。 请注意,feature() 命令未记录。

https://stackoverflow.com/questions/11934910/

相关文章:

r - 根据焦点画一个椭圆

sql - UNION ALL 之后的 CTE

php - 将 PDF 存储在 MySQL 数据库中

ruby-on-rails - 在 Rails 3 的邮件拦截器中设置 header

php - 使用 maxlength 标签通过 PHP 检查表单输入长度

ruby-on-rails - RAILS3 : to_JSON with multiple obj

php - 如何在php中显示有限的单词

css - 带 float 的无序列表项 :left do not float properly

bash - 获取 n 个最后记录并更改它们的特定列

php - 如何使用 SimpleXML 解析忽略错误的 XML