Azzera filtri
Azzera filtri

Using NET Assembly in parallel pool/ worker/ parfeval

1 visualizzazione (ultimi 30 giorni)
Ronron
Ronron il 16 Feb 2017
Risposto: Ronron il 21 Feb 2017
I would like to pass an object from a class of a NET Assymbly in a parallel pool by executing the function via parfeval. I always get the following error.
"Warning: Cannot load an object of class 'MAPort': No matching constructor signature found."
I already tried the following things.
First I loaded the NET Assembly by usind spmd ... end
spmd
try
NET.addAssembly('dSPACE.HILAPI.MAPort');
import ASAM.HILAPI.dSPACE.MAPort.*;
catch e
error(e.message)
end
end
Secondly I tried to load the library by calling parfevalForALL.
F2 = parfevalOnAll(@loadNetAssembly,0);
function loadNetAssembly()
try
NET.addAssembly('dSPACE.HILAPI.MAPort');
import ASAM.HILAPI.dSPACE.MAPort.*;
catch e
error(e.message);
end
I also tried to import the classes everywhere. And after trying a lot yesterday it worked. But today it didn't work again and I didn't change the code. So I really don't know whats the right way. Can anyone help?

Risposte (1)

Ronron
Ronron il 21 Feb 2017
I can answer to my question myself. Actually the problem is the specific NET Assembly that I wanted to use in the parallel pool. I just found out, that the ASAM.HILAPI does not support multithreading in Matlab. So it is a specific problem according to the Assmebly.

Categorie

Scopri di più su Asynchronous Parallel Programming in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by