我面临一个巨大的问题。我使用 Matlab 引擎(engOpen() 等...)调用了嵌入的 Matlab 函数,构建了一个复杂的 C 应用程序。会发生以下情况:
- 我在一台机器上生成了这个应用程序的多个实例,每个核心一个
- 然而!...然后应用程序减速到停止。事实上,在我的 16 核机器上,应用程序的速度大约降低了 16 倍。
- 现在我意识到这是因为每台机器只启动了一个单一的 matlab 引擎,并且我所有的 16 个实例共享同一个 matlab 副本!
- 我试图用 matlab GUI 复制它,它也有同样的问题。我在 GUI 中运行一个程序需要 14 秒,然后我同时在两个 GUI 中运行它,需要 28 秒
这对我来说是一个大问题,因为如果我必须在没有 matlab 的情况下重新编写整个 c 应用程序,我将错过最后期限。我知道 matlab 有用于并行编程的命令,但我的 matlab 调用嵌入在 C 应用程序中,我想运行 C 应用程序的多个实例。同样,我不能重构我的整个 c 应用程序,因为我会错过最后期限。
任何人都可以让我知道是否有解决方案(例如,在同一台机器上真正启动多个 matlab 进程)。我愿意为额外的许可证付费。我目前在所有机器上都安装了完全 lincensed matlab。
非常感谢你!
编辑
感谢本·沃伊特的帮助。我发现一个 Matlab 实例已经在使用多个内核。事实上,运行一个实例显示我充分利用了 4 个内核。如果我运行两个 Matlab 副本,我可以充分利用 8 个内核。因此它实际上是并行运行的。但是,即使 2 个实例似乎占用了两倍的处理能力,我仍然会减速 2*。因此,2 个实例似乎获得了两倍的结果,总计算能力为 4*。为什么会这样?