Using NET Assembly in parallel pool/ worker/ parfeval

조회 수: 2 (최근 30일)
Ronron
Ronron 2017년 2월 16일
답변: Ronron 2017년 2월 21일
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?

답변 (1개)

Ronron
Ronron 2017년 2월 21일
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.

카테고리

Help CenterFile Exchange에서 Parallel Computing Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by