我希望Python作为前端,Fortran作为后端.我还想让fortran部分并行 - 最好的策略?

Gri*_*iff 4 python arrays parallel-processing fortran f2py

我有一个python脚本,我希望大致这样做:

  1. 将一些粒子位置调用到数组中

  2. 在所有512 ^ 3个位置上运行算法以将它们分配到NxNxN矩阵

  3. 将该矩阵反馈给python

  4. 使用python中的绘图来可视化矩阵(即mayavi)

首先我必须连续编写它,但理想情况下我想并行化第2步以加速计算.什么工具/策略可能会让我开始.我知道Python和Fortran很好但不太关于如何将这两个连接到我的特定问题.目前我正在Fortran中完成所有工作,然后加载我的python程序 - 我想立刻完成所有工作.我听说过py2f,但是在我走下一个特定的兔子洞之前,我希望得到经验丰富的人的意见.谢谢

编辑:我想要平行的东西是"令人尴尬的平行",因为它只是一个N粒子循环,我想尽快通过这个循环.

Vla*_*r F 5

您有两个基本的绑定选项.首先使用f2py,另一个在Fortran中使用与C的互操作性并使用绑定Cython.教程f2py在这里.这并不困难,有一些指令可以将f2py放到你的Fortran代码中,但通常不需要它们.

对于并行化,第一种使用方法可能是OpenMP,如果在一台机器上进行并行化就足够了.它使用线程,易于用于具有令人尴尬的并行性的循环.只要确保你没有写入线程中的任何全局变量,如果是,请使用同步指令.