On Sep 11, 2008, at 2:38 PM, Eric Thibodeau wrote:

In short:

Which of the 3 options is the one known to be unstable in the following:

--enable-mpi-threads    Enable threads for MPI applications (default:
                        disabled)
--enable-progress-threads
Enable threads asynchronous communication progress
                        (default: disabled)
--with-threads          Set thread type (solaris / posix)

You shouldn't need to specify any of these.

In long (rationale):

Just to make sure we don't contradict each other, you're suggesting the use of 'listen_thread' but, at the same time I'm telling Prasanna to _disable_ threads the threads USE flag which translates into the following logic (in the package):

Heh; yes, it's a bit confusing -- I apologize.

The "threads" that I'm saying don't work is the MPI multi-threaded support (i.e., MPI_THREAD_MULTIPLE) and support for progress threads within MPI's progression engine.

What *does* work is a tiny threaded TCP listener for incoming connections. Since the processing for each TCP connection takes a little time, we found that for scalability reasons, it was good to have a tiny thread that does nothing but block on TCP accept(), get the connection, and then hand it off to the main back-end thread for processing. This allows our accept() rate to be quite high, even if the actual processing is slower. *This* is the "listen_thread" mode, and turns out to be quite necessary for running at scale because our initial wireup coordination occurs over TCP -- there's a flood of incoming TCP connections back to the starter. With the threaded TCP listener, the accept rate is high enough to not cause timeouts for the incoming TCP flood.

Hope that made sense...

--
Jeff Squyres
Cisco Systems

Reply via email to