Skip to content

Commit 5ae1787

Browse files
authored
Allow custom time intervals in Time Profile with sumDetail (#127)
1 parent e96035b commit 5ae1787

File tree

2 files changed

+27
-18
lines changed

2 files changed

+27
-18
lines changed

src/projections/Tools/TimeProfile/TimeProfileWindow.java

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -270,26 +270,31 @@ private void generateLegend(boolean useShortenedNames){
270270

271271
public void showDialog() {
272272
if (dialog == null) {
273-
intervalPanel = new IntervalChooserPanel();
274-
if(MainWindow.runObject[myRun].hasLogFiles())
275-
dialog = new RangeDialog(this, "Select Range", intervalPanel, false);
276-
else //only has summary files
277-
dialog = new RangeDialog(this, "Select Range", intervalPanel, true);
278-
}
273+
if (MainWindow.runObject[myRun].hasLogFiles())
274+
intervalPanel = new IntervalChooserPanel();
275+
else // Intervals are fixed for the summary modes, so don't display choosable interval panel
276+
intervalPanel = null;
277+
dialog = new RangeDialog(this, "Select Range", intervalPanel, false);
278+
}
279+
279280
dialog.displayDialog();
280281
if (!dialog.isCancelled()){
281-
startInterval = (int)intervalPanel.getStartInterval();
282-
endInterval = (int)intervalPanel.getEndInterval();
283282
processorList = dialog.getSelectedProcessors();
284283
startTime = dialog.getStartTime();
285-
if(MainWindow.runObject[myRun].hasLogFiles()){
286-
intervalSize = intervalPanel.getIntervalSize();
287-
}
288-
else{//sum detail mode
289-
startInterval = 0;
290-
endInterval = (int) MainWindow.runObject[myRun].getSumDetailNumIntervals() - 1;
291-
intervalSize = (long) MainWindow.runObject[myRun].getSumDetailIntervalSize();
292-
}
284+
285+
if (MainWindow.runObject[myRun].hasLogFiles()) {
286+
intervalSize = intervalPanel.getIntervalSize();
287+
startInterval = (int)intervalPanel.getStartInterval();
288+
endInterval = (int)intervalPanel.getEndInterval();
289+
290+
} else { // sum detail mode
291+
intervalSize = (long) MainWindow.runObject[myRun].getSumDetailIntervalSize();
292+
startInterval = (int) (startTime / intervalSize);
293+
final long endTime = dialog.getEndTime();
294+
// For intervalSize of 1, endTime of 2 should give endInterval of 1 ([1,2)), endTime of 2.5 should give
295+
// endInterval of 2 ([2, 3)), so take ceil and subtract one
296+
endInterval = (int) Math.ceil(((double)endTime) / intervalSize) - 1;
297+
}
293298

294299
System.out.println("Props: intervalSize:"+intervalSize+"- startInterval:"+startInterval+"- endInterval:"+endInterval+"- startTime:" + startTime);
295300

@@ -352,7 +357,9 @@ else if( MainWindow.runObject[myRun].hasSumDetailFiles()) //Bilge
352357
{
353358
// Do serial file reading because all we have is the sum files
354359
//System.out.println("hasSumDetailFiles - LOAD DATA. numIntervals: " + numIntervals);
355-
MainWindow.runObject[myRun].LoadGraphData(intervalSize, 0, numIntervals-1, false, processorList);
360+
MainWindow.runObject[myRun].LoadGraphData(intervalSize, startInterval, endInterval, false,
361+
processorList);
362+
356363
int[][] sumDetailData = MainWindow.runObject[myRun].getSumDetailData();
357364

358365
for(int i=0;i<numIntervals;i++){

src/projections/analysis/IntervalData.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,13 @@ public void loadSumDetailIntervalData(long intervalSize, int intervalStart,
113113
sumDetailData = new int[numIntervals][numEPs];
114114
double[][] tempData;
115115
for(Integer curPe : processorList) {
116+
int ii = intervalStart;
116117
tempData = getData(curPe, TYPE_TIME);
117118
for(int i=0; i<numIntervals; i++){
118119
for(int e=0; e<numEPs; e++){
119-
sumDetailData[i][e] += tempData[e][i];
120+
sumDetailData[i][e] += tempData[e][ii];
120121
}
122+
ii++;
121123
}
122124
}
123125
}

0 commit comments

Comments
 (0)