科学计算:Fortran 8X如何处理并行编程

 作者:姬哚斡     |      日期:2017-08-18 05:02:14
在科学计算中,大量数据通常以相同,简单的方式处理例如,如何模拟气体或电场远离其源的扩散的问题通过相同的方程在任何数量的维度上解决在其最简单的形式和平面中,称为Uij的一小部分区域中的粒子的电势或密度是其邻居值的平均值:Uij = Ui + 1j + Ui-1j + Uij + 1 + Uij-1 ---------- 4除了事先指定Uij的地方,称为边界条件,这个简单的等式反复重复表面区域的每一位,直到结果稳定或收敛于答案,这总是如此在传统的计算机上,一次一步地进行计算,可以使用这个Fortran 77程序:DO 10 I = 1,IMAX DO 10 J = 1,JMAX IF(.NOTBOUNDS(I,J)+ UNEW(我,J)=(UOLD(I + 1,J)+ UOLD(I-1,J)+ + UOLD(I,J + 1)+ UOLD(I,J-1))/ 4.0 10继续这里,BOUNDS是一个真值或假值的表,告诉我们BOUNDS(I,J)是否在边界上对于每个I,J,其BOUNDS为假,一个名为UNEW(I,J)的新密度值是从它的邻居计算的然后我们将所有的UNEW复制到UOLD并一次又一次地执行,直到结果不再显着改变在并行机器上没有什么可以阻止所有的总和同时完成因为没有结果UNEW(I,J)相互依赖,我们可以并行完成每一个,如果我们有一台计算机有很多可用于同时完成任务的处理元素新的Fortran 8X标准将允许我们表达一个完整的计算作为单个方程整个数组操作可以指定为:WHERE NOT BOUNDS UNEW =(UOLD(2:IMAX + 1,:) + UOLD(0:IMAX-1,:) + + UOLD(:,2:JMAX + 1)+ UOLD(:,0:JMAX-1)/ 4.0这是告诉计算机计算机的并行性质计算UNEW表示的整个区域,右边的下标以显示UOLD的不同部分如何排列的方式给出明确表示并行计算的替代方法是将其留给计算机以发现计算的并行部分这很难做到,