Ok, I have an update to this issue. I believe there is an implementation difference of sched_yield between Linux and Solaris. If I change the sched_yield in opal_progress to be a usleep(500) then my program completes quite quickly. I have sent a few questions to a Solaris engineer and hopefully will get some useful information.

That being said, CT-6's implementation also used yield calls (note this actually is what sched_yield reduces down to in Solaris) and we did not see the same degradation issue as with Open MPI. I believe the reason is because CT-6's SM implementation is not calling CT-6's version of progress recursively and forcing all the unexpected to be read in before continuing. CT-6 also has a natural flow control in it's implementation (ie it has a fixed set fifo for eager messages.

I believe both of these characteristics lend CT-6 to not being completely killed by the yield differences.

--td


Li-Ta Lo wrote:

On Thu, 2007-08-30 at 12:45 -0400, terry.don...@sun.com wrote:
Li-Ta Lo wrote:

On Thu, 2007-08-30 at 12:25 -0400, terry.don...@sun.com wrote:


Li-Ta Lo wrote:

On Wed, 2007-08-29 at 14:06 -0400, Terry D. Dontje wrote:


hmmm, interesting since my version doesn't abort at all.

Some problem with fortran compiler/language binding? My C translation doesn't have any problem.

[ollie@exponential ~]$ mpirun -np 4 a.out 10
Target duration (seconds): 10.000000, #of msgs: 50331, usec per msg:
198.684707



Did you oversubscribe? I found np=10 on a 8 core system clogged things up sufficiently.

Yea, I used np 10 on a 2 proc, 2 hyper-thread system (total 4 threads).



Is this using Linux?



Yes.

Ollie


_______________________________________________
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel

Reply via email to