2

我想知道在执行 parfor 时是否可以在节点之间交易(发送和接收)数据。我想要完成的是这样的:

parfor i = 1:4

    %Perform a computation on each column of a 4x4 matrix on 4 different workers (each worker takes one column).

    %Make Worker #1 send its data to Worker #3, Worker #3 to Worker #1, Worker #2 ro Worker #4 and Worker #4 to Worker #2.

    %Make other computations on the data received from the other workers

end

我想在不离开 parfor 的情况下执行所有这些计算。我可以使用任何 MPI 命令吗?这是可以实现的吗?如果是这样,我怎么能做到这一点?谢谢!

4

2 回答 2

5

你不能在parfor其中迭代必须是独立的。相反,请查看spmd块、命令labSend和。labReceivelabBroadcast

于 2012-12-11T07:03:49.883 回答
2

无法在parfor实例之间交换数据。这是使用的一部分,parfor拥有真正独立的个人任务。例如,无法保证其中有多少将同时运行。在某些计算机上,parfor只允许 1 个实例,在其他计算机上可能允许 4 个同时运行,还有一些计算机一次只允许 2 个。

Matlab 作为一个整体并没有真正做线程,但它确实有一些结构允许类似线程的应用程序。然而,一般来说,它们非常复杂,而且没有真正的用处。

于 2012-12-11T01:56:15.140 回答