init
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
4k_input.mkv
|
||||
720p_input.mkv
|
||||
1080p_input.mkv
|
BIN
9950x AVX-512 Off vs 9950x AVX-512 On, 1080p, SVT-AV1.png
Normal file
After Width: | Height: | Size: 327 KiB |
BIN
9950x AVX-512 Off vs 9950x AVX-512 On, 1080p, x265.png
Normal file
After Width: | Height: | Size: 323 KiB |
BIN
9950x AVX-512 Off vs 9950x AVX-512 On, 4k, SVT-AV1.png
Normal file
After Width: | Height: | Size: 321 KiB |
BIN
9950x AVX-512 Off vs 9950x AVX-512 On, 4k, x265.png
Normal file
After Width: | Height: | Size: 320 KiB |
BIN
9950x AVX-512 Off vs 9950x AVX-512 On, 720p, SVT-AV1.png
Normal file
After Width: | Height: | Size: 334 KiB |
BIN
9950x AVX-512 Off vs 9950x AVX-512 On, 720p, x265.png
Normal file
After Width: | Height: | Size: 320 KiB |
After Width: | Height: | Size: 734 KiB |
BIN
i7-14700f vs 9950x AVX-512 On, 1080p, SVT-AV1.png
Normal file
After Width: | Height: | Size: 320 KiB |
BIN
i7-14700f vs 9950x AVX-512 On, 1080p, x265.png
Normal file
After Width: | Height: | Size: 320 KiB |
BIN
i7-14700f vs 9950x AVX-512 On, 4k, SVT-AV1.png
Normal file
After Width: | Height: | Size: 315 KiB |
BIN
i7-14700f vs 9950x AVX-512 On, 4k, x265.png
Normal file
After Width: | Height: | Size: 316 KiB |
BIN
i7-14700f vs 9950x AVX-512 On, 720p, SVT-AV1.png
Normal file
After Width: | Height: | Size: 310 KiB |
BIN
i7-14700f vs 9950x AVX-512 On, 720p, x265.png
Normal file
After Width: | Height: | Size: 310 KiB |
95
main_14700f.py
Normal file
@ -0,0 +1,95 @@
|
||||
import subprocess
|
||||
import os
|
||||
import time
|
||||
import re
|
||||
import csv
|
||||
|
||||
temp_cmd = ["sensors", "coretemp-isa-0000"]
|
||||
power_cmd = ["turbostat", "--quiet", "--hide", "CorWatt,Die,Core,CPU,Busy%,Bzy_MHz,TSC_MHz,IPC,IRQ,SMI,POLL,C1,C2,C3,POLL%,C1%,C2%,C3%,C1ACPI,C2ACPI,C3ACPI,C1ACPI%,C2ACPI%,C3ACPI%,CPU%c1,CPU%c6,CPU%c7,CoreTmp,CoreThr,PkgTmp,Totl%C0,Any%C0,GFX%C0,CPUGFX%,Pkg%pc2,Pkg%pc3,Pkg%pc6,Pkg%pc8,Pk%pc10,CPU%LPI,SYS%LPI,GFXWatt,RAMWatt,PKG_%,RAM_%,UncMHz",
|
||||
"-i", "0.001", "--num_iterations", "1", "--Summary"]
|
||||
csv_fieldnames = ["AVX512", "Resolution", "Encoder", "Preset", "Run Time", "Temperature", "MHz", "Watts"]
|
||||
cur_dir = os.getcwd()
|
||||
|
||||
def ffmpeg_cmd(resolution: str, encoder: str, preset: str, avx: str = "") -> None:
|
||||
cmd = f"ssh -t knowledge@nazrin \"ffmpeg -i '{cur_dir}/{resolution}_input.mkv' -c:v {encoder} -preset {preset} {avx} /tmp/output.mkv -y\""
|
||||
print(cmd)
|
||||
num_tests = 5
|
||||
run_time_accumulation = 0
|
||||
temp_accumulation = 0
|
||||
mhz_accumulation = 0
|
||||
watt_accumulation = 0
|
||||
|
||||
stat_track_iterations = 0
|
||||
for x in range(num_tests):
|
||||
start_time = time.time()
|
||||
with subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, shell=True) as process:
|
||||
while not process.stdout.readline().startswith("frame="):
|
||||
continue
|
||||
while process.poll() is None:
|
||||
stdout_line = process.stdout.readline().split()
|
||||
temperature = subprocess.run(temp_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
|
||||
temp_reading = re.search(r"[0-9][0-9][.][0-9]",temperature.stdout)
|
||||
temp_accumulation += float(temp_reading[0])
|
||||
power = subprocess.run(power_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
|
||||
power_reading = power.stdout.split()
|
||||
mhz_accumulation += int(power_reading[2])
|
||||
watt_accumulation += float(power_reading[3])
|
||||
stat_track_iterations += 1
|
||||
if len(stdout_line) > 6:
|
||||
print(f"Temp: {temp_reading[0]} MHz: {power_reading[2]} Pwr: {power_reading[3]} FPS: {stdout_line[2]} Time: {stdout_line[6]}", end='\r')
|
||||
|
||||
run_time_accumulation += time.time() - start_time
|
||||
|
||||
os.remove("/tmp/output.mkv")
|
||||
|
||||
run_time_avg = run_time_accumulation / num_tests
|
||||
temp_avg = temp_accumulation / stat_track_iterations
|
||||
mhz_avg = mhz_accumulation / stat_track_iterations
|
||||
watt_avg = watt_accumulation / stat_track_iterations
|
||||
print(f"run time: {run_time_avg}")
|
||||
print(f"temperature: {temp_avg}")
|
||||
print(f"mhz: {mhz_avg}")
|
||||
print(f"power: {watt_avg}")
|
||||
|
||||
avx512 = "Off"
|
||||
|
||||
if (encoder == "libx265" and avx != "") or (encoder == "libsvtav1" and avx == ""):
|
||||
avx512 = "On"
|
||||
|
||||
results_dict = {
|
||||
"AVX512": avx512,
|
||||
"Resolution": resolution,
|
||||
"Encoder": encoder,
|
||||
"Preset": preset,
|
||||
"Run Time": round(run_time_avg, 2),
|
||||
"Temperature": round(temp_avg, 2),
|
||||
"MHz": round(mhz_avg, 2),
|
||||
"Watts": round(watt_avg, 2)
|
||||
}
|
||||
|
||||
with open('results.csv', 'a', newline='') as results_file:
|
||||
writer = csv.DictWriter(results_file, csv_fieldnames)
|
||||
writer.writerow(results_dict)
|
||||
|
||||
def main() -> None:
|
||||
with open('results.csv', 'w', newline='') as results_file:
|
||||
writer = csv.DictWriter(results_file, csv_fieldnames)
|
||||
writer.writeheader()
|
||||
|
||||
x265_presets = ["ultrafast", "superfast", "veryfast", "faster", "fast",
|
||||
"medium", "slow", "slower", "veryslow", "placebo"]
|
||||
av1_presets = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"]
|
||||
resolutions = ["720p", "1080p", "4k"]
|
||||
|
||||
for preset in av1_presets:
|
||||
for resolution in resolutions:
|
||||
ffmpeg_cmd(resolution, "libsvtav1", preset, "-svtav1-params \"asm=9\"")
|
||||
#ffmpeg_cmd(resolution, "libsvtav1", preset)
|
||||
|
||||
for preset in x265_presets:
|
||||
for resolution in resolutions:
|
||||
ffmpeg_cmd(resolution, "libx265", preset)
|
||||
#ffmpeg_cmd(resolution, "libx265", preset, "-x265-params \"asm=avx512\"")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
95
main_9950x.py
Normal file
@ -0,0 +1,95 @@
|
||||
import subprocess
|
||||
import os
|
||||
import time
|
||||
import re
|
||||
import csv
|
||||
|
||||
temp_cmd = ["sensors", "k10temp-pci-00c3"]
|
||||
power_cmd = ["turbostat", "--quiet", "--hide", "CorWatt,Die,Core,CPU,Busy%,Bzy_MHz,TSC_MHz,IPC,IRQ,SMI,POLL,C1,C2,C3,POLL%,C1%,C2%,C3%",
|
||||
"-i", "0.001", "--num_iterations", "1", "--Summary"]
|
||||
csv_fieldnames = ["AVX512", "Resolution", "Encoder", "Preset", "Run Time", "Temperature", "MHz", "Watts"]
|
||||
cur_dir = os.getcwd()
|
||||
|
||||
def ffmpeg_cmd(resolution: str, encoder: str, preset: str, avx: str = "") -> None:
|
||||
cmd = f"ssh -t rawhide@hong \"ffmpeg -i '{cur_dir}/{resolution}_input.mkv' -c:v {encoder} -preset {preset} {avx} /tmp/output.mkv -y\""
|
||||
print(cmd)
|
||||
num_tests = 5
|
||||
run_time_accumulation = 0
|
||||
temp_accumulation = 0
|
||||
mhz_accumulation = 0
|
||||
watt_accumulation = 0
|
||||
|
||||
stat_track_iterations = 0
|
||||
for x in range(num_tests):
|
||||
start_time = time.time()
|
||||
with subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, shell=True) as process:
|
||||
while not process.stdout.readline().startswith("frame="):
|
||||
continue
|
||||
while process.poll() is None:
|
||||
stdout_line = process.stdout.readline().split()
|
||||
temperature = subprocess.run(temp_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
|
||||
temp_reading = re.search(r"[0-9][0-9][.][0-9]",temperature.stdout)
|
||||
temp_accumulation += float(temp_reading[0])
|
||||
power = subprocess.run(power_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
|
||||
power_reading = power.stdout.split()
|
||||
mhz_accumulation += int(power_reading[2])
|
||||
watt_accumulation += float(power_reading[3])
|
||||
stat_track_iterations += 1
|
||||
if len(stdout_line) > 6:
|
||||
print(f"Temp: {temp_reading[0]} MHz: {power_reading[2]} Pwr: {power_reading[3]} FPS: {stdout_line[2]} Time: {stdout_line[6]}", end='\r')
|
||||
|
||||
run_time_accumulation += time.time() - start_time
|
||||
|
||||
os.remove("/tmp/output.mkv")
|
||||
|
||||
run_time_avg = run_time_accumulation / num_tests
|
||||
temp_avg = temp_accumulation / stat_track_iterations
|
||||
mhz_avg = mhz_accumulation / stat_track_iterations
|
||||
watt_avg = watt_accumulation / stat_track_iterations
|
||||
print(f"run time: {run_time_avg}")
|
||||
print(f"temperature: {temp_avg}")
|
||||
print(f"mhz: {mhz_avg}")
|
||||
print(f"power: {watt_avg}")
|
||||
|
||||
avx512 = "Off"
|
||||
|
||||
if (encoder == "libx265" and avx != "") or (encoder == "libsvtav1" and avx == ""):
|
||||
avx512 = "On"
|
||||
|
||||
results_dict = {
|
||||
"AVX512": avx512,
|
||||
"Resolution": resolution,
|
||||
"Encoder": encoder,
|
||||
"Preset": preset,
|
||||
"Run Time": round(run_time_avg, 2),
|
||||
"Temperature": round(temp_avg, 2),
|
||||
"MHz": round(mhz_avg, 2),
|
||||
"Watts": round(watt_avg, 2)
|
||||
}
|
||||
|
||||
with open('results.csv', 'a', newline='') as results_file:
|
||||
writer = csv.DictWriter(results_file, csv_fieldnames)
|
||||
writer.writerow(results_dict)
|
||||
|
||||
def main() -> None:
|
||||
with open('results.csv', 'w', newline='') as results_file:
|
||||
writer = csv.DictWriter(results_file, csv_fieldnames)
|
||||
writer.writeheader()
|
||||
|
||||
x265_presets = ["ultrafast", "superfast", "veryfast", "faster", "fast",
|
||||
"medium", "slow", "slower", "veryslow", "placebo"]
|
||||
av1_presets = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"]
|
||||
resolutions = ["720p", "1080p", "4k"]
|
||||
|
||||
for preset in av1_presets:
|
||||
for resolution in resolutions:
|
||||
ffmpeg_cmd(resolution, "libsvtav1", preset, "-svtav1-params \"asm=9\"")
|
||||
ffmpeg_cmd(resolution, "libsvtav1", preset)
|
||||
|
||||
for preset in x265_presets:
|
||||
for resolution in resolutions:
|
||||
ffmpeg_cmd(resolution, "libx265", preset)
|
||||
ffmpeg_cmd(resolution, "libx265", preset, "-x265-params \"asm=avx512\"")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
73
results_14700f.csv
Normal file
@ -0,0 +1,73 @@
|
||||
AVX512,Resolution,Encoder,Preset,Run Time,Temperature,MHz,Watts
|
||||
Off,720p,libsvtav1,0,343.7,61.75,2227.21,256.19
|
||||
Off,1080p,libsvtav1,0,567.37,66.36,2715.24,288.67
|
||||
Off,4k,libsvtav1,0,1409.27,71.65,4179.28,309.42
|
||||
Off,720p,libsvtav1,1,201.9,62.47,2129.7,226.31
|
||||
Off,1080p,libsvtav1,1,327.69,66.17,2715.67,261.04
|
||||
Off,4k,libsvtav1,1,786.73,71.78,4148.3,309.07
|
||||
Off,720p,libsvtav1,2,87.83,63.59,2377.57,235.52
|
||||
Off,1080p,libsvtav1,2,143.28,67.46,3369.96,290.73
|
||||
Off,4k,libsvtav1,2,381.33,71.38,4211.52,320.49
|
||||
Off,720p,libsvtav1,3,54.75,62.62,2516.89,232.06
|
||||
Off,1080p,libsvtav1,3,90.19,67.5,3538.79,288.85
|
||||
Off,4k,libsvtav1,3,250.29,71.24,4294.42,307.92
|
||||
Off,720p,libsvtav1,4,34.74,62.12,2312.37,207.93
|
||||
Off,1080p,libsvtav1,4,56.86,67.31,3388.92,271.4
|
||||
Off,4k,libsvtav1,4,156.96,72.15,4430.95,296.27
|
||||
Off,720p,libsvtav1,5,17.07,63.34,2723.29,226.66
|
||||
Off,1080p,libsvtav1,5,29.39,66.68,3240.02,230.22
|
||||
Off,4k,libsvtav1,5,83.74,71.42,4428.26,293.48
|
||||
Off,720p,libsvtav1,6,13.58,65.29,2528.27,204.3
|
||||
Off,1080p,libsvtav1,6,24.33,65.72,3274.45,247.41
|
||||
Off,4k,libsvtav1,6,68.12,70.2,4026.62,278.62
|
||||
Off,720p,libsvtav1,7,12.57,61.19,2296.48,195.65
|
||||
Off,1080p,libsvtav1,7,21.24,63.61,2812.68,224.05
|
||||
Off,4k,libsvtav1,7,62.14,68.81,3891.03,288.73
|
||||
Off,720p,libsvtav1,8,12.21,60.7,1821.53,171.91
|
||||
Off,1080p,libsvtav1,8,20.2,62.16,2690.33,232.47
|
||||
Off,4k,libsvtav1,8,59.4,67.87,3717.65,279.88
|
||||
Off,720p,libsvtav1,9,11.78,60.17,1492.28,150.86
|
||||
Off,1080p,libsvtav1,9,18.87,62.57,2339.2,202.95
|
||||
Off,4k,libsvtav1,9,55.42,66.67,3182.67,252.68
|
||||
Off,720p,libsvtav1,10,11.5,57.32,1442.19,147.86
|
||||
Off,1080p,libsvtav1,10,18.55,61.77,2129.12,211.74
|
||||
Off,4k,libsvtav1,10,53.63,66.19,3155.85,267.35
|
||||
Off,720p,libsvtav1,11,11.32,57.83,1405.17,147.61
|
||||
Off,1080p,libsvtav1,11,18.36,61.12,1866.05,184.39
|
||||
Off,4k,libsvtav1,11,53.46,65.51,3093.69,270.8
|
||||
Off,720p,libsvtav1,12,11.32,58.57,1348.86,138.21
|
||||
Off,1080p,libsvtav1,12,18.28,61.66,1916.34,196.64
|
||||
Off,4k,libsvtav1,12,53.55,66.05,3247.02,274.34
|
||||
Off,720p,libsvtav1,13,11.3,57.45,1472.76,154.92
|
||||
Off,1080p,libsvtav1,13,18.32,60.47,1895.21,187.31
|
||||
Off,4k,libsvtav1,13,53.59,65.89,3111.66,273.22
|
||||
Off,720p,libx265,ultrafast,11.89,61.53,1967.75,171.91
|
||||
Off,1080p,libx265,ultrafast,20.02,63.84,3006.94,225.66
|
||||
Off,4k,libx265,ultrafast,58.64,68.11,3890.54,271.83
|
||||
Off,720p,libx265,superfast,12.74,64.38,2177.7,182.81
|
||||
Off,1080p,libx265,superfast,21.01,65.47,2755.19,221.99
|
||||
Off,4k,libx265,superfast,61.87,69.66,3977.41,266.96
|
||||
Off,720p,libx265,veryfast,16.77,61.04,1923.7,186.11
|
||||
Off,1080p,libx265,veryfast,28.32,63.11,2574.8,210.21
|
||||
Off,4k,libx265,veryfast,86.34,68.16,3516.25,261.43
|
||||
Off,720p,libx265,faster,16.63,60.93,2020.65,183.2
|
||||
Off,1080p,libx265,faster,28.04,63.75,2454.59,201.61
|
||||
Off,4k,libx265,faster,86.33,67.94,3527.18,276.57
|
||||
Off,720p,libx265,fast,18.11,61.5,2135.8,204.02
|
||||
Off,1080p,libx265,fast,29.97,64.55,2813.09,226.16
|
||||
Off,4k,libx265,fast,93.25,69.51,3912.64,282.34
|
||||
Off,720p,libx265,medium,22.17,60.08,1810.56,204.54
|
||||
Off,1080p,libx265,medium,37.41,63.51,2558.51,214.22
|
||||
Off,4k,libx265,medium,110.35,70.01,3824.73,269.74
|
||||
Off,720p,libx265,slow,49.96,62.01,1876.6,202.25
|
||||
Off,1080p,libx265,slow,84.24,66.09,2782.9,251.7
|
||||
Off,4k,libx265,slow,252.78,72.66,4318.67,294.63
|
||||
Off,720p,libx265,slower,169.63,63.76,1840.9,224.48
|
||||
Off,1080p,libx265,slower,273.07,68.32,2629.67,261.51
|
||||
Off,4k,libx265,slower,789.55,73.0,4249.35,299.65
|
||||
Off,720p,libx265,veryslow,285.19,64.02,1788.16,236.33
|
||||
Off,1080p,libx265,veryslow,459.54,69.29,2571.88,291.14
|
||||
Off,4k,libx265,veryslow,1343.9,73.32,4097.43,305.24
|
||||
Off,720p,libx265,placebo,625.38,67.22,2129.95,280.35
|
||||
Off,1080p,libx265,placebo,1080.23,71.75,2965.88,319.13
|
||||
Off,4k,libx265,placebo,3521.05,73.71,4326.43,310.37
|
|
145
results_9950x.csv
Normal file
@ -0,0 +1,145 @@
|
||||
AVX512,Resolution,Encoder,Preset,Run Time,Temperature,MHz,Watts
|
||||
Off,720p,libsvtav1,0,275.61,83.07,2992.55,140.19
|
||||
On,720p,libsvtav1,0,267.79,82.74,2748.7,139.78
|
||||
Off,1080p,libsvtav1,0,428.36,88.43,3717.9,157.85
|
||||
On,1080p,libsvtav1,0,412.13,86.64,3703.81,155.81
|
||||
Off,4k,libsvtav1,0,870.27,90.27,7517.42,193.19
|
||||
On,4k,libsvtav1,0,793.46,90.97,7478.53,190.74
|
||||
Off,720p,libsvtav1,1,160.75,81.51,2913.29,139.5
|
||||
On,720p,libsvtav1,1,156.01,80.44,2964.06,138.62
|
||||
Off,1080p,libsvtav1,1,244.61,86.56,3863.49,155.54
|
||||
On,1080p,libsvtav1,1,235.13,86.04,3881.38,156.66
|
||||
Off,4k,libsvtav1,1,490.85,91.91,7376.41,192.01
|
||||
On,4k,libsvtav1,1,452.06,91.95,7424.08,190.28
|
||||
Off,720p,libsvtav1,2,66.38,85.36,2922.03,154.71
|
||||
On,720p,libsvtav1,2,64.34,84.83,2579.17,153.98
|
||||
Off,1080p,libsvtav1,2,96.73,90.4,4819.95,179.21
|
||||
On,1080p,libsvtav1,2,92.8,90.13,4964.76,179.57
|
||||
Off,4k,libsvtav1,2,237.74,91.56,8283.34,190.96
|
||||
On,4k,libsvtav1,2,223.85,88.55,8356.7,190.06
|
||||
Off,720p,libsvtav1,3,39.57,81.95,2450.49,162.09
|
||||
On,720p,libsvtav1,3,38.43,80.94,2412.56,159.25
|
||||
Off,1080p,libsvtav1,3,59.33,85.18,4837.1,183.45
|
||||
On,1080p,libsvtav1,3,57.05,84.92,4592.85,179.34
|
||||
Off,4k,libsvtav1,3,158.86,85.94,7752.59,191.16
|
||||
On,4k,libsvtav1,3,151.74,85.08,7820.16,188.68
|
||||
Off,720p,libsvtav1,4,25.72,80.85,2434.07,163.78
|
||||
On,720p,libsvtav1,4,24.88,80.1,2264.14,158.33
|
||||
Off,1080p,libsvtav1,4,38.21,84.31,4269.57,184.21
|
||||
On,1080p,libsvtav1,4,36.62,84.62,4219.17,178.88
|
||||
Off,4k,libsvtav1,4,98.46,85.03,7132.51,193.29
|
||||
On,4k,libsvtav1,4,93.1,84.6,7401.68,190.61
|
||||
Off,720p,libsvtav1,5,12.36,82.6,2441.37,159.99
|
||||
On,720p,libsvtav1,5,12.06,82.16,2398.89,157.37
|
||||
Off,1080p,libsvtav1,5,20.87,83.21,3782.77,178.66
|
||||
On,1080p,libsvtav1,5,20.43,83.16,3482.82,174.44
|
||||
Off,4k,libsvtav1,5,59.53,83.95,6346.44,186.79
|
||||
On,4k,libsvtav1,5,58.06,84.07,5591.28,188.55
|
||||
Off,720p,libsvtav1,6,10.88,82.7,2272.32,160.79
|
||||
On,720p,libsvtav1,6,10.84,81.77,2306.3,163.33
|
||||
Off,1080p,libsvtav1,6,18.39,83.04,2969.88,170.39
|
||||
On,1080p,libsvtav1,6,18.12,82.76,2795.84,171.66
|
||||
Off,4k,libsvtav1,6,50.29,85.19,4851.32,187.41
|
||||
On,4k,libsvtav1,6,49.78,85.43,4588.62,187.31
|
||||
Off,720p,libsvtav1,7,10.46,80.08,1826.58,152.65
|
||||
On,720p,libsvtav1,7,10.39,78.79,1719.44,142.46
|
||||
Off,1080p,libsvtav1,7,16.89,81.28,2381.02,162.26
|
||||
On,1080p,libsvtav1,7,16.86,81.12,2572.25,168.66
|
||||
Off,4k,libsvtav1,7,47.35,85.04,4082.87,186.18
|
||||
On,4k,libsvtav1,7,46.94,85.39,4127.72,184.79
|
||||
Off,720p,libsvtav1,8,10.2,78.13,1464.74,136.59
|
||||
On,720p,libsvtav1,8,10.09,76.95,1396.99,130.78
|
||||
Off,1080p,libsvtav1,8,16.41,80.2,2572.06,171.95
|
||||
On,1080p,libsvtav1,8,16.35,80.08,2330.01,152.94
|
||||
Off,4k,libsvtav1,8,46.07,85.12,3955.64,183.03
|
||||
On,4k,libsvtav1,8,45.8,85.31,4051.21,182.78
|
||||
Off,720p,libsvtav1,9,9.86,76.93,1655.12,137.33
|
||||
On,720p,libsvtav1,9,9.93,75.37,1515.5,124.55
|
||||
Off,1080p,libsvtav1,9,15.94,79.48,2275.4,149.3
|
||||
On,1080p,libsvtav1,9,15.88,79.6,2197.02,147.94
|
||||
Off,4k,libsvtav1,9,44.29,85.19,3861.9,183.37
|
||||
On,4k,libsvtav1,9,44.29,85.38,3956.06,182.92
|
||||
Off,720p,libsvtav1,10,9.73,75.6,1190.12,129.19
|
||||
On,720p,libsvtav1,10,9.74,74.27,1170.96,133.3
|
||||
Off,1080p,libsvtav1,10,15.76,78.72,2082.83,150.15
|
||||
On,1080p,libsvtav1,10,15.72,78.8,2215.12,149.56
|
||||
Off,4k,libsvtav1,10,43.36,85.17,3964.17,179.0
|
||||
On,4k,libsvtav1,10,43.44,85.67,3672.67,182.2
|
||||
Off,720p,libsvtav1,11,9.83,74.77,1372.62,124.04
|
||||
On,720p,libsvtav1,11,9.68,73.31,1154.32,119.77
|
||||
Off,1080p,libsvtav1,11,15.77,78.07,1996.09,150.96
|
||||
On,1080p,libsvtav1,11,15.66,78.35,2121.83,149.23
|
||||
Off,4k,libsvtav1,11,43.4,85.08,3617.71,179.97
|
||||
On,4k,libsvtav1,11,43.41,85.25,3979.42,181.18
|
||||
Off,720p,libsvtav1,12,9.69,74.31,1253.0,118.16
|
||||
On,720p,libsvtav1,12,9.77,73.05,1219.81,112.12
|
||||
Off,1080p,libsvtav1,12,15.67,78.02,2019.82,153.4
|
||||
On,1080p,libsvtav1,12,15.76,78.13,2074.67,147.58
|
||||
Off,4k,libsvtav1,12,43.36,85.12,3679.35,178.09
|
||||
On,4k,libsvtav1,12,43.42,85.17,4161.7,178.86
|
||||
Off,720p,libsvtav1,13,9.77,74.4,1088.44,125.7
|
||||
On,720p,libsvtav1,13,9.68,72.95,1298.77,126.4
|
||||
Off,1080p,libsvtav1,13,15.77,77.77,2091.71,146.93
|
||||
On,1080p,libsvtav1,13,15.66,77.93,1999.61,149.96
|
||||
Off,4k,libsvtav1,13,43.37,84.77,3711.26,181.84
|
||||
On,4k,libsvtav1,13,43.41,85.02,3817.5,180.59
|
||||
Off,720p,libx265,ultrafast,9.97,76.84,1609.77,135.47
|
||||
On,720p,libx265,ultrafast,9.92,75.51,1645.67,135.77
|
||||
Off,1080p,libx265,ultrafast,16.38,79.48,2549.3,164.32
|
||||
On,1080p,libx265,ultrafast,16.32,79.37,2674.66,171.9
|
||||
Off,4k,libx265,ultrafast,45.72,84.32,4207.16,186.78
|
||||
On,4k,libx265,ultrafast,45.34,84.63,4359.75,183.3
|
||||
Off,720p,libx265,superfast,10.24,78.29,2042.02,152.6
|
||||
On,720p,libx265,superfast,10.21,77.33,1906.78,142.69
|
||||
Off,1080p,libx265,superfast,16.74,80.16,2598.24,170.97
|
||||
On,1080p,libx265,superfast,16.75,79.96,2604.44,167.56
|
||||
Off,4k,libx265,superfast,47.04,84.17,4398.25,183.39
|
||||
On,4k,libx265,superfast,46.6,84.64,4595.14,187.09
|
||||
Off,720p,libx265,veryfast,10.81,80.78,1895.74,159.84
|
||||
On,720p,libx265,veryfast,10.67,79.59,1893.39,160.32
|
||||
Off,1080p,libx265,veryfast,18.35,81.83,2456.24,168.44
|
||||
On,1080p,libx265,veryfast,18.19,81.68,2779.27,169.58
|
||||
Off,4k,libx265,veryfast,51.9,83.63,5421.21,186.81
|
||||
On,4k,libx265,veryfast,51.08,84.21,5543.17,190.49
|
||||
Off,720p,libx265,faster,10.77,80.88,1958.09,163.1
|
||||
On,720p,libx265,faster,10.7,79.85,2088.4,161.0
|
||||
Off,1080p,libx265,faster,18.25,82.12,2718.77,173.7
|
||||
On,1080p,libx265,faster,18.22,81.73,2742.09,169.38
|
||||
Off,4k,libx265,faster,51.96,83.79,5753.61,191.94
|
||||
On,4k,libx265,faster,51.03,84.57,5386.17,192.34
|
||||
Off,720p,libx265,fast,11.28,83.15,2112.5,162.11
|
||||
On,720p,libx265,fast,11.05,81.72,1861.71,160.5
|
||||
Off,1080p,libx265,fast,19.0,83.79,3063.13,178.62
|
||||
On,1080p,libx265,fast,18.7,82.63,2914.55,176.94
|
||||
Off,4k,libx265,fast,55.38,84.41,5748.98,191.73
|
||||
On,4k,libx265,fast,53.22,83.99,5216.62,190.75
|
||||
Off,720p,libx265,medium,13.58,81.3,1839.12,159.6
|
||||
On,720p,libx265,medium,13.34,80.27,1848.54,160.91
|
||||
Off,1080p,libx265,medium,22.64,83.95,2929.93,177.17
|
||||
On,1080p,libx265,medium,22.2,83.72,2577.23,177.73
|
||||
Off,4k,libx265,medium,68.88,83.77,5365.36,191.88
|
||||
On,4k,libx265,medium,66.67,83.85,5115.63,193.02
|
||||
Off,720p,libx265,slow,32.11,83.11,1932.51,164.84
|
||||
On,720p,libx265,slow,28.7,80.13,1862.04,156.42
|
||||
Off,1080p,libx265,slow,50.01,88.35,2903.52,187.93
|
||||
On,1080p,libx265,slow,44.34,86.68,2644.33,188.76
|
||||
Off,4k,libx265,slow,145.77,84.82,5992.44,196.66
|
||||
On,4k,libx265,slow,125.07,84.87,5594.92,196.49
|
||||
Off,720p,libx265,slower,120.55,82.56,1994.78,154.4
|
||||
On,720p,libx265,slower,105.11,80.2,1899.32,150.12
|
||||
Off,1080p,libx265,slower,174.49,90.93,3472.46,184.46
|
||||
On,1080p,libx265,slower,150.92,89.68,2985.41,182.97
|
||||
Off,4k,libx265,slower,449.6,88.05,7063.46,194.94
|
||||
On,4k,libx265,slower,379.24,88.11,6601.06,193.28
|
||||
Off,720p,libx265,veryslow,207.69,86.81,1924.62,150.05
|
||||
On,720p,libx265,veryslow,177.97,84.71,1833.55,147.35
|
||||
Off,1080p,libx265,veryslow,301.52,93.91,3191.26,180.84
|
||||
On,1080p,libx265,veryslow,255.94,90.6,2977.94,178.22
|
||||
Off,4k,libx265,veryslow,744.77,89.47,6934.46,196.92
|
||||
On,4k,libx265,veryslow,613.56,89.8,6627.35,194.04
|
||||
Off,720p,libx265,placebo,441.26,91.55,3143.15,162.28
|
||||
On,720p,libx265,placebo,381.82,87.38,3112.01,162.19
|
||||
Off,1080p,libx265,placebo,678.01,92.45,5343.51,190.82
|
||||
On,1080p,libx265,placebo,585.99,90.71,5287.56,188.81
|
||||
Off,4k,libx265,placebo,1936.54,85.25,6634.46,196.73
|
||||
On,4k,libx265,placebo,1657.44,87.4,6499.13,193.79
|
|
136
resultulator.py
Normal file
@ -0,0 +1,136 @@
|
||||
import csv
|
||||
import math
|
||||
import matplotlib.pyplot as plot
|
||||
import numpy as np
|
||||
|
||||
def geomean(data):
|
||||
split_data = []
|
||||
for x in data:
|
||||
split_data.append(data[x])
|
||||
return round(math.prod(split_data) ** (1 / len(split_data)), 2)
|
||||
|
||||
def make_comparison_list(list_a, list_b, encoder):
|
||||
results_720p = {}
|
||||
results_1080p = {}
|
||||
results_4k = {}
|
||||
|
||||
for x in range(len(list_a)):
|
||||
if list_a[x]["Encoder"] == encoder:
|
||||
difference = round(float(list_a[x]["Run Time"]) / float(list_b[x]["Run Time"]), 2)
|
||||
|
||||
if list_a[x]["Resolution"] == "720p":
|
||||
results_720p.update({f"Preset {list_a[x]["Preset"]}": float(difference)})
|
||||
elif list_a[x]["Resolution"] == "1080p":
|
||||
results_1080p.update({f"Preset {list_a[x]["Preset"]}": float(difference)})
|
||||
elif list_a[x]["Resolution"] == "4k":
|
||||
results_4k.update({f"Preset {list_a[x]["Preset"]}": float(difference)})
|
||||
|
||||
if encoder == "libx265":
|
||||
results_720p = dict(reversed(results_720p.items()))
|
||||
results_1080p = dict(reversed(results_1080p.items()))
|
||||
results_4k = dict(reversed(results_4k.items()))
|
||||
|
||||
return results_720p, results_1080p, results_4k
|
||||
|
||||
def make_graph(results_list, title):
|
||||
fig, return_plot = plot.subplots(facecolor="#5b306f")
|
||||
|
||||
return_plot.set_facecolor("#be95d1")
|
||||
|
||||
return_plot.spines['top'].set_color("#ffaed2")
|
||||
return_plot.spines['bottom'].set_color("#ffaed2")
|
||||
return_plot.spines['left'].set_color("#ffaed2")
|
||||
return_plot.spines['right'].set_color("#ffaed2")
|
||||
return_plot.tick_params(axis='x', colors="#ffaed2")
|
||||
return_plot.tick_params(axis='y', colors="#ffaed2")
|
||||
|
||||
bars = return_plot.barh(np.arange(len(results_list)), results_list.values(), color="#ffaed2")
|
||||
return_plot.set_yticks(np.arange(len(results_list)), results_list.keys(), color="#ffaed2")
|
||||
return_plot.set_title(title, color="#ffaed2")
|
||||
for bar, value in zip(bars, results_list.values()):
|
||||
return_plot.text(0.99, bar.get_y() + bar.get_height()/2, f'{value}x', va='center', ha='right', color="#2c1a4a", fontsize=10, fontweight='bold')
|
||||
|
||||
return_plot.set_xlabel("Execution time improvement\n 1.0 value based on the first CPU", color="#ffaed2")
|
||||
|
||||
return_plot.axvline(x=1, color="#2c1a4a", linewidth=1)
|
||||
|
||||
plot.savefig(f"{title}.png", bbox_inches='tight', dpi=600)
|
||||
|
||||
return return_plot
|
||||
|
||||
csv_fieldnames = ["AVX512", "Resolution", "Encoder", "Preset", "Run Time", "Temperature", "MHz", "Watts"]
|
||||
|
||||
results_9950x_avx = []
|
||||
results_9950x_noavx = []
|
||||
results_14700f = []
|
||||
|
||||
with open('results_9950x.csv', 'r', newline='') as results_file:
|
||||
reader = csv.DictReader(results_file, csv_fieldnames)
|
||||
for row in reader:
|
||||
if row["AVX512"] == "On":
|
||||
results_9950x_avx.append(row)
|
||||
elif row["AVX512"] == "Off":
|
||||
results_9950x_noavx.append(row)
|
||||
|
||||
with open('results_14700f.csv', 'r', newline='') as results_file:
|
||||
reader = csv.DictReader(results_file, csv_fieldnames)
|
||||
for row in reader:
|
||||
results_14700f.append(row)
|
||||
|
||||
results_14700f.pop(0)
|
||||
|
||||
print("Ryzen 9 9950x AVX-512 performance gain. \"Zero\" point of 1.0 based on the speed of the non-AVX-512 performance.")
|
||||
print("\nHEVC encoded by the x265 encoder.\n")
|
||||
|
||||
list_9950x_x265_vs_avx512_720p, list_9950x_x265_vs_avx512_1080p, list_9950x_x265_vs_avx512_4k = make_comparison_list(results_9950x_noavx, results_9950x_avx, "libx265")
|
||||
|
||||
plot_9950x_x265_noavx_vs_9950x_avx_720p = make_graph(list_9950x_x265_vs_avx512_720p, "9950x AVX-512 Off vs 9950x AVX-512 On, 720p, x265")
|
||||
plot_9950x_x265_noavx_vs_9950x_avx_1080p = make_graph(list_9950x_x265_vs_avx512_1080p, "9950x AVX-512 Off vs 9950x AVX-512 On, 1080p, x265")
|
||||
plot_9950x_x265_noavx_vs_9950x_avx_4k = make_graph(list_9950x_x265_vs_avx512_4k, "9950x AVX-512 Off vs 9950x AVX-512 On, 4k, x265")
|
||||
|
||||
print("\nAV1 encoded by the SVT-AV1 encoder. Note: In SVT-AV1, preset 0 is the heaviest, and preset 13 is the lightest.\n")
|
||||
|
||||
list_9950x_av1_vs_avx512_720p, list_9950x_av1_vs_avx512_1080p, list_9950x_av1_vs_avx512_4k = make_comparison_list(results_9950x_noavx, results_9950x_avx, "libsvtav1")
|
||||
|
||||
plot_9950x_av1_noavx_vs_9950x_avx_720p = make_graph(list_9950x_av1_vs_avx512_720p, "9950x AVX-512 Off vs 9950x AVX-512 On, 720p, SVT-AV1")
|
||||
plot_9950x_av1_noavx_vs_9950x_avx_1080p = make_graph(list_9950x_av1_vs_avx512_1080p, "9950x AVX-512 Off vs 9950x AVX-512 On, 1080p, SVT-AV1")
|
||||
plot_9950x_av1_noavx_vs_9950x_avx_4k = make_graph(list_9950x_av1_vs_avx512_4k, "9950x AVX-512 Off vs 9950x AVX-512 On, 4k, SVT-AV1")
|
||||
|
||||
print("Ryzen 9 9950x AVX-512 performance gain vs the i7-14700f. \"Zero\" point of 1.0 based on the i7-14700f performance.")
|
||||
print("\nHEVC encoded by the x265 encoder.\n")
|
||||
|
||||
list_9950x_x265_vs_14700f_720p, list_9950x_x265_vs_14700f_1080p, list_9950x_x265_vs_14700f_4k = make_comparison_list(results_14700f, results_9950x_avx, "libx265")
|
||||
|
||||
plot_9950x_avx_x265_vs_14700f_720p = make_graph(list_9950x_x265_vs_14700f_720p, "i7-14700f vs 9950x AVX-512 On, 720p, x265")
|
||||
plot_9950x_avx_x265_vs_14700f_1080p = make_graph(list_9950x_x265_vs_14700f_1080p, "i7-14700f vs 9950x AVX-512 On, 1080p, x265")
|
||||
plot_9950x_avx_x265_vs_14700f_4k = make_graph(list_9950x_x265_vs_14700f_4k, "i7-14700f vs 9950x AVX-512 On, 4k, x265")
|
||||
|
||||
|
||||
print("\nAV1 encoded by the SVT-AV1 encoder. Note: In SVT-AV1, preset 0 is the heaviest, and preset 13 is the lightest.\n")
|
||||
|
||||
list_9950x_av1_vs_14700f_720p, list_9950x_av1_vs_14700f_1080p, list_9950x_av1_vs_14700f_4k = make_comparison_list(results_14700f, results_9950x_avx, "libsvtav1")
|
||||
|
||||
plot_9950x_avx_av1_vs_14700f_720p = make_graph(list_9950x_av1_vs_14700f_720p, "i7-14700f vs 9950x AVX-512 On, 720p, SVT-AV1")
|
||||
plot_9950x_avx_av1_vs_14700f_1080p = make_graph(list_9950x_av1_vs_14700f_1080p, "i7-14700f vs 9950x AVX-512 On, 1080p, SVT-AV1")
|
||||
plot_9950x_avx_av1_vs_14700f_4k = make_graph(list_9950x_av1_vs_14700f_4k, "i7-14700f vs 9950x AVX-512 On, 4k, SVT-AV1")
|
||||
|
||||
geomean_dict = {
|
||||
"9950x AVX-512 Off vs 9950x AVX-512 On, 720p, x265": geomean(list_9950x_x265_vs_avx512_720p),
|
||||
"9950x AVX-512 Off vs 9950x AVX-512 On, 1080p, x265": geomean(list_9950x_x265_vs_avx512_1080p),
|
||||
"9950x AVX-512 Off vs 9950x AVX-512 On, 4k, x265": geomean(list_9950x_x265_vs_avx512_4k),
|
||||
"9950x AVX-512 Off vs 9950x AVX-512 On, 720p, SVT-AV1": geomean(list_9950x_av1_vs_avx512_720p),
|
||||
"9950x AVX-512 Off vs 9950x AVX-512 On, 1080p, SVT-AV1": geomean(list_9950x_av1_vs_avx512_1080p),
|
||||
"9950x AVX-512 Off vs 9950x AVX-512 On, 4k, SVT-AV1": geomean(list_9950x_av1_vs_avx512_4k),
|
||||
"i7-14700f vs 9950x AVX-512 On, 720p, x265": geomean(list_9950x_x265_vs_14700f_720p),
|
||||
"i7-14700f vs 9950x AVX-512 On, 1080p, x265": geomean(list_9950x_x265_vs_14700f_1080p),
|
||||
"i7-14700f vs 9950x AVX-512 On, 4k, x265": geomean(list_9950x_x265_vs_14700f_4k),
|
||||
"i7-14700f vs 9950x AVX-512 On, 720p, SVT-AV1": geomean(list_9950x_av1_vs_14700f_720p),
|
||||
"i7-14700f vs 9950x AVX-512 On, 1080p, SVT-AV1": geomean(list_9950x_av1_vs_14700f_1080p),
|
||||
"i7-14700f vs 9950x AVX-512 On, 4k, SVT-AV1": geomean(list_9950x_av1_vs_14700f_4k)
|
||||
}
|
||||
|
||||
geomean_dict = dict(reversed(geomean_dict.items()))
|
||||
|
||||
geomean_graph = make_graph(geomean_dict, "Geomean performance difference at major resolutions, across all presets")
|
||||
|
||||
#plot.show()
|