UPC support

Linaro DDT supports the Cray UPC compiler.

When debugging UPC applications there are a few changes in the user interface:

  • Processes are identified as UPC Threads. This is purely a terminology change for consistency with the UPC language terminology. UPC Threads have identical behavior to that of separate processes. For example, groups, process control, and cross-process data comparison apply across UPC Threads.

  • The type qualifier shared is given for shared arrays or pointers to shared.

  • Shared pointers are printed as a triple (address, thread, phase). For indefinitely blocked pointers the phase is omitted.

  • Referencing shared items yield a shared pointer, and pointer arithmetic can be performed on shared pointers.

  • Dereferencing a shared pointer (for example, dereferencing *(&x[n] + 1])) correctly evaluates and fetches remote data where required.

  • Values in shared arrays are not automatically compared across processes: the value of x[i] is by definition identical across all processes. It is not possible to identify pending read/write to remote data. Non-shared data types such as local data or local array elements will still be compared automatically.

  • Distributed arrays are handled implicitly by the debugger. There is no need to use the explicit distributed dimensions feature in the Multi-Dimensional Array Viewer.

All other components are identical to debugging any multi-process code.