我正在尝试在Chapel中为多语言环境实现SOR(连续松弛)程序,但是要使用本地内存,因此我想在各语言环境中显式分配行。我已经将targetlocales
重塑为一维,但是现在我不确定如何控制语言环境中的行分布。
我非常熟悉MPI,因此我将举一个我想根据MPI实现的示例。有没有一种方法可以指定我要在#rows / #locales中分配所有数组行,而其余行在最后一个locales中分配?
我现在在教堂里面临的问题是:
由于每个实验的数组大小都会有所不同,因此我希望对行分布进行控制,因为它是本地内存多语言环境的实现。我将不得不复制并接收来自邻近区域的行。
答案 0 :(得分:3)
作为背景,Chapel语言本身并不指示数组的行如何在语言环境之间分配;相反,它是域映射的定义(一种用户定义的类型,它将域的索引和数组的元素映射到语言环境)。除了上面描述的默认值外,当前属于教堂标准模块的Block
distribution目前还没有一种指定阻塞方式的方法。但是,只要花点力气,就可以编写自己的域映射(或自定义BlockDist
模块)来获得不同的分布。
据我了解,您想要每个初始语言环境的上限(行/语言环境),然后是最终语言环境的其余元素?将其作为功能请求提交到我们的GitHub issues页上是很合理的。或者,如果您想自己解决问题,可以在Chapel的Gitter频道或邮件列表上寻求帮助,以开始工作(有关两者的链接,请参见user或developer resources页面)。