如何做一个单线程DLL函数规模多个呼叫?(How do multiple calls on a si

2019-10-21 00:06发布

目前,我有一个访问一个DLL MILP内MATLAB计算,从我的理解最MILP求解器是单线程的,和我不知道如何/如果接触到的MILP求解器的多个同步调用的发挥。 执行计算排队彼此的后面,所有工艺跨单线程还是有传播负载的一些方法?

我想了解这个组合来自附近同时呼叫一个调用100如何有效扩展。 它是否成为由硬件或软件的限制?

Answer 1:

据我所知, MATLAB引擎不是线程安全的。 如果应用程序是多线程的,你必须确保只有一个线程访问引擎API在任何时候。 这并不是说,内置的MATLAB函数本身都是单线程(线性代数,FFT等。在内部多线程其实很多操作),我只是说说的,你用MATLAB通信的引擎接口,是不是线程安全的...

当然,这不使用多进程并行执行阻止你。 刚开始你的程序的多个实例每解决一个独立的线性规划问题。 这是这种东西的并行计算工具箱在依赖(通过运行本地后台工作人员,甚至远程工作人员与分布式计算工具箱 )。



文章来源: How do multiple calls on a single threaded DLL function scale?