diff --git a/src/projections/Tools/Overview/OverviewPanel.java b/src/projections/Tools/Overview/OverviewPanel.java index e5dad20a..a9606c71 100644 --- a/src/projections/Tools/Overview/OverviewPanel.java +++ b/src/projections/Tools/Overview/OverviewPanel.java @@ -41,7 +41,7 @@ class OverviewPanel extends ScalePanel.Child // idleData & mergedData (for supporting - utilization for now - // the other two data formats) - private int[][] idleDataNormalized; // [processor idx][interval] + private byte[][] idleDataNormalized; // [processor idx][interval] private int[][] utilizationDataNormalized; // [processor idx][interval] private int[][] colors; //The color per processor per interval @@ -89,15 +89,16 @@ public String getPointInfo(double time,double procs) int interval = (int)(t/intervalSize); long timedisplay = t+startTime; - if (interval >= entryData[p].length) { - return "some bug has occurred"; // strange bug. - } + if (mode == OverviewWindow.MODE_UTILIZATION) { return "Processor " + pe + ": Usage = " + utilizationDataNormalized[p][interval]+"%" + " IDLE = " + idleDataNormalized[p][interval]+"%" + " at "+U.humanReadableString(timedisplay)+" ("+timedisplay+" us). "; } else if(mode == OverviewWindow.MODE_EP) { + if (interval >= entryData[p].length) { + return "some bug has occurred"; // strange bug. + } if (entryData[p][interval] > 0) { return "Processor "+pe+": Usage = "+ utilizationDataNormalized[p][interval]+"%"+ @@ -329,6 +330,9 @@ protected void setRanges(SortedSet selectedPEs, long startTime, long en intervalSize = (int )trialintervalSize; + if (MainWindow.runObject[myRun].hasSumDetailData()) { + intervalSize = (int) MainWindow.runObject[myRun].getSumDetailIntervalSize(); + } startInterval = (int)(startTime/intervalSize); endInterval = (int)(endTime/intervalSize); @@ -342,55 +346,67 @@ protected void setRanges(SortedSet selectedPEs, long startTime, long en * for each interval */ protected void loadData(boolean saveImage) { - if (!MainWindow.runObject[myRun].hasLogData()) { - System.err.println("No log files are available."); - JOptionPane.showMessageDialog(null, "No log files are available."); - return; - } - this.saveImage = saveImage; - mode = OverviewWindow.MODE_EP; - - // Create a list of worker threads - LinkedList readyReaders = new LinkedList(); - - selectedPEs.size(); + if (MainWindow.runObject[myRun].hasLogData()) { + int numIntervals = endInterval - startInterval; + mode = OverviewWindow.MODE_EP; + + // Create a list of worker threads + LinkedList readyReaders = new LinkedList(); + + entryData = new int[selectedPEs.size()][numIntervals]; + int pIdx = 0; + float[][] idleData = new float[selectedPEs.size()][numIntervals]; + float[][] utilizationData = new float[selectedPEs.size()][numIntervals]; + for (Integer pe : selectedPEs) { + readyReaders.add(new ThreadedFileReader(pe, intervalSize, myRun, + startInterval, endInterval, entryData[pIdx], utilizationData[pIdx], idleData[pIdx])); + pIdx++; + } - int numIntervals = endInterval - startInterval; - - entryData = new int[selectedPEs.size()][numIntervals]; - float[][] idleData = new float[selectedPEs.size()][numIntervals]; - float[][] utilizationData = new float[selectedPEs.size()][numIntervals]; - - int pIdx=0; - - for(Integer pe : selectedPEs){ - readyReaders.add( new ThreadedFileReader(pe, intervalSize, myRun, - startInterval, endInterval, entryData[pIdx], utilizationData[pIdx], idleData[pIdx]) ); - pIdx++; - } - - // Pass this list of threads to a class that manages/runs the threads nicely - TimedProgressThreadExecutor threadManager = new TimedProgressThreadExecutor("Loading Overview in Parallel", readyReaders, this, true); - threadManager.runAll(); - - // For historical reasons, we use a utilization range of 0 to 100 - utilizationDataNormalized = new int[utilizationData.length][utilizationData[0].length]; - idleDataNormalized = new int[idleData.length][idleData[0].length]; - - for (int i=0; i processorList){ int numIntervals = intervalEnd - intervalStart + 1; - sumDetailData = new int[numIntervals][numEPs]; + sumDetailData_interval_EP = new int[numIntervals][numEPs]; + sumDetailData_PE_EP = new int[numPEs][numEPs]; + sumDetailData_PE_interval = new int[numPEs][numIntervals]; double[][] tempData; for(Integer curPe : processorList) { int ii = intervalStart; tempData = getData(curPe, TYPE_TIME); for(int i=0; i