最佳实践数据分发给工人吗?

4视图(30天)
Shumao张
Shumao张 2021年12月8日
评论道: Edric埃利斯 2021年12月8日
你好,
我想知道如果有任何已知的最佳实践数据从客户机分发给员工的时间和空间效率。假设我们有一个大矩阵 一个 在客户端,想将它分发给工人(沿列)。假设
  • 一个是一些复杂操作的结果,所以我们不能生成列(或行)一个平行于每个工人
  • 一个可以安装到内存中数据存储类型(不需要)
我想知道将分发的最佳实践 一个 在工人。
我做了以下比较:
n = 512;
n_workers = 25;
一个=兰德(n ^ 2, n);%生成合成数据
%方法1:分布
抽搐;
A_dist =分布式(A);
t1 = toc;
流(“t1 = % 7.4 e \ n”,t1)
清晰的A_dist
%方法2:复合- >分配
抽搐;
A_dist =复合();
chunk_size =装天花板(n / n_workers);
我= 1:n_workers-1
A_dist{我}= (:,chunk_size *(张)+ 1:chunk_size *我);
结束
A_dist {n_workers} = (:, chunk_size * (n_workers-1) + 1:结束);
A_dist =分布式(A_dist, 2);
t2 = toc;
流(“t2 = % 7.4 e \ n”,t2)
清晰的A_dist
%方法3:spmd + codistributed
抽搐;
spmd
A_dist = codistributed (codistributor (“一维”2));
结束
t3 = toc;
流(“t3 = % 7.4 e \ n”t3)
清晰的A_dist
我注意到方法2总是比方法1,和他们两个都显著高于方法3。典型的输出是:(和等级的差距相当健壮的)
t1 = 3.0949 e + 00
t2 = 2.2290 e + 00
t3 = 1.7517 e + 01
有什么更好的方法比我的方法2 ?
除了 ,我想知道的 镜子 问题:什么是一个最佳实践收集数据从工人到客户端?基本上应该是一个逆我的代码一个(大)矩阵 一个 从分布式A_dist数组。
4评论
Edric埃利斯
Edric埃利斯 2021年12月8日
parfor 可能是最快的,因为它可以同时发送的数据到多个工人。不幸的是,使用 parfor 不是用于创建一个 分布式 数组,因为你没有控制,最终的数据。(理想情况下 分布式 构造函数也会这样做,但我认为当前实现不)。

登录置评。

答案(0)

社区寻宝

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

开始狩猎!