Added pbs directory in timings to capture my files that I've used to launch
batch jobs for timings on jaguar.

Added README to doc/timings and doc/timings/pbs directory.


git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15192 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Simplified a conditional in the verification check at the end of the prune pass
that looks for variables that are used outside of the blocks in which they are declared.  This conditional was not checking certain variables created in the lower iterators pass, but it turns out there is no need to exclude these.

git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15193 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Added chapel.ypp to and removed chapel.y from the Xcode project file


git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15194 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Greatly improved the leader/follower iterators for arrays distributed
by the BlockDist distribution by re-privatizing the domain after
executing the on-statement, and the array in the follower iterator.
Without re-privatizing, we end up referring to this.dom/this, which
refers to the domain/array on the locale that the leader iterator
starts in, not on the locale within the on-statement.

This is an unsatisfactory solution because it uses a primitive.  This
code should be easier to write (and one should definitely be able to
avoid primitives) because it is the basis of user-defined
distributions.  There are several open questions.  Can we ignore
privatization in user-defined distributions outside of their setup?
How can we re-privatize more easily, either transparently or simply?
Does the compiler need to do something special?  One idea is to
automatically insert re-privatization code in all methods of a
privatized objects.

This looks like it will improve the scaling performance of the HPCC
STREAM benchmark.  So far, I'm seeing much better scaling even at only
64 locales with 3 tasks per locale (380.10 GB/s vs. 355.28 GB/s).
This change decreases the number of remote gets for each remote thread
on each iteration of the STREAM benchmark from 60 to 20 (about).  Many
of the remaining remote gets appear to be in the iterator class.

Note, I believe a similar improvement may be able to be made to the
domain leader iterator, but I have not yet investigated this.

Improved compiler handling of PRIM_GET_PRIV_CLASS.  Where the type
referred to in this primitive is widened, the compiler now only
attempts to widen it if it is not already wide.  This change was
necessary because this primitive is now used in more places in the
code.


git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15195 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Changed the bool variable doneCreatingLocales into a single bool


git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15196 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Cleaned up re-privatization code so that 'this' is the only object
that is re-privatized.  Made it more uniform so that the compiler
could easily insert this code.  However, the main question now is in
which functions should it be inserted?  A simple approach is to just
re-privatize 'this' in leaders that have on-statements and do so
within the on-statement, and also re-privatize 'this' in the
respective followers.  That would duplicate what I've done in this
distribution's leader and follower.


git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15197 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Add some timings for the HPCC RA benchmark

These were built from a compiler last updated on 1/19/2009. The timings measure
the test test/studies/hpcc/2008/ra.chpl built with GASNet version 1.10.0 and
with GASNet 1.12.0.

With GASNet 1.10.0, there were significantly fewer crashes, and no timeouts.

In most cases, performance was slightly better using version 1.12.0, which is
the opposite of what was expected.


git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15198 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
reverted doneCreatingLocales to bool to avoid extra remote thread invocations


git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15199 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Updates to REGRESSIONS based on last several days

Nothing major here...

+ removed some -opts tests that I think were fixed by Steve's distribution work
  and/or some of Sam's changes
- noted performance failures due to /tmp filling up, which should be fixed
  tomorrow
+ noted gdb tests passing on xt-cle, presumably due to move to chap0x servers
- noted another timeout instance
* removed mention of x1



git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15200 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Snapshot of distributed associative domain/array exploration





git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15201 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Updated snapshot for user-defined associative domains/arrays

I fixed a deadlock issue that I was running into previously
on GASNet runs but unable to debug.  It turns out that I was
using writeln() calls and on clauses to implement the global
domain's writeThis() method in order to have each local
domain class write out the indices it owned.  This resulted
in various problems -- deadlock, seg faults, and C level
I/O errors.  This checkin works around these issues in an
unsatisfying manner, but permits me to make forward progress.
I need to think more about how we might address these issues
in the longer-term.



git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15202 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Check in some tutorial examples

These are my tutorial examples that I currently feel are up to release
quality. I intend to move them to a subdirectory of the test/release/examples/
directory after they are reviewed and after a few more are finished.


git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15203 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Added compiler support to re-privatize privatized objects that are
stored in fields when they are accessed via PRIM_GET_MEMBER_VALUE.
This has the effect of re-privatizing to the same degree that I was
doing by inserting primitives and undesirable code in the modules.
Cleaned up the module code as a result.  The net effect is that the
distribution now looks almost identical to how it looked before.

In the compiler, added a new flag PRIVATIZED_CLASS that marks the
function _supportsPrivatization in the ChapelArray module.  This flag
is then added to all class types that support privatization if
privatization is enabled.  Then the compiler uses this to re-privatize
objects when they are accessed from fields.

