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
指向图书馆。
我正在尝试 运行 遵循本书示例的 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
指向图书馆。