charmplusplus / projections

Performance Analysis Tool for Charm++
Apache License 2.0
5 stars 3 forks source link

Message size histogram omits some counts entirely #5

Closed PhilMiller closed 10 years ago

PhilMiller commented 10 years ago

Original issue: https://charm.cs.illinois.edu/redmine/issues/386


When I load a coarse-resolution histogram (200 bins, 100 bytes each) that covers my entire run's set of message sizes, all of the counts are graphed correctly. However, if I set some finer resolutions, some of the data is omitted from the subsequent display entirely. This could be extremely misleading!

With the attached log, a setting of 105 bins, 50 bytes wide, and starting bin size 1000 renders the complete data set. Halving the width and doubling the bin count (210 bins, 25 bytes each) truncates the data above the midpoint of the display. If I further refine the requested display (e.g. 700 bins, 16 bytes wide), nearly all of the data are apparently discarded - I'm left with just three bars out of the dozens I expected.

PhilMiller commented 5 years ago

Original date: 2013-12-29 02:03:21


Attach logs

PhilMiller commented 5 years ago

Original date: 2013-12-29 02:07:26


I tried looking through the source of HistogramWindow, GenericGraphWindow, Graph, ThreadedFileReader, and BinDialogPanel for the root of the problem, but nothing jumped out at me. So, assistance would be appreciated.

pplimport commented 5 years ago

Original author: Lukasz Wesolowski Original date: 2014-01-03 23:06:49


The bug is in HistogramWindow::calcDisplayData, which selects which bin counts to display for both message size and EM execution time histogram plots. j(below) is bounded using the variable timeNumBins, which is the number of requested bins for the histogram of entry method times. Instead, two different bounding values need to be used, depending on the value of i. i = 0 corresponds to the EM time plot and i = 1 corresponds to message size plot. For the latter, the bound is msgNumBins.

Please fix the bug accordingly and close this issue.

public void calcDisplayData()
    {
        for(int i=0; i<HistogramWindow.NUM_TYPES; i++)
        {
            for(int j=0; j<timeNumBins+1; j++)
            {
                for(int m=0; m<numEPs; m++)
                {
                    if(display_mask[m])
                        counts_display[i][j][m] = counts[i][j][m];
                    else
                        counts_display[i][j][m] = 0;
                }
            }
        }
    }
pplimport commented 5 years ago

Original author: Lukasz Wesolowski Original date: 2014-01-10 18:36:36


I fixed the bug and pushed the changes.

PhilMiller commented 5 years ago

Original date: 2014-01-10 18:40:47


Works, thanks.