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.