0

nohup コマンドを使用して、自分の matlab プログラムをリモート マシンで実行しています。いくつかの入力パラメーターを変更して同じプログラムを実行する必要があるため、並列計算ツールボックスの関数を利用することにしました。私は次のmatlabスクリプトを持っています.datafile.mと言います:

      % This is a matlab script titled datefile.m
      a_array = [0;1;2;3];
      jm = findResource('scheduler', 'Configuration', 'local');
      job_ss = createJob(jm, 'Name', 'unsteady_slab_porous');

      paths = {blah blah}

      set(job_ss, 'PathDependencies', paths);

      for i=1:length(a_array)
      createTask(job_ss, @my_function, 0, {a_array(i)});
      end       

      submit(job_ss)

matlab ターミナルで datafile.m を実行すると、問題なく動作します。しかし、nohup コマンドでスクリプトを実行しようとすると、ジョブが失敗します。これが私がすることです:

 nohup matlab  -nodesktop <nohup_script.m &> nohup_script.log &

ここで、nohup_script.m は単に datafile.m を呼び出します。

createTask および createJob コマンドで nohup をまったく使用できないのか、それとも動作させるために datafile.m を微調整する必要があるのか​​ 疑問に思っています。

4

1 に答える 1

1

nohup_script.m完了するまでブロックするように変更する必要がありますjob_ss。つまり、単純に追加します

wait(job_ss)

最後まで。それ以外の場合、呼び出し元の MATLAB クライアントが終了すると、ローカル スケジューラは実行中のすべてのジョブを終了します - このページの最後の文に従ってhttp://www.mathworks.co.uk/help/distcomp/use-a-local-scheduler.html

于 2013-04-11T06:43:34.703 に答える