Skip to content

Commit f35fc8d

Browse files
authored
fix crash in frequency benchmark table rendering when mismatch in core counts (#407)
Signed-off-by: Harper, Jason M <[email protected]>
1 parent d8ca010 commit f35fc8d

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

internal/report/table_defs.go

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2077,6 +2077,14 @@ func frequencyBenchmarkTableValues(outputs map[string]script.ScriptOutput) []Fie
20772077
if len(scalarIaddFreqs) < len(specSSEFreqs) {
20782078
specSSEFreqs = specSSEFreqs[:len(scalarIaddFreqs)]
20792079
}
2080+
// pad the spec frequencies with the last value if they are shorter than the scalar_iadd frequencies
2081+
// this can happen when the first die has fewer cores than other dies
2082+
if len(specSSEFreqs) < len(scalarIaddFreqs) {
2083+
diff := len(scalarIaddFreqs) - len(specSSEFreqs)
2084+
for range diff {
2085+
specSSEFreqs = append(specSSEFreqs, specSSEFreqs[len(specSSEFreqs)-1])
2086+
}
2087+
}
20802088
}
20812089
// create the fields
20822090
fields := []Field{
@@ -2107,16 +2115,32 @@ func frequencyBenchmarkTableValues(outputs map[string]script.ScriptOutput) []Fie
21072115
for i := range scalarIaddFreqs { // scalarIaddFreqs is required
21082116
fields[coresIdx].Values = append(fields[coresIdx].Values, fmt.Sprintf("%d", i+1))
21092117
if specSSEFieldIdx > 0 {
2110-
fields[specSSEFieldIdx].Values = append(fields[specSSEFieldIdx].Values, specSSEFreqs[i])
2118+
if len(specSSEFreqs) > i {
2119+
fields[specSSEFieldIdx].Values = append(fields[specSSEFieldIdx].Values, specSSEFreqs[i])
2120+
} else {
2121+
fields[specSSEFieldIdx].Values = append(fields[specSSEFieldIdx].Values, "")
2122+
}
21112123
}
21122124
if scalarIaddFieldIdx > 0 {
2113-
fields[scalarIaddFieldIdx].Values = append(fields[scalarIaddFieldIdx].Values, fmt.Sprintf("%.1f", scalarIaddFreqs[i]))
2125+
if len(scalarIaddFreqs) > i {
2126+
fields[scalarIaddFieldIdx].Values = append(fields[scalarIaddFieldIdx].Values, fmt.Sprintf("%.1f", scalarIaddFreqs[i]))
2127+
} else {
2128+
fields[scalarIaddFieldIdx].Values = append(fields[scalarIaddFieldIdx].Values, "")
2129+
}
21142130
}
21152131
if avx2FieldIdx > 0 {
2116-
fields[avx2FieldIdx].Values = append(fields[avx2FieldIdx].Values, fmt.Sprintf("%.1f", avx256FmaFreqs[i]))
2132+
if len(avx256FmaFreqs) > i {
2133+
fields[avx2FieldIdx].Values = append(fields[avx2FieldIdx].Values, fmt.Sprintf("%.1f", avx256FmaFreqs[i]))
2134+
} else {
2135+
fields[avx2FieldIdx].Values = append(fields[avx2FieldIdx].Values, "")
2136+
}
21172137
}
21182138
if avx512FieldIdx > 0 {
2119-
fields[avx512FieldIdx].Values = append(fields[avx512FieldIdx].Values, fmt.Sprintf("%.1f", avx512FmaFreqs[i]))
2139+
if len(avx512FmaFreqs) > i {
2140+
fields[avx512FieldIdx].Values = append(fields[avx512FieldIdx].Values, fmt.Sprintf("%.1f", avx512FmaFreqs[i]))
2141+
} else {
2142+
fields[avx512FieldIdx].Values = append(fields[avx512FieldIdx].Values, "")
2143+
}
21202144
}
21212145
}
21222146
return fields

0 commit comments

Comments
 (0)