并行池可以异步启动吗?

Wil*_*ill 6 parallel-processing matlab asynchronous

首次启动 MATLAB 并行池时,通常需要几秒钟的时间。因此,在用户交互式应用程序中,有动力确保在第一个计算任务需求到达之前运行并行池,因此启动并行池的过程不会添加到响应请求的总时间中.

然而parpool,我见过的每一个程序操作都会启动并行池,直到池完成启动。这意味着即使用户在一段时间内不需要调用并行池,在并行池启动完成之前,他们也不能做任何其他事情,比如开始设置他们的计算成本高的请求——例如填写用户界面。

这非常令人沮丧!如果是任何其他耗时的准备操作,一旦并行池就位,它就可以在后台使用parfeval并且不会阻碍用户的工作流程,直到任何实际调用该准备完成的请求。但是因为这个任务实际上解决了缺少运行并行池的问题,所以用户似乎必须等待他们可能实际上不需要使用的东西,直到任务完成很久之后。

有什么办法可以绕过这种明显的可用性限制吗?

Wil*_*ill 1

backgroundPool从 MATLAB R2021b 开始,对于大多数需要在后台完成的计算工作来说,添加是更合适的解决方案。它无法访问与实际启动并行工作池相同的所有功能(据我所知,这仍然无法在后台完成),但对于创建响应式用户交互界面的所述用例来说,它是理想的选择用于消除大多数接口延迟。