Sorry for the delay in replying - many of us were at SC last week. 

Admittedly, I'm looking at your code on a PDA, so I might be missing some 
things. But I have 2 q's:

1 your send routine doesn't seem to protect from sending to yourself. Correct?

2 you're not using nonblocking sends, which, if I understand your code right, 
can lead to deadlock. Right?  Eg proc A sends to proc b and blocks until b 
receives. But b is blocking waiting for it's send completion, etc. 

I think with your random destinations (which may even be yourself, in which 
case the blocking send will never complete because you didn't prepost a 
nomblocking receive) and blocking sends, you can end up with deadlock. 

Sent from my PDA. No type good. 

On Nov 16, 2010, at 5:21 PM, Sébastien Boisvert 
<sebastien.boisver...@ulaval.ca> wrote:

> Dear awesome community,
> 
> 
> Over the last months, I closely followed the evolution of bug 2043,
> entitled 'sm BTL hang with GCC 4.4.x'.
> 
> https://svn.open-mpi.org/trac/ompi/ticket/2043
> 
> The reason is that I am developping an MPI-based software, and I use
> Open-MPI as it is the only implementation I am aware of that send
> messages eagerly (powerful feature, that is).
> 
> http://denovoassembler.sourceforge.net/
> 
> I believe that this very pesky bug remains in Open-MPI 1.4.3, and
> enclosed to this communication are scientific proofs of my claim, or at
> least I think they are ;).
> 
> 
> Each byte transfer layer has its default limit to send eagerly a
> message. With shared memory (sm), the value is 4096 bytes. At least it
> is according to ompi_info.
> 
> 
> To verify this limit, I implemented a very simple test. The source code
> is test4096.cpp, which basically just send a single message of 4096
> bytes from a rank to another (rank 1 to 0).
> 
> The test was conclusive: the limit is 4096 bytes (see
> mpirun-np-2-Simple.txt).
> 
> 
> 
> Then, I implemented a simple program (103 lines) that makes Open-MPI
> 1.4.3 hang. The code is in make-it-hang.cpp. At each iteration, each
> rank send a message to a randomly-selected destination. A rank polls for
> new messages with MPI_Iprobe. Each rank prints the current time at each
> second during 30 seconds. Using this simple code, I ran 4 test cases,
> each with a different outcome (use the Makefile if you want to reproduce
> the bug).
> 
> Before I describe these cases, I will describe the testing hardware. 
> 
> I use a computer with 32 x86_64 cores (see cat-proc-cpuinfo.txt.gz). 
> The computer has 128 GB of physical memory (see
> cat-proc-meminfo.txt.gz).
> It runs Fedora Core 11 with Linux 2.6.30.10-105.2.23.fc11.x86_64 (see
> dmesg.txt.gz & uname.txt).
> Default kernel parameters are utilized at runtime (see
> sudo-sysctl-a.txt.gz).
> 
> The C++ compiler is g++ (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2) (see g
> ++--version.txt).
> 
> 
> I compiled Open-MPI 1.4.3 myself (see config.out.gz, make.out.gz,
> make-install.out.gz).
> Finally, I use Open-MPI 1.4.3 with defaults (see ompi_info.txt.gz).
> 
> 
> 
> 
> Now I can describe the cases.
> 
> 
> Case 1: 30 MPI ranks, message size is 4096 bytes
> 
> File: mpirun-np-30-Program-4096.txt
> Outcome: It hangs -- I killed the poor thing after 30 seconds or so.
> 
> 
> 
> 
> Case 2: 30 MPI ranks, message size is 1 byte
> 
> File: mpirun-np-30-Program-1.txt.gz
> Outcome: It runs just fine.
> 
> 
> 
> 
> Case 3: 2 MPI ranks, message size is 4096 bytes
> 
> File: mpirun-np-2-Program-4096.txt
> Outcome: It hangs -- I killed the poor thing after 30 seconds or so.
> 
> 
> 
> 
> Case 4: 30 MPI ranks, message size if 4096 bytes, shared memory is
> disabled
> 
> File: mpirun-mca-btl-^sm-np-30-Program-4096.txt.gz
> Outcome: It runs just fine.
> 
> 
> 
> 
> 
> A backtrace of the processes in Case 1 is in gdb-bt.txt.gz.
> 
> 
> 
> 
> Thank you !
> 
> <test4096.cpp>
> <mpirun-np-2-Simple.txt>
> <make-it-hang.cpp>
> <Makefile>
> <cat-proc-cpuinfo.txt.gz>
> <cat-proc-meminfo.txt.gz>
> <dmesg.txt.gz>
> <uname.txt>
> <sudo-sysctl-a.txt.gz>
> <g++--version.txt>
> <config.out.gz>
> <make.out.gz>
> <make-install.out.gz>
> <ompi_info.txt.gz>
> <mpirun-np-30-Program-4096.txt>
> <mpirun-np-30-Program-1.txt.gz>
> <mpirun-np-2-Program-4096.txt>
> <mpirun-mca-btl-^sm-np-30-Program-4096.txt.gz>
> <gdb-bt.txt.gz>
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel

Reply via email to