【发布时间】:2016-02-12 01:30:48
【问题描述】:
是否可以在 MATLAB 中强制 parfor 迭代次数?例如,如果循环是 i=1:1000,那么是否可以按如下方式赋值:
i=1:250 ---> 核心 1
i=251:500 ---> 核心 2
i=501:750 ---> 核心 3
i=751:1000 ---> 核心 4
【问题讨论】:
-
我不这么认为,但更重要的是:你为什么要这样做? MATLAB 非常擅长分配计算工作量。如果它在迭代随计算量变化的情况下使用非对称分布,我不会感到惊讶(尽管我从未检查过文档以确定是否确实如此)
-
你不能分配给特定的核心,但如果你想让核心处理你的问题的 4 块,你可以做
parfor j=1:4;for i=(1+250*(j-1)):(250*j);...这应该可以工作,但正如安德拉斯所说,我可以'不要想为什么这是个好主意。 -
这可能看起来很幼稚,但很重要:是否可以保证在 j=1:4 的情况下,所有四种不同的 j 计算都将进入 4 个不同的核心?
-
抱歉,换个说法:如何确保所有四个 j 迭代都转到 4 个不同的核心 - 更好的是,要知道哪个核心得到了哪个 j 值计算(例如核心 3 j=1;核心 1 有 j=2 等)。这是假设此时 parfor 不能强制进入 j=1-->core1、j==2-->core2 等。
标签: matlab parallel-processing