遍历文件的远程服务器

2视图(30天)
CP
CP 2011年10月10日
我用matlab对集群进行模拟,从本地机器工作在哪里提交通过matlab集群。
一个示例提交脚本看起来像这样:
% %处理作业调度器
sched = findResource ();
% %创建一个工作
工作= createJob(固定播送时间,“FileDependencies”,{“Analysis.m”});
% %创建任务
文件列表= dir (“/ dir1 / dir2 /”)
tidx = 1:长度(文件列表)
任务(tidx) = createTask(工作,@Analysis 1 {tidx});
结束
% %提交工作
提交(工作)
我现在想获得和循环一些文件在集群上运行一个脚本文件,说,Analysis.m
我怎么做这个文件列表在集群上,而不是在本地机器上的工作调度,然后通过每个文件的分析。一次?

接受的答案

Edric埃利斯
Edric埃利斯 2011年10月10日
也许PARFOR循环集群将是最简单的。是这样的:
函数x = doStuff
%在集群上的文件列表
d = dir (集群的/道路/ / / * .dat”);
%遍历文件——这将传播工作
%的员工
parfor2 = 1:元素个数(d)
x (ii) = someFcn (d (2) . name);
结束
然后,您需要提交的doStuff matlabpool工作到集群,是这样的:
工作= createMatlabpoolJob(固定播送时间,“MaximumNumberOfWorkers”4);
createTask(工作,@doStuff, 1,);
或者,在这种情况下,你甚至可以使用 批处理 命令提交工作
工作=批(@doStuff 1 {},“Matlabpool”4);
4评论
CP
CP 2011年10月12日
我设法解决所有问题,得到了这个工作。只有一个问题,因为它是有限的16个工人每工作(服务器设置)。我怎么能分裂成几个就业机会使用这种方法呢?

登录置评。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2011年10月10日
你有dirlist.name (idxd),但应该目录(idxd) . name
2的评论
CP
CP 2011年10月10日
我也试图回归:
函数x = dojobs
和添加一个输出PrevTargAnalyze函数,然后做x = PrevTargAnalyze parfor内,它仍然抱怨x没有分配= /

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!