MATLAB并行服务器:保存每个工人的产出数据程序独立工作

5视图(30天)
计划10名员工独立工作可以像下面的例子。
假设所有工人相互不同节点(node01 ~ node10)。
下面的代码是运行在node01的工人。
% % example.m
c = parcluster;
job1 = createJob (c);
num_worker = 10;
问= 1:num_worker
input_var{问}=问;
结束
createTask (job1 @test_func 1, input_var);
提交(job1);
等待(job1);
结果= fetchOutputs (job1);
函数output_var = test_func (input_var)
兰德(100100)+ 1 =我*兰德(100100);
output_var = * input_var;
我想保存所有员工的结果。
如果计算结果的系统内存的限制,我们无法获取和保存这些结果。
所以,我试图拯救每个结果在函数内部,test_func。米”,如下所示。
函数[]= test_func (input_var)
兰德(100100)+ 1 =我*兰德(100100);
output_var = * input_var;
保存(sprintf (“filename_ % d.mat”input_var),“output_var”);
如果函数是改变了如上所述,每个工人的结果保存在以下路径,
“C: \ ProgramData \ mj \ \检查站节点(数量)._worker01_mlworker_log \ matlab \工作’。
我想保存这些文件的路径,而不是默认的路径,
像node01道路,' \ \ node01 \ E: \ folder_name \”。
之前有错误,不是寻找路径的工人除了headnode (node01)。
函数[]= test_func (input_var)
兰德(100100)+ 1 =我*兰德(100100);
output_var = * input_var;
保存(sprintf (' \ \ node01 \ E: \ folder_name \ filename_ % d.mat 'input_var),“output_var”);
我不知道如何拯救每个工人的产出数据定义headnode道路。
请帮助我。
谢谢你!

接受的答案

雷蒙德·诺里斯
雷蒙德·诺里斯 2023年3月6日
编辑:雷蒙德·诺里斯 2023年3月7日
试试以下
函数[]= test_func (input_var)
%为未来运行存储本地主机名
持续的接下来的
如果isempty (HN)
(失败,HN) =系统(的主机名);
如果失败的
HN = getenv (“COMPUTERNAME”);
结束
HN = strtrim (HN);
如果isempty (HN)
错误(“未能获得主机名”)
结束
结束
兰德(100100)+ 1 =我*兰德(100100);
output_var = * input_var;
%需要逃避每一个反斜杠。
% E: \行不通。使用E $
保存(sprintf (“\ \ \ \ % s \ \ E $ \ \ folder_name \ \ filename_ % d.mat ',HN input_var),“output_var”);
6个评论

登录置评。

更多的答案(0)

社区寻宝

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

开始狩猎!