‘All’ Does Not Always Mean ‘All’
When you use stepping commands, TotalView determines the scope of what runs and what stops by looking at the TOI. This section looks at the differences in behavior when you use the a (all) arena specifier. The following table describes what runs when you use this arena:
Specifier | Specifies |
aC | All threads. |
aS | All threads. |
aW | All threads in all workers groups. |
aL | All threads. Every thread is a member of a control group and a member of a share group and a member of a lockstep group. Consequently, three of these definitions mean “all threads.” |
The following are some combinations:
f aC dgo
Runs everything. If you’re using the dgo command, everything after the a is ignored: a/aPizza/17.2, ac, aS, and aL do the same thing. TotalView runs everything.
f aC duntil
While everything runs, TotalView must wait until something reaches a goal. It really isn’t obvious what this focus is. Since C is a process group, you might guess that all processes run until at least one thread in every participating process arrives at a goal. The reality is that since this goal must reside in the current share group, this command completes as soon as all processes in the TOI share group have at least one thread at the goal. Processes in other control groups run freely until this happens.
The TOI determines the goal. If there are other control groups, they do not participate in the goal.
f aS duntil
This command does the same thing as the f aC duntil command because the goals for f aC duntil and f aS duntil are the same, and the processes that are in this scope are identical.
Although more than one share group can exist in a control group, these other share groups do not participate in the goal.
f aL duntil
Although everything will run, it is not clear what should occur. L is a thread group, so you might expect that the duntil command will wait until all threads in all lockstep groups arrive at the goal. Instead, TotalView defines the set of threads that it allows to run to a goal as just those threads in the TOI’s lockstep group. Although there are other lockstep groups, these lockstep groups do not participate in the goal. So, while the TOI’s lockstep threads are progressing towards their goal, all threads that were previously stopped run freely.
f aW duntil
Everything runs. TotalView waits until all members of the TOI workers group arrive at the goal.
Two broad distinctions between process and thread group behavior exist:
• When the focus is on a process group, TotalView waits until just one thread from each participating process arrives at the goal. The other threads just run.
When focus is on a thread group, every participating thread must arrive at the goal.
• When the focus is on a process group, TotalView steps a thread over the goal breakpoint and continues the process if it isn’t the right thread.
When the focus is on a thread group, TotalView holds a thread even if it isn’t the right thread. It also continues the rest of the process.
If your system does not support
asynchronous thread control, TotalView treats thread specifiers as if they were process specifiers.
With this in mind, f aL dstep does not step all threads. Instead, it steps only the threads in the TOI’s lockstep group. All other threads run freely until the stepping process for these lockstep threads completes.