使用nohup时,MATLAB中的createTasks和createJob命令不起作用?

时间:2013-04-10 18:10:37

标签: matlab nohup

我使用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

我想知道是否根本不可能将nohup与createTask和createJob命令一起使用,或者是否需要调整我的datafile.m以使其工作。

1 个答案:

答案 0 :(得分:1)

您需要修改nohup_script.m以阻止job_ss完成。换句话说,只需添加

即可
wait(job_ss)
到最后。否则,本地调度程序在调用MATLAB客户端退出时终止所有正在运行的作业 - 按照本页上的最后一句http://www.mathworks.co.uk/help/distcomp/use-a-local-scheduler.html