实验室和工作人员是MathWorks术语,他们的意思大致相同.
实验室或工人本质上是MATLAB的一个实例(没有前端).您可以运行其中的几个,并且可以在您自己的计算机上运行它们(仅需要Parallel Computing Toolbox)或远程运行它们(需要Distributed Computing Server).执行并行代码(例如parfor循环,spmd块或parfeval命令)时,代码由工作程序并行执行,而不是由主MATLAB执行.
并行计算工具箱在最近的版本中已经改变并开发了很多功能,并且还改变和开发了用于描述其工作方式的术语.在某些时候,在运行spmd块时将它们称为实验室是方便的,但是在运行parfor循环或者处理作业和任务时工作者.我相信他们现在正朝着总是称他们为工人的方向前进(尽管在命令labSend,labReceive,labBroadcast,labindex和numlabs中有遗留问题).
核心和流程是不同的,它们本身与MATLAB无关.
核心是处理器的物理部分 – 您可能在台式计算机中使用双核或四核处理器,或者您可能可以访问具有更多功能的超大型计算机.通过拥有多个内核,您的处理器可以同时执行多项操作.
进程(大致)是您的操作系统正在运行的程序.尽管OS同时运行多个程序,但它通常通过交叉来自每个进程的操作来实现.但是,如果您可以访问多核计算机,那么这些操作可以并行完成.
因此,您通常希望告诉MATLAB为您计算机上的每个核心启动一个工作程序.这些工作程序中的每一个都将由操作系统作为一个进程运行,并且最终将并行地为每个核心运行一个工作程序.
以上是相当简化的,但我希望给出一个大致准确的图片.
编辑:将评论中的线程描述移至答案.
线程又是不同的东西.线程本身也与MATLAB无关.
我们暂时回到流程.我上面没有提到的一件事是操作系统为每个进程分配一个特定的内存块,其他进程不应该触及,这样他们就很难相互交互并搞砸了.
线程就像进程中的进程 – 它是进程运行的操作流.通常,每个线程的操作都是交错的,但如果您有多个内核,它们也可以跨内核进行并行化.
但是,与进程不同,它们共享一个内存块,这是可以的,因为它们都由同一个程序管理,所以如果它们被允许进行交互则应该更少.
常规MATLAB自动使用多个线程来并行化许多内置操作(例如矩阵乘法,svd,eig,线性代数等) – 没有你做任何事情,以及你是否有并行计算工具箱.
但是,MATLAB工作程序每个都作为单个进程运行,因此您可以完全控制如何并行化.