Skip to content

Commit

Permalink
cleaned up bus width calculation, added bw-per-pin plot
Browse files Browse the repository at this point in the history
  • Loading branch information
jowens committed Apr 23, 2024
1 parent 8573683 commit 6619503
Show file tree
Hide file tree
Showing 27 changed files with 205 additions and 181 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Data sourced from [Wikipedia's NVIDIA GPUs page](https://en.wikipedia.org/wiki/L

- Memory Bandwidth over Time [[html](plots/Memory Bandwidth over Time.html), [pdf](plots/Memory Bandwidth over Time.pdf)]
- Memory Bus Width over Time [[html](plots/Memory Bus Width over Time.html), [pdf](plots/Memory Bus Width over Time.pdf)]
- Memory Bandwidth per Pin over Time [[html](plots/Memory Bandwidth per Pin over Time.html), [pdf](plots/Memory Bandwidth per Pin over Time.pdf)]
- Processing Power over Time [[html](plots/Processing Power over Time.html), [pdf](plots/Processing Power over Time.pdf)]
- SM count over Time [[html](plots/SM count over Time.html), [pdf](plots/SM count over Time.pdf)]
- Shader count over Time [[html](plots/Shader count over Time.html), [pdf](plots/Shader count over Time.pdf)]
Expand Down
51 changes: 17 additions & 34 deletions nvperf.py
Original file line number Diff line number Diff line change
Expand Up @@ -376,15 +376,9 @@ def merge(df, dst, src, replaceNoWithNaN=False, delete=True):
# df["Core clock (MHz)"] = df["Core clock (MHz)"].astype(str).str.split(" ").str[0]
df["Core clock (MHz)"] = df["Core clock (MHz)"].str.extract(r"(\d+)")

df["Memory Bus width (bit)"] = (
df["Memory Bus width (bit)"].astype(str).str.split(" ").str[0]
)
df["Memory Bus width (bit)"] = (
df["Memory Bus width (bit)"].astype(str).str.split("/").str[0]
)
df["Memory Bus width (bit)"] = (
df["Memory Bus width (bit)"].astype(str).str.split(",").str[0]
)
# Simple treatment of bus width: just grab the first number
df["Memory Bus width (bit)"] = df["Memory Bus width (bit)"].apply(lambda x: str(x))
df["Memory Bus width (bit)"] = df["Memory Bus width (bit)"].str.extract(r"(\d+)")
# strip out bit width from combined column
df = merge(df, "Memory Bus type & width (bit)", "Memory Bus type & width")
df["bus"] = df["Memory Bus type & width (bit)"].str.extract(r"(\d+)-bit", expand=False)
Expand Down Expand Up @@ -492,6 +486,9 @@ def merge(df, dst, src, replaceNoWithNaN=False, delete=True):
df["Single-precision GFLOPS/mm2"] = pd.to_numeric(
df["Single-precision GFLOPS"], errors="coerce"
) / pd.to_numeric(df["Die size (mm2)"], errors="coerce")
df["Memory Bandwidth per Pin (GB/s)"] = pd.to_numeric(
df["Memory Bandwidth (GB/s)"], errors="coerce"
) / pd.to_numeric(df["Memory Bus width (bit)"], errors="coerce")

# remove references from end of model/transistor names
for col in ["Model", "Transistors (million)"]:
Expand All @@ -517,31 +514,6 @@ def merge(df, dst, src, replaceNoWithNaN=False, delete=True):
domain=["AMD", "NVIDIA", "Intel"], range=["#ff0000", "#76b900", "#0071c5"]
)

# ahmed:
bw_selection = alt.selection_point(fields=["Memory Bus type"])
bw_color = alt.condition(
bw_selection, alt.Color("Memory Bus type:N"), alt.value("lightgray")
)
##
bwx = (
alt.Chart(df)
.mark_point()
.encode(
x="Launch:T",
y=alt.Y(
"Memory Bandwidth (GB/s):Q",
scale=alt.Scale(type="log"),
),
# color='Memory Bus type',
color=bw_color,
shape="Vendor",
tooltip=["Model", "Memory Bus type", "Memory Bandwidth (GB/s)"],
)
.properties(width=1213, height=750)
.interactive()
.add_params(bw_selection)
)

config_default = {
"df": df,
"x": "Launch:T",
Expand Down Expand Up @@ -571,6 +543,7 @@ def merge(df, dst, src, replaceNoWithNaN=False, delete=True):
"tooltip": [
"Memory Bus type",
"Memory Bandwidth (GB/s)",
"Memory Bus width (bit)",
],
},
"bus": {
Expand All @@ -579,6 +552,16 @@ def merge(df, dst, src, replaceNoWithNaN=False, delete=True):
"color": "Memory Bus type:N",
"tooltip": ["Memory Bus type", "Memory Bus width (bit)"],
},
"bwpin": {
"title": "Memory Bandwidth per Pin over Time",
"y": "Memory Bandwidth per Pin (GB/s):Q",
"color": "Memory Bus type:N",
"tooltip": [
"Memory Bus type",
"Memory Bandwidth (GB/s)",
"Memory Bus width (bit)",
],
},
"pr": {
"title": "Processing Power over Time",
"df": pd.melt(
Expand Down
14 changes: 7 additions & 7 deletions plots/Arithmetic Intensity over Time.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/Arithmetic Intensity vs. Memory Bandwidth.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/Arithmetic Intensity vs. Peak Processing Power.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/Clock rate over Time.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/Die Size over Time.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/Feature size over Time.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/GFLOPS per Area vs. GFLOPS per Watt.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/GFLOPS per Dollar over Time.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/GFLOPS per Watt over Time.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/GFLOPS per Watt vs. Memory Bandwidth.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/GFLOPS per Watt vs. Peak Processing Power.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/Memory Bandwidth over Time.html

Large diffs are not rendered by default.

Binary file modified plots/Memory Bandwidth over Time.pdf
Binary file not shown.
40 changes: 40 additions & 0 deletions plots/Memory Bandwidth per Pin over Time.html

Large diffs are not rendered by default.

Binary file added plots/Memory Bandwidth per Pin over Time.pdf
Binary file not shown.
14 changes: 7 additions & 7 deletions plots/Memory Bus Width over Time.html

Large diffs are not rendered by default.

Binary file modified plots/Memory Bus Width over Time.pdf
Binary file not shown.
14 changes: 7 additions & 7 deletions plots/Power density over Time.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/Power over Time.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/Processing Power over Time.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/Release price over Time.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/SM count over Time.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/Shader count over Time.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/Transistor Count over Time.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions plots/Transistor density over Time.html

Large diffs are not rendered by default.

0 comments on commit 6619503

Please sign in to comment.