Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Windows: MPI_Allreduce() crashes when using MPI_DOUBLE_PRECISION
From: hi (hiralsmaillist_at_[hidden])
Date: 2011-05-10 05:30:39


Hi Jeff,

> You didn't answer my prior questions. :-)
I am observing this crash using MPI_ALLREDUCE() in test program; and
which does not have any memory corruption issue. ;)

> I ran your test program with -np 2 and -np 4 and it seemed to work ok.
Can you please let me know what environment (including os, compilers)
are you using?

I am able to reproduce the crash using attached simplified test
program with 5 element array.
Please note that these experiments I am doing on Windows7 using
msys/mingw console; see attached makefile for more information.

When running this program as "C:\>mpirun mar_f_dp2.exe" it works fine;
but when running it as "C:\>mpirun -np 2 mar_f_dp2.exe" it generates
following error on console...

C:\>mpirun -np 2 mar_f_dp2.exe
           0
           0
           0
 size= 2 , rank= 0
 start --
           0
           0
           0
 size= 2 , rank= 1
 start --
forrtl: severe (157): Program Exception - access violation
Image PC Routine Line Source
[vibgyor:09168] [[28311,0],0]-[[28311,1],0] mca_oob_tcp_msg_recv:
readv failed: Unknown error (108)
--------------------------------------------------------------------------
WARNING: A process refused to die!

Host: vibgyor
PID: 512

This process may still be running and/or consuming resources.

--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun has exited due to process rank 0 with PID 476 on
node vibgyor exiting improperly. There are two reasons this could occur:

1. this process did not call "init" before exiting, but others in
the job did. This can cause a job to hang indefinitely while it waits
for all processes to call "init". By rule, if one process calls "init",
then ALL processes must call "init" prior to termination.

2. this process called "init", but exited without calling "finalize".
By rule, all processes that call "init" MUST call "finalize" prior to
exiting or it will be considered an "abnormal termination"

This may have caused other processes in the application to be
terminated by signals sent by mpirun (as reported here).
--------------------------------------------------------------------------

Another observation I have with attached test program is that it
crashes in MPI_Finilize() on running "C:\>mpirun mar_f_dp2.exe" if we
un-comment following lines (lines 27 and 35)...

write(*,*) "start --, rcvbuf=", rcvbuf
...
write(*,*) "end --, rcvbuf=", rcvbuf

Thank you in advance.
-Hiral



  • application/octet-stream attachment: makefile