matlab - 我们可以拥有比 MATLAB 内核数量更多的 worker 吗?

标签 matlab parallel-processing worker

我有一个 Core i7 CPU 和 4 个真正的内核。我的计算是否可以有超过 4 个 worker,或者 worker 的数量总是等于核心数?

谢谢。

最佳答案

您将能够拥有 8 个 worker,因为 4 个核心具有超线程,为您提供 8 个逻辑核心。但是,因为只有 4 个物理核心,理论上 8 个 worker 应该不会比 4 个 worker 快很多。 但是,我确实发现在我的 i7 上 6 和 8 个 worker 比 4 个更快。

为此尝试

matlabpool open 8;
parfor I = 1:N
    #your code
end

编辑:在 R2014a 中 matlabpool 被替换为 parpool,因此请改用它:

parpool('local', 8);
parfor I = 1:N
    #your code
end

在本地机器上打开 8 个内核。

注意:您只需要在 Matlab 启动时运行一次 matlabpool 命令。然后,您可以运行许多带有 parfor 循环的脚本,而无需再次打开 worker,它们将保持打开状态,直到您关闭它们或关闭 Matlab。

这应该会在您的本地系统上打开 8 个 worker。

如果您收到关于可用工作人员数量的错误,那么您需要更改设置: 并行菜单 -> 管理配置。右键单击“本地”行。在调度程序选项卡中,将“可供调度程序使用的工作线程数”设置为 8。

最后,你一次只能打开一个工作池,使用这个:

poolobj = gcp('nocreate');
delete(poolobj);

关闭一个打开的池。然后你可以尝试打开另一个有更多 worker 的矿池。

关于matlab - 我们可以拥有比 MATLAB 内核数量更多的 worker 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25562668/

相关文章:

ruby-on-rails-3 - QUEUE=* 未找到工头错误

algorithm - Matlab 中多重投影的快速算法

matlab - 根据函数值差异进行采样

matlab - 获取上下文菜单调用者的句柄

parallel-processing - 何时不使用 MPI

java - 并行计算集合的所有排列

c++ - 如何处理 OpenMP 并行代码中的返回?

javascript - 向 Javascript 网络 worker 发送多个数组缓冲区?

Laravel 多个 worker 运行两次工作

python - Matlab 向量化 printf 类似 python 中的函数