並列処理を含む MATLAB プログラム (.m) を COM コンポーネントにコン​パイルし、配布先で実​行すると動作しないの​はなぜですか?

並列処理を行うため、ジョブを投入する MATLAB プログラムがあります。
 
function output1 = MainJobSumbitFunction
setmcruserdata('ParallelConfigurationFile','jm1.mat');
load (getmcruserdata('ParallelConfigurationFile'));
sched = findResource('scheduler','type',Values.findResource.Type,'LookupUrl', Values.findResource.LookupURL,'Name',Values.findResource.Name);
% Create a job
job = createJob(sched);
job.FileDependencies = {'simpleFunction.m'};
t1 = createTask(job,@simpleFunction,1,{12});
submit(job);
waitForState(job);
output1 = get(t1,'OutputArguments');
destroy(job);
clear java
プログラム内の「simpleFunction.m」は以下のようになっています。
function out = simpleFunction()
out = rand(2);
このプログラムを MATLAB Builder NE を使用してコンパイルを行い、COM コンポーネントを作成しました。
このコンポーネントを Excel/VBA からコールするとジョブを投入後、応答がなくなります。

 Risposta accettata

MathWorks Support Team
MathWorks Support Team il 27 Feb 2015

0 voti

この問題の原因はワーカーからコンポーネントを認識できないことです。
(回避方法)
1. ワーカーから認識できる、ネットワークドライブ上に CTF ファイルを展開します。CTF ファイルをネットワークドライブ上に展開するためには、環境変数 MCR_CACHE_ROOT を使用して展開先フォルダを指定します。
2. MATLAB プログラムでは、「clear java」部分をコメントアウトします。
 

Più risposte (0)

Categorie

Scopri di più su Parallel Computing in Centro assistenza e File Exchange

Prodotti

Release

R2009b

Community Treasure Hunt

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

Start Hunting!