How are Extrinsic Functions Handled When Executing Parallel Simulations with parsim() ?

1 次查看(过去 30 天)
Suppose a Simulink simulation that contains a Matlab Function block that calls another function declared as extrinsic with @doc:coder.extrinsic.
If multiple simulations are executed in parallel with @doc:parsim, a) does each worker get its own instance of the Matlab engine in which the extrinsic function is executed? Or b) do all of the workers share a common Matlab engine and share the extrinsic function? Seems like the latter could be problematic if the extrinsic function contains persistent data.
As best I can tell, @doc:parfor operates in accordance with (a), but I couldn't find anything on point in the doc for @doc:parsim.
  3 个评论
Paul
Paul 2025-6-21
编辑:Paul 2025-6-22
Hi Raymond,
Yes, mdl has a MATLAB Function block that calls a function declared as extrinsic. The question is whether or not the simulations on each worker are fully/completely/wholly indedpendent of each other and therefore the extrinsic function for each simulation is running on each worker. Refering to the diagram at parsim workflow, is the extrinsic function for each simulation executed on the worker or client session of Matlab?
Note that I'm assuming that the Parallel Computing Toolbox is installed. If it's not, then my understanding is that parsim is essentially a call to sim, and in this case the same extrinsic function will run as each simulation is executed serially, and therefore any persistent data in the extrinsic function will carry over from one simulation to the next.
I haven't tried testing any of this; I was hoping that the behavior in question is documented somewhere and I just couldn't find it.
Paul
Paul 2025-8-1
"each simulation is executed serially, and therefore any persistent data in the extrinsic function will carry over from one simulation to the next."
Actually, if the simulation are executed serially, there should not be any problem with persistent data, at least based on my current understanding of how persistent data works in simulations.

请先登录,再进行评论。

回答(1 个)

Supraja
Supraja 2025-8-1
Hello Paul,
Please find the information regarding parsim and extrinsic functions:
  • parsim distributes simulations to workers in a parallel pool.
  • Each worker is an independent MATLAB process with its own workspace and memory.
  • The coder.extrinsic function is executed by the MATLAB engine.
  • Therefore, since each worker is a separate MATLAB process, each worker uses its own instance of the MATLAB engine to execute the extrinsic function.

类别

Help CenterFile Exchange 中查找有关 String 的更多信息

产品


版本

R2024b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by