MATLAB 并行计算术语之间的差异
Difference between MATLAB parallel computing terminologies
我想知道两者的区别
1. labs
2. workers
3. cores
4. processes
仅仅是语义上的差异还是完全不同?
我认为工人是流程的同义词。术语 "cores" 与硬件有关。实验室是一种允许工作人员相互交流的机制。每个工人至少有一个实验室,但可以拥有更多。
这篇讨论可能会有用
希望这里的人能够更严谨的传递更多信息
labs 和 workers 是 MathWorks 术语,它们的意思大致相同。
A lab 或 worker 本质上是 MATLAB 的一个实例(没有前端)。您 运行 几个,您可以 运行 在您自己的机器上(只需要 Parallel Computing Toolbox)或远程在集群上(需要分布式计算服务器)。当您执行并行代码(例如 parfor
循环、spmd
块或 parfeval
命令)时,代码由工作人员并行执行,而不是由您的主 MATLAB .
Parallel Computing Toolbox 在最近的版本中对其功能进行了大量更改和开发,并且还更改和开发了用于描述其工作方式的术语。在某些时候,当 运行ning 一个 spmd
块时,将它们称为实验室很方便,但当 运行ning 一个 parfor
循环或处理工作和任务时,将它们称为工作人员.我相信他们现在正朝着总是称他们为 workers
的方向发展(尽管命令 labSend
、labReceive
、labBroadcast
、labindex
和 numlabs
).
cores 和 processes 不同,它们本身与 MATLAB 没有任何关系。
A 核心 是处理器的物理部分 - 您的台式计算机中可能有双核或四核处理器,或者您可以访问真正的比那更多的大电脑。通过拥有多个内核,您的处理器可以同时执行多项操作。
A process 是(大致)您的操作系统 运行ning 的一个程序。虽然 OS 运行 有多个程序同时运行,但它通常是通过每个进程的交错操作来实现的。但是如果你可以访问多核机器,这些操作可以并行完成。
因此,您通常希望告诉 MATLAB 为您机器上的每个内核启动一个 worker。这些工作人员中的每一个都将 运行 作为 OS 的一个进程,最终将成为 运行 每个核心并行工作人员。
以上内容比较简单,但希望能给出大致准确的描述。
编辑:将话题描述从评论移至答案。
线程 又有所不同。线程本身也与 MATLAB 无关。
让我们暂时回到流程。我在上面没有提到的一件事是 OS 为每个进程分配一个特定的内存块,其他进程不应该接触这些内存块,因此它们很难相互交互并把事情搞砸.
A thread 就像进程中的进程 - 它是进程 运行s 的操作流。通常,来自每个线程的操作会交错,但如果您有多个内核,它们也可以跨内核并行化。
但是,与进程不同的是,它们都共享一个内存块,这没关系,因为它们都由同一个程序管理,所以如果允许它们进行交互,应该就不那么重要了。
常规 MATLAB 自动使用多线程并行化许多内置操作(例如矩阵乘法、svd
、eig
、线性代数等)——无需您做任何事情,无论是不是你有并行计算工具箱。
但是,每个 MATLAB worker 运行 都是具有单个线程的单个进程,因此您可以完全控制如何并行化。
我想知道两者的区别
1. labs
2. workers
3. cores
4. processes
仅仅是语义上的差异还是完全不同?
我认为工人是流程的同义词。术语 "cores" 与硬件有关。实验室是一种允许工作人员相互交流的机制。每个工人至少有一个实验室,但可以拥有更多。
这篇讨论可能会有用
希望这里的人能够更严谨的传递更多信息
labs 和 workers 是 MathWorks 术语,它们的意思大致相同。
A lab 或 worker 本质上是 MATLAB 的一个实例(没有前端)。您 运行 几个,您可以 运行 在您自己的机器上(只需要 Parallel Computing Toolbox)或远程在集群上(需要分布式计算服务器)。当您执行并行代码(例如 parfor
循环、spmd
块或 parfeval
命令)时,代码由工作人员并行执行,而不是由您的主 MATLAB .
Parallel Computing Toolbox 在最近的版本中对其功能进行了大量更改和开发,并且还更改和开发了用于描述其工作方式的术语。在某些时候,当 运行ning 一个 spmd
块时,将它们称为实验室很方便,但当 运行ning 一个 parfor
循环或处理工作和任务时,将它们称为工作人员.我相信他们现在正朝着总是称他们为 workers
的方向发展(尽管命令 labSend
、labReceive
、labBroadcast
、labindex
和 numlabs
).
cores 和 processes 不同,它们本身与 MATLAB 没有任何关系。
A 核心 是处理器的物理部分 - 您的台式计算机中可能有双核或四核处理器,或者您可以访问真正的比那更多的大电脑。通过拥有多个内核,您的处理器可以同时执行多项操作。
A process 是(大致)您的操作系统 运行ning 的一个程序。虽然 OS 运行 有多个程序同时运行,但它通常是通过每个进程的交错操作来实现的。但是如果你可以访问多核机器,这些操作可以并行完成。
因此,您通常希望告诉 MATLAB 为您机器上的每个内核启动一个 worker。这些工作人员中的每一个都将 运行 作为 OS 的一个进程,最终将成为 运行 每个核心并行工作人员。
以上内容比较简单,但希望能给出大致准确的描述。
编辑:将话题描述从评论移至答案。
线程 又有所不同。线程本身也与 MATLAB 无关。
让我们暂时回到流程。我在上面没有提到的一件事是 OS 为每个进程分配一个特定的内存块,其他进程不应该接触这些内存块,因此它们很难相互交互并把事情搞砸.
A thread 就像进程中的进程 - 它是进程 运行s 的操作流。通常,来自每个线程的操作会交错,但如果您有多个内核,它们也可以跨内核并行化。
但是,与进程不同的是,它们都共享一个内存块,这没关系,因为它们都由同一个程序管理,所以如果允许它们进行交互,应该就不那么重要了。
常规 MATLAB 自动使用多线程并行化许多内置操作(例如矩阵乘法、svd
、eig
、线性代数等)——无需您做任何事情,无论是不是你有并行计算工具箱。
但是,每个 MATLAB worker 运行 都是具有单个线程的单个进程,因此您可以完全控制如何并行化。