在高性能 Fortran (HPF) 中,我可以使用DISTRIBUTE
指令指定并行计算中涉及的数组的分布。例如,以下最小子例程将并行对两个数组求和:
subroutine mysum(x,y,z)
integer, intent(in) :: y(10000), z(10000)
integer, intent(out) :: x(10000),
!HPF$ DISTRIBUTE x(BLOCK), y(BLOCK), z(BLOCK)
x = y + z
end subroutine mysum
我的问题是,该DISTRIBUTE
指令是否必要?我知道在实践中这没什么兴趣,但我很好奇一个朴素的、无指令的 Fortran 程序是否也可以是一个有效的 HPF 程序?