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

 采纳的回答

0 个投票

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

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Parallel Computing 的更多信息

产品

版本

R2009b

Community Treasure Hunt

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

Start Hunting!