Почему оператор «stop» в Фортране не дает моей программе ничего выводить?
У меня есть очень простая программа на Фортране, чтобы попытаться изучить 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
Однако, если я добавлю инструкцию перед завершением программы (где я написал комментарий «здесь»), код все равно будет компилироваться, но теперь не выдаст никаких результатов, когда я его запустил:
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
предотвратить любой выход?
1 ответ
Отвечая на свой вопрос. Это связано с наличием на компьютере нескольких версий компилятора Intel (см. Https://community.intel.com/t5/Intel-Fortran-Compiler/Entry-Point-for-for-stop-core-quiet-Not- Найдено / td-p / 1265058)
Я исправил это, удалив старую версию и обновив новые компиляторы, но, похоже, есть более простые способы.