介绍
对于我的库,我需要拆分一个长方体点晶格以分配给多个处理元素 (PE)。
如您所见,PE 之间没有共享点,并且某些 PE(此处为 4-7)仅获得二维“切片”。
该接口接受n1
, n2
, n3
,P
它们都是整数。表示沿方向即或的nx
格点数。表示可用的PE数量。x
n1
n2
n3
P
当前的问题表述
由于域是一个长方体,我正在寻找这样的 3 部分分解P
,P = p1 * p2 * p3
并且与px
成比例nx
。
问题表述的局限性
- 需要开发三部分分解算法。
- 必须使用某种度量来选择生成的许多 3 部分分解中的任何一个。在图像中的示例中,假设
n1 = 3, n2 = 5, n3 = 4
,P = 54
我们将有 3 部分分解(27, 2, 1)
、(9, 3, 2)
和。这里适用哪一个?一个简单的差值度量会选择。但即使这样也有多个排列和.(6, 9, 1)
(6, 3, 3)
(6, 3, 3)
(3, 6, 3)
(3, 3, 6)
- 如果选择的 3 部分分解有一个大于相应格子大小 (
nx
) 的因子,那么我们将不得不截断它,这意味着一些 PE 将不起作用。 - 如果选择的 3 部分因式分解有一个因子(可能是在上面提到的截断之后)不划分其相应的格大小,我们就有不均等的工作共享(尽管一些 PE 可能正在休眠,如上点所示)。
读者如何提供帮助
- 我们如何改进这种不优雅的算法?您能否建议对“问题表述的限制”中的任何一点进行改进?
- 有没有更好、更正式的方法(即问题表述)?
- 论文/网站/文章/书籍的链接将不胜感激。