У меня проблема с Фортраном 90.
У меня есть определенный пользователем тип, и когда я вызываю одну из подпрограмм MPI, данные выглядят так, что они передаются по значению (а не по адресу, как я думал) Выходные аргументы не изменены. Кажется, это характерно для вызовов MPI. Я попробовал то же самое в простом тесте, и я могу изменить переданные значения в области вызова. Я не уверен, почему это так, потому что я думал, что Фортран всегда проходит по адресу. Есть идеи, что может происходить?
Просто чтобы прояснить, прокомментированный фрагмент показывает, как выполняются звонки. В первом вызове c%NSubDomains
является выходным аргументом и должен быть изменен в области вызова, но это не так. Когда я вызываю массив, а не член пользовательского типа, он работает в фрагменте без комментариев.
! ! This doesn't work output values aren't modified ??
! call MPI_Dims_create(c%NProcs,c%NDims,c%NSubDomains,iErr)
nsubs(:)=0
call MPI_Dims_create(c%NProcs,c%NDims,nsubs,iErr)
c%NSubDomains=nsubs