批处理作业的类似数据文件大小和功能在不同的时间完成工作,虽然都是同时开始。

2视图(30天)
刚达哈Venkata拉
刚达哈Venkata拉 2021年8月20日
回答: 雷蒙德·诺里斯 2021年8月20日
我有一个大(n * n)数据,这是一个输入几个相关的函数文件。
应该经历相同的过程,每个元素和元素之间的通信是不必要的。
所以我分区数据到“z”的带对应于本地机器的核心。
三列和两行。
r_zones = 2;%行区
c_zones = 3;%列区
rz =圆(linspace (1、sx r_zones + 1);% rz =行区
cz =圆(linspace (1、sy c_zones + 1);% cz =列区域
六个六区使用批处理命令创建工作。
电脑= parcluster ();
我= 1:r_zones
j = 1: c_zones
Xa (rz(我):rz (i + 1) (1), ((cz (j): cz (j + 1) 1))) = 1;
工作(jm (i, j)) =批(pc, @com_sigma 3{输入});
结束
结束
我= 1:r_zones
j = 1: c_zones
等待(工作(jm (i, j)));
结束
结束
所有的工作有相同大小的数据(一个行或列的差异可能存在),开始在同一时间。
但是,每个工作的完成时间是不同的,最初的工作是长时间。CPU利用率是不超过70%。

接受的答案

雷蒙德·诺里斯
雷蒙德·诺里斯 2021年8月20日
不知道为什么第一任务没有完成,但是这是另一种方法。保持你所拥有的,而是比使用 批处理 ,使用 parfeval 。改变
电脑= parcluster ();
我= 1:r_zones
j = 1: c_zones
Xa (rz(我):rz (i + 1) (1), ((cz (j): cz (j + 1) 1))) = 1;
工作(jm (i, j)) =批(pc, @com_sigma 3{输入});
结束
结束
电脑= parcluster ();
池= gcp (“nocreate”);
如果isempty(池)
池= pc.parpool (maxNumCompThreads);
结束
我= 1:r_zones
j = 1: c_zones
Xa (rz(我):rz (i + 1) (1), ((cz (j): cz (j + 1) 1))) = 1;
工作(jm (i, j)) = parfeval(池、@svd 3输入);
结束
结束
你开始一份工作(平行池),然后发送单个任务( parfeval ),而不是创建r_zones * (c_zones工作 批处理 )。

更多的答案(0)

s manbetx 845


释放

R2020b

社区寻宝

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

开始狩猎!