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

我想知道是否根本无法将 nohup 与 createTask 和 createJob 命令一起使用,还是我需要调整我的 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 回答