【发布时间】:2014-02-04 03:18:57
【问题描述】:
我有一个调用内置遗传算法函数的非常简单的脚本:
function test1(gen)
options = gaoptimset('UseParallel', 'always', 'Vectorized', 'off');
tic;
x = ga(@dejong5fcn, 2, [], [], [], [], [], [], [], options);
toc
end
首先,我在没有启动 matlabpool 的情况下运行了 test1。正如预期的那样,它运行良好,但仅使用一个 CPU 内核,正如 Windows 资源监视器所观察到的那样。运行 20020 健身评估需要 4.2 秒。然后,我使用以下命令启动并行引擎:“start matlabpool local 4”,然后执行其他相同的 test1 运行。它运行并使用所有四个 CPU 内核,但执行 20020 健身评估大约需要 90.7 秒。
我对 Matlab R2012a(在 Windows 7 64 位上)中的并行性有什么不了解的地方?感谢您的帮助。
【问题讨论】:
-
你试过不同的平台吗?我发现 Parallel Computing Toolbox 的性能可能对平台非常敏感。另外,您是否启用了超线程?
-
如果您执行一些长时间的操作,并行处理通常会很好,如果您执行 20000 次操作需要不到一秒钟的时间,那么开销可能会杀死您。
-
这个问题是在 MATLAB 中引入基于线程的并行之前提出的(我认为)。请参阅this page 以了解默认的基于进程的并行性和可选的基于线程的并行性之间的区别。
标签: matlab parallel-processing