【问题标题】:Matlab functions and parallel_invoke [closed]Matlab 函数和 parallel_invoke [关闭]
【发布时间】:2013-08-31 08:21:44
【问题描述】:

在我的项目中,我有很多 MATLAB 函数。对于每个函数,我在应用程序启动时调用 Initialize 函数。我尝试使用 parallel_invoke 调用此函数。我试了几次,总是需要更多时间,没有这个的代码。有人可以解释一下吗? MATLAB 或 Initialize 函数中是否有特定内容?

【问题讨论】:

  • 您的问题不清楚。您是否正在使用 C++ 中的英特尔 TBB 库?如何与 MATLAB 集成?
  • 哪个parallel_invoke?多发性硬化症?待定?一些代码可能会有所帮助。

标签: c++ matlab parallel-processing matlab-deployment matlab-compiler


【解决方案1】:

Matlab 运行时只有一个解释器线程,因此并行调用 Matlab 函数不会为您带来任何好处:当第一个函数 A 被调用时,MCR 获得一个锁,只有在该函数退出时才释放它。在此期间调用另一个函数 B 会导致尝试获取锁,然后显然会阻塞直到 A 完成。您看到它占用更多时间的原因可能是锁定/parallel_invoke 的开销。

我不确定您对 我调用 Initialize 函数的每个函数是什么意思:除非您使用多个 Matlab dll(这将比使用单个 dll 的性能低),您只需要称它为 Initalize/Terminate 一次。

【讨论】:

  • +1 现在可以理解 OP 的“初始化函数”的含义。此处为不熟悉 MATLAB 编译器的其他人提供一些上下文:blogs.mathworks.com/loren/2011/02/03/…,以及来自 Peter Webb 的comment,证实了关于使用信号量进行锁定的这一事实。
  • 我在 Visual Studio 2010 中使用 C++
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-14
  • 1970-01-01
相关资源
最近更新 更多