我正在运行一个代码,其中包含一个循环,我在其中拆分任务并使用qsub作为不同的作业发送它。例如,我打电话给:
function searchweights()
startup
distrJobs('UseMAR',false);
distrJobs('UseMAR',true);
end;
function distrJobs(varargin)
fprintf('entered distrJobs');
UseMAR = false;
w = {[0,3.^(-9:0)],[0,2.^(-7:1)]}; % grids
for i = 1:2:numel(varargin)
if strcmp(varargin{i},'wgrid'), w = varargin{i+1}; end
if strcmp(varargin{i},'UseMAR'), UseMAR = varargin{i+1}; end
end
fprintf(' get cross validation accuracy for each grid point');
[w1,w2] = ndgrid(w{1},w{2});
n = numel(w1);
for i = 1%:n
command = sprintf('qsub optionFile "crossvalid([%f,%f],''Xpred.mat'',''/data5/natraj/SWeight/SWeight_%d_%d.mat'',%d)"', w1(i), w2(i), UseMAR, i, UseMAR)
system(command);
end;
end;
我的交叉有效函数如下:
function crossvalid(w,infile,outfile, UseMAR)
startup
load(infile);
[A,R] = sbu.ClothParser.cross_validation(X, 'weights',[w(1),w(2)], 'UseMAR', UseMAR);
save( outfile, 'A', 'R');
end;
但是在我运行我的 searchweights 函数之后,qsub 命令似乎根本没有运行,即它没有进入“crossvalid”函数。它在错误文件中给出了这个错误:/data5/natraj/matlab2012a/bin/matlab: No match。
*(/data5/natraj/matlab2012a/bin/matlab 是我的 matlab 可执行文件)
我没有得到真正导致此错误的原因,我该如何排除?
操作系统是Linux。
编辑:问题似乎出在 qsub 上。当我使用 parfor 运行相同的 for 循环时,它正在运行。