gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:32:19 24 4
gpt4 key购买 nike

我想知道两者的区别

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

只是语义不同还是它们都不同?

最佳答案

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

labworker 本质上是 MATLAB 的一个实例(没有前端)。您可以运行其中的几个,并且可以在自己的机器上(仅需要 Parallel Computing Toolbox)或在集群上远程运行(需要 Distributed Computing Server)。当您执行并行代码(例如 parfor 循环、spmd block 或 parfeval 命令)时,代码并行执行 worker ,而不是您的主要 MATLAB。

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

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

核心 是处理器的物理部分 - 您的台式计算机中可能有双核或四核处理器,或者您可能有一台拥有更多处理器的大型计算机比起那个来说。通过拥有多个内核,您的处理器可以同时执行多项操作。

进程(大致)是您的操作系统正在运行的程序。虽然操作系统同时运行多个程序,但它通常是通过交错处理每个进程的操作来实现的。但是,如果您可以访问多核计算机,则这些操作可以并行完成。

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

以上是相当简化的,但我希望能给出大致准确的描述。


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

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

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

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

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

常规 MATLAB 自动使用多线程并行化许多内置操作(例如矩阵乘法、svdeig、线性代数等)——您无需执行任何操作,以及您是否拥有 Parallel Computing Toolbox。

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

关于matlab - MATLAB 并行计算术语之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29033919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com