Filter löschen
Filter löschen

Using NET Assembly in parallel pool/ worker/ parfeval

1 Ansicht (letzte 30 Tage)
Ronron
Ronron am 16 Feb. 2017
Beantwortet: Ronron am 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?

Antworten (1)

Ronron
Ronron am 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.

Kategorien

Mehr zu Asynchronous Parallel Programming finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by