Misc minor comments

Issue #8 resolved
Dan Bonachea created an issue

Title page: As we distribute the draft spec for comments it will useful to have some kind of draft version number in the title (and possibly page header/footer, if that's easy). Perhaps "Version 0.1 draft 5", etc? It will also become increasingly helpful to maintain some kind of change log in the document summarizing what's changed between drafts, to save people re-skimming the entire spec to find changes.

Ch1 Rank descriptions: "upcxx::myranks()" should probably be "upcxx::myrank()". Also Ch 9 still references the macros THREADS and MYTHREAD.

4.1 Dynamic memory allocation: Need more description on the semantics of allocate()

6.1.1: Does upcxx:barrier() imply upcxx:async_wait()?

6.1.2: Need more semantics for the collectives calls, eg arguments must be single-valued, can src/dst overlap, etc

7.2.1: "R.border(k, dir, shift) is equivalent to R.accrete(k, dir ) - R.bounding_box() + point<N>::direction(dir , shift -k)," This equation seems questionable. Why is bounding_box() required? Also, Rectdomain difference (rectdomain<N>.operator-()) results in a general domain<N>, but the return type of rectdomain<N>.border() is a rectdomain<N>, so these are not actually "equivalent" (there's at least a missing cast operator).

8.4: "UPC++ also provides syntax for indexing grids with N integers of type cint_t rather than point<N>s." This introductory section is a bit confusing as currently worded, since the actual syntax it refers to is not defined until following subsections. Perhaps reword to clarify there are two alternate indexing methods and forward reference to 8.4.1 and 8.4.2?

Comments (6)

  1. Yili Zheng

    Thanks for the comments and suggestions. We should fix them. I will take care of the first five items.

  2. Amir Kamil

    I'll look into the last two points. For 7.2.1, I'll point out that R != R.bounding_box() if R is not unit stride in all dimensions, but I'm not sure if that's relevant here. In fact, a cursory reading seems to indicate that R.accrete(k, dir) is invalid for a domain that is not unit stride in dimension |dir|. So I'll have to look into what exactly this operation does for non-unit stride domains.

  3. Amir Kamil

    Another comment:

    3.3: "The rank of a global pointer can be queried by its member function where()." What does this mean in the presence of process-shared memory?

  4. Log in to comment