next up previous
Next: Gaussian Elimination Up: Sample Debugging Sessions Previous: Dictionary Search on

FFT on a Mesh

This debugging session with the MIMD message-passing version of the FFT on a mesh illustrates the use of dynamic attribute calculation and the difference that Ave's visual feedback makes. The program was written for 16 processors, with static data partitioning. At successive iterations, processors 8 units apart, 4 units apart, 2 units apart and 1 unit apart exchange their data values to do the transformation. The program produced incorrect results. Initially, the user modelled the behavior with Ariadne as follows:
? set proc = {0..15};
? ch exch = W @ R ;
? pch comm = exch onall proc;
? match fft = < comm^4 >;

proc is a set that contains the PIDs of the processors. exch defines a single message, and comm is a collection of 16 messages each being sent by one of the processors. The whole behavior consists of 4 phases, one causally following the other, where each phase consists of 16 messages being sent. The angular brackets in the match statement indicate that precedes should hold between successive phases. The initial behavioral description produced the following Ave feedback without the colored bars appearing at the bottom. Note that the display collapses the behavior at the p-chain level. But since the chain level description is not data-dependent, the number of partitions is 1 in all cases, and is not shown.

 
Figure: Ave feedbak in the FFT example.

Notice that in Ariadne, we do not have a way to specify the distances over which the communication should take place, or the receiver's PID at the chain level. This is not a limitation however, since once the match is done with a loose pattern definition, we can then compute the attributes of the matched events very easily.
? attach to exch {int distance = pid(W) - pid(R)};

In Ave, the attachment of attributes are handled in two ways: Ave can show the attributes in numerical form along the nodes, or it can do an attribute collapsing using colors. For instance, after the attributes are calculated, the attribute set is partitioned, with each partition getting a distinct color. Each uncollapsed node then gets colored by the color of the attribute. In case of collapsed nodes, the colored bar appears at the bottom of the node. The color scheme makes the grouping of related events readily obvious.

Note in this case, each phase of the pattern fft should have 16 bars all with the same color under them (all nodes who communicate in the i-th phase should be at a distance apart, where i = 0..3). However Ave produced the same color only for the phase that communicates with processors at a distance 8 from each other. For all other phases there were 2 nodes with a different color. This led us to the bug in the code segment which identifies the partner with whom to exchange the values. The user made an off-by-one error in the partner calculation, which resulted in erroneous data exchanges between some processors.



next up previous
Next: Gaussian Elimination Up: Sample Debugging Sessions Previous: Dictionary Search on



Joydip Kundu kundu@neweng.enet.dec.com