MATLAB 并行计算术语之间的差异

Difference between MATLAB parallel computing terminologies

我想知道两者的区别

1. labs
2. workers
3. cores
4. processes

仅仅是语义上的差异还是完全不同?

我认为工人是流程的同义词。术语 "cores" 与硬件有关。实验室是一种允许工作人员相互交流的机制。每个工人至少有一个实验室,但可以拥有更多。

这篇讨论可能会有用

http://www.mathworks.com/matlabcentral/answers/5529-mysterious-behavior-in-parfor-i-know-sounds-basic-but

希望这里的人能够更严谨的传递更多信息

labsworkers 是 MathWorks 术语,它们的意思大致相同。

A labworker 本质上是 MATLAB 的一个实例(没有前端)。您 运行 几个,您可以 运行 在您自己的机器上(只需要 Parallel Computing Toolbox)或远程在集群上(需要分布式计算服务器)。当您执行并行代码(例如 parfor 循环、spmd 块或 parfeval 命令)时,代码由工作人员并行执行,而不是由您的主 MATLAB .

Parallel Computing Toolbox 在最近的版本中对其功能进行了大量更改和开发,并且还更改和开发了用于描述其工作方式的术语。在某些时候,当 运行ning 一个 spmd 块时,将它们称为实验室很方便,但当 运行ning 一个 parfor 循环或处理工作和任务时,将它们称为工作人员.我相信他们现在正朝着总是称他们为 workers 的方向发展(尽管命令 labSendlabReceivelabBroadcastlabindexnumlabs).

coresprocesses 不同,它们本身与 MATLAB 没有任何关系。

A 核心 是处理器的物理部分 - 您的台式计算机中可能有双核或四核处理器,或者您可以访问真正的比那更多的大电脑。通过拥有多个内核,您的处理器可以同时执行多项操作。

A process 是(大致)您的操作系统 运行ning 的一个程序。虽然 OS 运行 有多个程序同时运行,但它通常是通过每个进程的交错操作来实现的。但是如果你可以访问多核机器,这些操作可以并行完成。

因此,您通常希望告诉 MATLAB 为您机器上的每个内核启动一个 worker。这些工作人员中的每一个都将 运行 作为 OS 的一个进程,最终将成为 运行 每个核心并行工作人员。

以上内容比较简单,但希望能给出大致准确的描述。


编辑:将话题描述从评论移至答案。

线程 又有所不同。线程本身也与 MATLAB 无关。

让我们暂时回到流程。我在上面没有提到的一件事是 OS 为每个进程分配一个特定的内存块,其他进程不应该接触这些内存块,因此它们很难相互交互并把事情搞砸.

A thread 就像进程中的进程 - 它是进程 运行s 的操作流。通常,来自每个线程的操作会交错,但如果您有多个内核,它们也可以跨内核并行化。

但是,与进程不同的是,它们都共享一个内存块,这没关系,因为它们都由同一个程序管理,所以如果允许它们进行交互,应该就不那么重要了。

常规 MATLAB 自动使用多线程并行化许多内置操作(例如矩阵乘法、svdeig、线性代数等)——无需您做任何事情,无论是不是你有并行计算工具箱。

但是,每个 MATLAB worker 运行 都是具有单个线程的单个进程,因此您可以完全控制如何并行化。