Parallel Computing Toolbox 使您能够使用几种不同的范例(例如作业和任务、parfor、spmd、parfeval、批处理)并行运行 MATLAB 代码,也可以在本地运行(跨内核并行运行)在您的本地机器中)或远程(在集群中的机器之间并行 - 您拥有的一台或云中的一台)。
在任何这些情况下,代码都在 MATLABworkers 上运行,它们基本上是没有交互式桌面的 MATLAB 副本。
如果您打算在远程集群上运行,这些工作器很可能已经启动并准备好运行代码。如果您打算在本地运行,您可能已经启动了 worker,但可能还没有。
上面的一些结构(例如作业和任务、批处理)只是运行您要求的事情,然后工作人员返回可用于其他事情(可能来自不同的用户)。
但某些构造(例如parfor、spmd)要求您打算运行的工作人员为您保留一段时间 - 部分原因是它们可能存在空闲一段时间,您不希望它们被另一个用户接管,部分原因是(与作业和任务或批处理不同)它们可能需要相互通信。这称为创建工作池。
当您运行 parpool 时,您是在告诉 MATLAB 您想为自己保留一个工作程序池,因为您打算运行一个需要工作程序池的构造。您可以将集群配置文件指定为输入参数,这将告诉它您是要在远程集群上运行还是在本地运行。
如果您在集群上运行,parpool 将向集群发送一条消息,以保留其中的一些(已经运行的)工作线程供您使用。
如果您在本地运行,parpool 将确保有足够的工作人员在本地运行,然后为您将它们连接到池中。
需要 30 秒的时间是需要启动工作程序的部分,如果它们还没有运行的话。在 Windows 上,如果您在运行 parpool 时观看任务管理器,您会看到 MATLAB 的其他副本在工作人员启动的那 30 秒内弹出(它们实际上不是 MATLAB 本身,它们是 MATLAB 工作人员 - 您可以区分因为他们将在没有桌面的情况下使用更少的内存)。
要比较 MATLAB 与 OpenMP 所做的事情,请注意这些 MATLAB 工作进程是独立的进程,而 OpenMP 在现有进程中创建多个线程。