Coarrays 禁用使用 -fcoarrays=?

Coarrays disabled use -fcoarrays=?

我正在尝试 运行 遵循本书示例的 Fortran 代码:

Curcic, M. 2020. Modern Fortran: Building Efficient Parallel Applications.

虽然我在 运行 时遇到以下错误,而且我的经验不足以理解问题所在,但有人可以帮助我吗?


program hello
    implicit none

    integer :: a[*]  ! error here
    integer :: i

    a = this_image()

    if (this_image() == 1) then
        do i = 1, num_images()
            print *, 'Value on image', i, 'is', a[i]
        end do
    end if

end program

Error: Coarrays disabled at (1), use '-fcoarray=' to enable|

您的程序使用了标准 Fortran 的一个特殊功能,称为 coarrays。它们用于现代并行计算。然而,计算物理学和气象学中使用的大多数传统并行程序都使用 MPI 来实现分布式并行。

在任何阶段学习数组都没有错,但它可能不是你现在应该学习的技能。目前还不是气象学数据分析最有用的技能。

使用 coarrays,程序的不同副本(“图像”)同时 运行 在计算机的不同 CPU 核心上,甚至在集群中的多个计算节点上。

integer :: a[*]

表示变量a存在于每个图像上,图像可以查看不同图像中的值并读取或更改它。

a[i]

表示要在图像编号i处使用a的值。

要将 Coarrays 与 Gfortran 一起使用,您可以使用 -fcoarray=single 将程序编译为(非常无用的)单图像程序,或者您必须安装一个名为 OpenCoarrays 的专用库,然后使用-fcoarray=lib 指向图书馆。