UPC support
Arm® 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.