我正在尝试是否可以使用Chapel编写用于基于Python的气候模型的并行代码:https://github.com/CliMT/climt
我对Chapel没有任何经验,但是对于我的用例来说,这似乎很有希望。我对如何将Chapel代码集成到当前工作流程中有一些疑问:
我知道您可以构建可导入的.so
文件,但是在生成Cython文件时可以停止编译吗?然后,我可以将其包含在发行版中,并使用标准的[[setuptools
在Travis上编译我的项目。
numpy
mpirun python my_code.py
类命令吗?作为参考,我们这样做是因为Cython编译命令相当棘手。我以为我们可以打印出与chpl编译标志--print-commands
一起使用的Cython命令,但事实并非如此(我会为此提出问题)。
forall
循环,这会将该维度中的索引分为许多由Chapel确定的任务。 (对于不熟悉forall
循环的人,this link很好地概述了该概念)例如:
forall x in arr.domain.dim(1) {
// traverses the first dimension of arr's domain in parallel
...
}
如果将Chapel库编译为具有多语言环境设置的Python扩展,则可以使用扩展
chpl_setup
函数的numlocales参数来指定所需的语言环境(节点)数。这样做将有助于在您运行Python程序时为您分发Chapel代码。
import MyChplLib
MyChplLib.chpl_setup(4)
...
使用4个语言环境(节点)运行程序。我可能应该提到,从1.20版本开始,我们在多语言环境库中不支持数组参数。我们仍在确定1.21发行版的优先级,因此,反馈您想要的速度有多大的帮助!