我使用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以使其工作。
答案 0 :(得分:1)
您需要修改nohup_script.m
以阻止job_ss
完成。换句话说,只需添加
wait(job_ss)
到最后。否则,本地调度程序在调用MATLAB客户端退出时终止所有正在运行的作业 - 按照本页上的最后一句http://www.mathworks.co.uk/help/distcomp/use-a-local-scheduler.html