何时使用codistributed数组
8视图(30天)
显示旧的评论
想象我有如下矩阵:
一个=兰特(6400、6400)
现在想象一下,我创建一个分布式数组:(我有4个工人)
dist = codistributor1d ();
dist = codistributor2dbc (2 [2], 3200);
B = codistributed(经销)
我有两种方法分配。每个工人商店3200 x3200矩阵或每个工人存储6400 x1600矩阵。
我的问题是:
- 我什么时候应该分配一个数组?
- 我怎么知道哪个函数,codistributor1d或codistributor2dbc,我应该使用每当我想我有一些数组分配之间的工人吗?我知道如何处理两种类型的数组,但是我不知道当一个人比另一个。
如果有人能帮我我很欣赏。
0评论
接受的答案
吉尔里斯
2013年2月14日
分布的数组是最有用的,当你没有足够的内存来存储在单个机器上整个数组。通过分配块的原始数组的所有工人在池中,您可以执行操作整个数组之前,你甚至不能存储。
我建议你退一步,先处理分布式数组而不是codistributed数组。这允许MATLAB为你选择一个默认的分配方案。
一个=兰德(6400、6400);
matlabpool开放
dA =分布式(A);%让MATLAB选默认的分配方案
%分布数组,哒
R =胆固醇(dA);%一个函数,它适合的例子
%分布式阵列——不需要spmd
与分布式阵列,可以开始,而不必担心使用什么样的分配方案。如果你有兴趣,你可以随时查询分布方案,目前使用的分布式阵列一样:
% dA分布数组创建如上所述
spmd
codistr = getCodistributor (dA)% spmd里面我们可以“视图”哒
% codistributed数组和访问它
%分配方案
结束
一旦代码正常工作与分布式阵列,可以使用codistributed数组进行少量更改特定的分配方案。更改默认分配方案可能会提高性能,但随着马特·J提到,选择最有效的分配方案是依赖问题,将很大程度上取决于您想要调用的操作。