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

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

2 years ago

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

wait(job_ss)

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