gpt4 book ai didi

parallel-processing - 如何确保我的Fortran FORALL结构被并行化?

转载 作者:行者123 更新时间:2023-12-04 08:13:14 26 4
gpt4 key购买 nike

我得到了一个二维矩阵,表示金属板表面上的温度点。矩阵(板)的边缘在20摄氏度下保持恒定,并且在一个预定义点上有100摄氏度的恒定热源。所有其他网格点最初都设置为50摄氏度。

我的目标是获取所有内部网格点,并通过对周围四个网格点(i + 1,i-1,j + 1,j-1)进行迭代平均,直到达到收敛(变化为迭代之间小于0.02摄氏度)。

据我所知,我在网格点上进行迭代的顺序是无关紧要的。

对我来说,这似乎是调用Fortran FORALL构造并探索并行化乐趣的好时机。

如何确保代码确实是并行的?

例如,我可以在单核PowerBook G4上进行编译,并且由于并行化,我希望速度不会提高。但是,如果我在双核AMD Opteron上进行编译,我会假设可以利用FORALL构造。

另外,是否有一种方法可以衡量程序的有效并行化?

更新

为了回应M.S.B的问题,这是gfortran 4.4.0版的问题。 gfortran支持自动多线程吗?

值得注意的是,我认为,自动矢量化已使FORALL构造过时了。

也许这对于一个单独的问题是最好的,但是自动向量化如何工作?编译器是否能够检测到循环中仅使用纯函数或子例程?

最佳答案

如果使用Intel Fortran编译器,则可以使用命令行开关来打开/增加编译器的详细程度,以进行并行化/矢量化。这样,在编译/链接期间,您将看到类似以下内容的内容:

FORALL loop at line X in file Y has been vectorized

我承认,自上次使用以来已经有好几年了,因此编译器消息实际上看起来可能非常不同,但这是基本思想。

关于parallel-processing - 如何确保我的Fortran FORALL结构被并行化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3647872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com