MATLAB 如何在 parfor 循环中为变量赋值并打印到文件
How does MATLAB assign values to a variable and print to file in a parfor loop
我有一个 parfor
循环遍历 i = 1:250
,根据索引从数组中获取三个值。然后使用这 3 个值在 parfor
循环中进行计算。然后,我将结果存储在变量 theta1
、theta2
和 theta3
中,并立即将它们打印到文件中。我并行化是因为计算需要太多时间,并且对于每个索引,它们可以独立完成。我想 MATLAB
不一定会通过让工作人员计算独立的迭代来划分工作,但它可以在工作人员之间划分给定的迭代。在任何一种情况下,对变量的赋值或对文件的打印是否会受到操作完成顺序的影响?是否有可能以不同的顺序打印结果,如:
theta1 from i = 1
theta1 from i = 2
theta2 from i = 2
theta3 from i = 2
theta2 from i = 1
...
而不是所需的顺序,即:
theta1 from i = 1
theta2 from i = 1
theta3 from i = 1
theta1 from i = 2
theta2 from i = 2
...
将所有结果收集到一个元胞数组中,然后在最后打印它们是否更健康?
具有外部 parfor 循环意味着 i
函数查看的值不能保证为 1、2、3 等。但是,theta1
、theta2
, theta3
parfor 循环内的变量将按照它们在内部 parfor 循环内的顺序进行计算。所以你唯一可以保证的是,对于给定的值 i
,theta1
将首先完成,然后是 theta2
,然后是 theta3
。工人本身(i
循环)是交错的,所以你完全有可能得到结果
theta1 from i = 1
theta1 from i = 2
theta2 from i = 2
theta3 from i = 2
theta2 from i = 1
...
在任何情况下,在 parfor 循环中打印到一个文件都会导致问题,因为可能是两个工作人员试图同时写入该文件。这意味着您将从某些计算中得到 "lose" 结果。 MATLAB 方法(如果有这样的事情......)可以更好地将 parfor 循环的所有结果保存在数组或元胞数组中(出于内存原因,常规数组更好,因为不需要整个元胞数组在所有 parfor 循环中共享;但元胞数组更容易让您全神贯注进行原型设计)并在最后将其打印到文件中。
我有一个 parfor
循环遍历 i = 1:250
,根据索引从数组中获取三个值。然后使用这 3 个值在 parfor
循环中进行计算。然后,我将结果存储在变量 theta1
、theta2
和 theta3
中,并立即将它们打印到文件中。我并行化是因为计算需要太多时间,并且对于每个索引,它们可以独立完成。我想 MATLAB
不一定会通过让工作人员计算独立的迭代来划分工作,但它可以在工作人员之间划分给定的迭代。在任何一种情况下,对变量的赋值或对文件的打印是否会受到操作完成顺序的影响?是否有可能以不同的顺序打印结果,如:
theta1 from i = 1
theta1 from i = 2
theta2 from i = 2
theta3 from i = 2
theta2 from i = 1
...
而不是所需的顺序,即:
theta1 from i = 1
theta2 from i = 1
theta3 from i = 1
theta1 from i = 2
theta2 from i = 2
...
将所有结果收集到一个元胞数组中,然后在最后打印它们是否更健康?
具有外部 parfor 循环意味着 i
函数查看的值不能保证为 1、2、3 等。但是,theta1
、theta2
, theta3
parfor 循环内的变量将按照它们在内部 parfor 循环内的顺序进行计算。所以你唯一可以保证的是,对于给定的值 i
,theta1
将首先完成,然后是 theta2
,然后是 theta3
。工人本身(i
循环)是交错的,所以你完全有可能得到结果
theta1 from i = 1
theta1 from i = 2
theta2 from i = 2
theta3 from i = 2
theta2 from i = 1
...
在任何情况下,在 parfor 循环中打印到一个文件都会导致问题,因为可能是两个工作人员试图同时写入该文件。这意味着您将从某些计算中得到 "lose" 结果。 MATLAB 方法(如果有这样的事情......)可以更好地将 parfor 循环的所有结果保存在数组或元胞数组中(出于内存原因,常规数组更好,因为不需要整个元胞数组在所有 parfor 循环中共享;但元胞数组更容易让您全神贯注进行原型设计)并在最后将其打印到文件中。