Is it not possible to call a Matlab .DLL from .NET in parallel?

2 Ansichten (letzte 30 Tage)
Doug Rank
Doug Rank am 19 Dez. 2019
I have a compiled Matlab DLL called "GeneticAlgorithmOptimizer.dll" with a class/method "gaOptimizer.optimize()" that uses said algorithm to generate a solution based on some input data and parameters. It takes about an hour to generate the solution.
I would like to call it in parallel through a .NET application like so:
List<bool> boolList= new List<bool> { false, true };
Dictionary<bool, double[]> matlabSolutions = new Dictionary<bool, double[]>();
Parallel.ForEach(boolValueList, (boolValue) =>
{
var inputData = dataGetter.getData(boolValue);
var parameters = parametersGetter.getParameters(boolData);
var opt = new gaOptimizer();
% THIS IS WHERE THE MATLAB DLL IS CALLED
result = opt.optimize(inputData, parameters);
lock (matlabSolutionsBothPools)
{
matlabSolutions.Add(boolValue, result);
}
});
However, the calls to Matlab end up happening in sequence rather in parallel. The first one has to complete before the second one starts.
Is this a limitation of Matlab? Does anyone know a way around this?

Antworten (0)

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by