今天写了一个Coarray并行程序,遇到一些问题,经过调试后发现了几处需要注意的地方。首先程序结构如下:
1.主程序声明全局变量,可分配Coarray数组
2.image1调用子程序计算数据,写入该数组
3.广播到所有image中
4.同步后继续计算,后续计算依赖该数组中的数据
需要注意的点:
1.Coarray声明时要用延迟形状,即real, allocatable :: arr(:)[:],方括号中应为冒号而不是星号
2.为数组分配内存时,方括号内要用星号:allocate(arr(N)[*])
3.如果该数组在主程序中是Coarray,则子程序中的形参也需要声明成Coarray,否则会报错

浙公网安备 33010602011771号