首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当Matlab启动一个“并行池”时,会发生什么?

当Matlab启动一个“并行池”时,会发生什么?
EN

Stack Overflow用户
提问于 2017-08-18 02:19:45
回答 3查看 5K关注 0票数 4

在Matlab中运行并行CPU进程从以下命令开始

代码语言:javascript
复制
parpool()

根据文档,该函数:

在员工池上创建一个特殊的作业,并将MATLAB客户端连接到并行池。

这个函数通常需要一些时间来执行,大约30秒。但是在其他类似OpenMP的多CPU模式中,并行执行似乎是完全透明的--我从未注意到任何类似于Matlab的行为(当然,我对并行编程不是很有经验)。

那么,从调用parpool()到完成执行之间到底发生了什么呢?为什么要花这么长时间?

EN

Stack Overflow用户

回答已采纳

发布于 2017-08-18 09:21:44

并行计算工具箱使您能够使用几种不同的范例(例如作业和任务、parforspmdparfeval、批处理)并行运行MATLAB代码,并在本地运行它(在本地机器的核心间并行化)或远程运行(集群中的机器之间并行化--您拥有的并行程序或云中的并行程序)。

在任何一种情况下,代码都是在MATLAB工作人员上运行的,这些工作人员基本上是MATLAB的副本,没有交互式桌面。

如果您打算在远程集群上运行,这些工作人员很可能已经启动并准备运行代码。如果您打算在本地运行,您可能已经开始工作,但可能没有。

上面的一些构造(例如作业和任务、批处理)只是运行所要求的东西,然后工作人员返回到其他事情可用(可能来自不同的用户)。

但是,有些构造(例如parforspmd)要求要运行的工作人员为您保留一段时间--部分原因是他们可能闲置了一段时间,您不希望他们被其他用户接管,部分原因是(与作业和任务或批处理不同)他们可能需要相互通信。这称为创建员工池。

当您运行parpool时,您告诉MATLAB您想为自己预留一个工人池,因为您打算运行一个需要一个工作池的构造。您可以指定一个集群配置文件作为输入参数,这将告诉它您是要在远程集群上运行,还是要在本地运行。

如果在集群上运行,parpool将向集群发送一条消息,以保留一些(已经在运行的)工作人员供您使用。

如果您在本地运行,parpool将确保有足够的工人在本地运行,然后为您将它们连接到一个池中。

需要30秒的东西是它需要启动工人的一部分,如果他们还没有开始运行。在Windows上,如果您在运行parpool时观看任务管理器,您将看到在工作人员开始的30秒内会弹出更多的MATLAB副本(它们实际上不是MATLAB本身,它们是MATLAB工作人员--您可以区分它们,因为它们将使用更少的内存而没有桌面)。

要比较MATLAB对OpenMP的作用,请注意,这些MATLAB工作人员是独立的进程,而OpenMP则在现有进程中创建多个线程。

票数 4
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45747538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档