From: Gary Funck (gary_at_intrepid_dot_com)
Date: Fri Jul 17 2009 - 13:54:22 PDT
On 07/17/09 12:25:20, Gary Funck wrote:
> FYI. I was bit quick on the draw with that example.
> It has "issues" that relate to array indexing.
> More on that later.
Take 2.  See attached.
The issue with the previous version is that for the
declared shared arrays, it was using UPC's normal
thread-distributed array indexing, and that would lead to
an incorrect implementation.
This version assumes that indexing into 'a' is linear
on the thread where 'a' (the shared vector of pointers
to shared vectors of ints) was allocated, and that each
vector of ints is indexed in a linear fashion on the thread
where the vector is allocated.  In this simple example,
everything is allocated on thread 0, but we could have
chosen to allocate each vector on a different thread.
This version differs only in the declaration of 'a':
    typedef shared [] int *vec_t;
    typedef shared [] vec_t *array_t;
    shared array_t a;
where '[]' specifies an indefinite block size.