並列処理を含む 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 からコールするとジョブを投入後、応答がなくなります。

 Accepted Answer

MathWorks Support Team
MathWorks Support Team on 27 Feb 2015

0 votes

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

More Answers (0)

Categories

Find more on Parallel Computing in Help Center and File Exchange

Products

Release

R2009b

Community Treasure Hunt

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

Start Hunting!