The next step, as surmised by Brad, is to actually store the
privatized ID in the field and then re-privatize from that.  That
should eliminate one remote access per re-privatization.

Fixed a few bugs in privatization in which domains and distributions
were not fully replicated or re-replicated when changes occurred.
There are still issues, but this keeps all current tests working.
With this re-privatization work, we end up relying on privatization
more, making it more important that it is correct while also helping
with performance overall.

The main improvement to the modules is that we re-replicate (via a new
distributed domain/array function called reprivatize) when we assign
new values to a domain.

A second improvement is that the distribution field tasksPerLoc is
replicated in the replicated distributions.  However, if it is
changed, it currently is not re-replicated.

Also added a field pid to the distributed privatized array class.
This is similar to the pid field in the distributed domain class.  We
now rely on this field being set to contain the privatized object id
so that we can re-privatize.


git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15204 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Fixed use of C errno reportage

Our calls to the primitive get_errno were embedded in the middle of
a halt state, causing the C errno variable to get reset to 0 due to
successful printfs and such before making the call.  Hoisted these
calls into the top of the conditional in which the error condition
is caught in order to capture the string and then use it in the halt
statement.  For the case I ran into, this caused the errno message
to correctly change from "Success" to "Bad file handle".  This
should hopefully help with the other cases as well.





git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15205 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Updating REGRESSIONS based on last night's runs

+ removed failures due to file system being full
- added a few thread-spawning errors to the linux regressions -- not sure whether
  these were caused by the move to my machine (and permissions fixes) or something
  else
- a number of pgi tests failed due to a missing float.h header file, possibly due
  to the timing of the test runs compared to the update of our copy of the compiler?



git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15206 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Improved support for comm diagnostics and debugging

Removed #ifdef disabling of comm diagnostics and debugging.  These are
now on by default if they are turned on in a Chapel program.  Before,
they had to be turned on in the runtime and the Chapel program.  I
don't believe that they will add much overhead if they are not used.

Removed old support for _startCommDiagnosis() and _stopCommDiagnosis().

This is now replaced by startVerboseComm() and stopVerboseComm().
When these are enabled, we'll print out a message whenever a remote
get, remote put, remote fork, or remote non-blocking fork occurs.

Also added functions startCommDiagnostics() and stopCommDiagnostics().
These are used to count remote gets, remote puts, remote forks, and
non-blocking remote forks.  The function getCommDiagnostics() returns
a local array declared over LocaleSpace with 4-tuple elements that
correspond to the number of remote gets, remote puts, remote forks,
and remote non-blocking forks that are encountered on each locale.

Added a simplified stream benchmark test case that uses comm
diagnostics to capture the current number of comm events to execute
stream on 2 locales with 1 task per locale to make sure that changes
to the block distribution do not make matters worse.

Note that comm diagnostics is not yet thread safe.


git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15207 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
made comm diagnostics thread safe

This means that puts, gets, and forks can be issued from different
threads at the same time and they will all be counted.  However, note
that startCommDiagnostics()/stopCommDiagnostics() and
startVerboseComm()/stopVerboseComm() should always be issued by a
single thread.  They apply to the global state of the program; thus if
one thread calls startVerboseComm(), all threads enter verbose mode.


git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15208 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
refocused and improved re-privatization optimization

Restricted re-privatization to fields in iterator classes because
regular classes and records should already refer to the privatized
object via its ID.  The iterator class runs into trouble because it is
created by the compiler and can thus directly access array and domain
classes, rather than array and domain wrapper records.

Changed the re-privatization optimization so that it works by
identifying privatized object fields in iterator classes, and then
replacing these fields by the integral private ID.  This removes extra
remote gets during re-privatization because the private ID no longer
has to be accessed from a privatized object class.

Reduced expected number of gets in streamCommCheck test and added
tasksPerLocale configuration constant for experimentation purposes.

The net effect of this check-in is to reduce by 3 the number of remote
gets (from 19 to 16) counted in the streamCommCheck benchmark.


git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15209 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
added a test case of "remote value forwarding"

Added a test of using a value in an on clause.  This test makes sure
that a compiler optimization fires by using the comm diagnostics to
make sure there are 0 remote gets.

I'd like to rename the optReadOnlyRefArgs optimization to remote value
forwarding because this is what the optimization aims to do.  That it
currently keys off of reference arguments is indicative more of the
current implementation.


git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15210 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Changing test_refine to use maxThreads=1

I think that the issues that this test was added to exhibit have
been fixed and the precision issues are one of our main inconsistently
failing issues, so I've dialed the maxThreads setting down to 1
which seems to permit execution and should remove the numerical
instability.



git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@15211 3a8e244f-b0f2-452b-bcba-4c88e055c3ca