0

我有一个非常基本的 Fortran 程序来尝试学习 MPI。我正在使用 Visual Studio 2019、MPICH2 和 Intel oneAPI Toolkit 编译此脚本。程序如下

program hello
implicit none 
include 'mpif.h'

integer :: rank, size, ierror, tag, status(MPI_STATUS_SIZE)

call MPI_INIT(ierror)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror)

print *, "node", rank, "says Hello World!"

call MPI_BARRIER(MPI_COMM_WORLD, ierror)

call MPI_FINALIZE(ierror)

! here

end program hello

该程序按预期编译和运行,产生输出

PS C:\Users\gf715\Documents\VS_testing\test\Debug> mpiexec -n 4 test.exe
 node           1 says Hello World
 node           2 says Hello World
 node           3 says Hello World
 node           0 says Hello World

但是,如果我stop在结束程序之前添加一条语句(我写了“这里”注释),代码仍然可以编译,但现在运行它时不会产生任何输出:

PS C:\Users\gf715\Documents\VS_testing\test\Debug> mpiexec -n 4 test.exe
PS C:\Users\gf715\Documents\VS_testing\test\Debug>

我不记得在使用 Intel oneAPI 工具包之前遇到过这个问题(我曾经使用相同的设置,但使用 Parallel Studio XE Cluster Edition,当我的许可证到期时我被迫更改)。为什么stop阻止任何输出?

4

1 回答 1

1

回答我自己的问题。这是由于计算机上有多个版本的英特尔编译器(请参阅https://community.intel.com/t5/Intel-Fortran-Compiler/Entry-Point-for-for-stop-core-quiet-Not-发现/td-p/1265058 )

我通过卸载旧版本并更新新编译器来解决这个问题,但似乎有更简单的方法。

于 2021-04-08T13:42:16.200 回答