chapel-lang/chapel — pull request #144 by ronawho (2014-08-12 23:43:00+00:00)
Title: Use nemesis scheduler for qthreads and build with --enable-condwait-queue

For performance reasons we want to use the nemesis scheduler over the default
sherwood scheduler for qthreads. For single threaded and low task count
applications --enable-condwait-queue is needed for good performance. This
changes the default scheduler, builds with --enable-condwait-queue and removes
special code in our qthreads interface and in our qthreads performance testing
scripts that was used to test out this configuration without making it the
default for all other builds.

The other change was in the qthreads source itself to correctly set the number
of shepherds and workers per shepherd for single threaded schedulers (like
nemesis.) This is currently out for review with the qthreads team, but we want
to start testing now.

Note that there may be some deadlocks in testing temporarily. For a few tests
like domains/sungeun/assoc/stress.chpl we create tasks that increment a sync
var while the main task waits on the sync var to be a certain value. Those
tasks that are incrementing don't get to run because the main task never
yields. A fix for that is being worked on, but we want to start getting
testing going so we can switch to qthreads as our default tasking layer soon.