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