[FLASH-USERS] Fatal error in MPI_Address

Klaus Weide klaus at flash.uchicago.edu
Wed Oct 11 13:16:18 EDT 2017


On Tue, 10 Oct 2017, Dinesh Kandel wrote:

> The solution suggested by Cory worked. I was able to run Flash 4 as:
> ./flash4
> 
> This produces series of output table numbers. But, at the end it returns me
> an error:
> 
> Fatal error in MPI_Address: Invalid argument, error stack:
> 
> MPI_Address(285): An address does not fit into a Fortran INTEGER.  Use
> MPI_Get_address instead
> 
> [unset]: write_line error; fd=-1 buf=:cmd=abort exitcode=402713612
> 
> :
> 
> system msg for write_line failure : Bad file descriptor
> 
> 
> Could anyone let me know how to fix this?


This fatal error occurs at the very end of a FLASH run, when FLASH is 
trying to generate the second of the Timers summaries that usually are 
written at the end of a log file. All computations will have been done by 
that point, and all output files should have been written.

The fix would involve only a few changes in

  subroutine tmr_broadcastRootTimers

in the source file 

  source/monitors/Timers/TimersMain/MPINative/Timers_getSummary.F90 :

* change declaration of the 'offsets' array from

     integer :: offsets(5)

  to

     integer(kind=MPI_ADDRESS_KIND) :: offsets(5)

* change MPI_ADDRESS to MPI_Get_Address (several occurrences);

* change MPI_TYPE_STRUCT to MPI_TYPE_CREATE_STRUCT (once).

That should work for MPI-2 (and later), but would break compatibility with 
MPI-1.




> Note that when I run flash using mpirun as: mpirun -np 2 ./flash4, I get
> the following error:
> 
> Fatal error in MPI_Init: Other MPI error, error stack:

That appears to be a problem related to your MPI installation(s), 
difficult to analyze remotely.


Klaus



More information about the flash-users mailing list