The Global Arrays (GA) toolkit provides a shared memory style programming environment in the context of distributed array data structures (called “global arrays”). From the user perspective, a global array can be used as if it was stored in shared memory. All details of the data distribution, addressing, and data access are encapsulated in the global array objects. Information about the actual data distribution and locality can be easily obtained and taken advantage of whenever data locality is important. The primary target architectures for which GA was developed are massively-parallel distributed-memory and scalable shared-memory systems.
TotalView supports Global Arrays on the Intel IA-64 platform. Debug a Global Arrays program in basically the same way that you debug any other multi-process program. The one difference is that you use the
Tools > Global Arrays command to display information about your global data.
Within a Variable Window, the commands that operate on a local array, such as slicing, filtering, obtaining statistics, and visualization, also operate on global arrays.
The command used to start TotalView depends on your operating system. For example, the following command starts TotalView on a program invoked using
prun using three processes:
Before your program starts parallel execution, a Question dialog launches so you can stop the job to set breakpoints or inspect the program before it begins execution
After your program hits a breakpoint, use the Tools > Global Arrays command to begin inspecting your program’s global arrays. TotalView displays the following window.
The arrays named in this window are displayed using their C and Fortran type names. Diving on the line that contains the type definition displays Variable Windows that contain information about that array.
After TotalView displays this information, you can use other standard commands and operations on the array. For example, you can use the slice and filter operations and the commands that visualize, obtain statistics, and show the nodes from which the data was obtained.
If you inadvertently dive on a global array variable from the Process Window, TotalView does not know that it is a component of a global array. If, however, you do dive on the variable, you can cast the variable into a global array using either
$ga for a C Language cast or
$GA for a Fortran cast.