Perf plot

This commit is contained in:
[Quy Anh] «Elliot» Nguyen
2026-06-18 11:59:50 +02:00
committed by Linus Baumberger
parent ca969564a6
commit e7af3103e8
153 changed files with 22042 additions and 24220 deletions
+3
View File
@@ -8,6 +8,8 @@
*.gif *.gif
*.mp4 *.mp4
!reference/*.csv !reference/*.csv
!analysis/*.csv
# Benchmark outputs (keep .gitkeep, ignore results) # Benchmark outputs (keep .gitkeep, ignore results)
benchmarks/* benchmarks/*
@@ -21,3 +23,4 @@ sizes
.vscode .vscode
.DS_Store .DS_Store
**__pycache__**
Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

+1000
View File
File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 72 KiB

+5145 -5160
View File
File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 256 KiB

After

Width:  |  Height:  |  Size: 254 KiB

+4597 -4704
View File
File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 219 KiB

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 381 KiB

+772 -651
View File
File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 91 KiB

+104 -58
View File
@@ -1,75 +1,121 @@
import csv
import importlib.util
import os import os
import re import re
import csv import sys
# folder that holds one subfolder per variant, each with an x86/ dir full of *.log files sys.path.insert(0, 'flopcounts')
ROOT = "measurements"
OUT = "analysis/results.csv" ROOT = 'measurements'
OUT = 'analysis/results_x86.csv'
size_line = re.compile(r'=== N_P=(\d+) N_ITER=(\d+) ===')
# the benchmark prints one block per problem size, looks like:
# === N_P=500 N_ITER=200 ===
# W(n) per iteration: ...
# Q(n) per iteration: ...
# I(n): ...
# W(n): ...
# T(n): ... <- cycles
# P(n): ... <- flops/cycle
# so I split each log on the "=== N_P=.. ===" lines and read the fields out of each block.
size_line = re.compile(r"=== N_P=(\d+) N_ITER=(\d+) ===")
def num(pattern, text): def num(pattern, text):
m = re.search(pattern, text) m = re.search(pattern, text)
if m: if m:
return float(m.group(1)) return float(m.group(1))
return None
_flopcount_modules = {}
def get_flops_per_iter(variant, n_p, n_obs=2):
variant = variant.strip()
module_name = variant.replace('/', '_').replace('\\', '_')
module_path = f'flopcounts/x86/{module_name}'
if module_name in _flopcount_modules:
module = _flopcount_modules[module_name]
elif os.path.exists(f'{module_path}.py'):
try:
spec = importlib.util.spec_from_file_location(module_name,
f'{module_path}.py')
assert spec is not None
assert spec.loader is not None
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
_flopcount_modules[module_name] = module
except Exception as e:
print(f'Warning: Failed to load flopcount for {variant}: {e}')
return None
else:
print(f'Warning: No flopcount module found for {variant}')
return None return None
#we run every variant a few times (1.log, 2.log, ...). keep the fastest run per size, if hasattr(module, 'total'):
#min cycles is the standard way to kill the OS/turbo noise. try:
best = {} return module.total(n_iter=1, n_p=int(n_p), n_obs=int(n_obs))
except Exception as e:
print(f'Warning: Error calling total() for {variant}: {e}')
return None
else:
print(f'Warning: No total() function in {module_path}')
return None
# flop counter is uint32 and wraps at n=10000 (72*n^2+74*n = 7.2e9 > 2^32), so the logged
# W(n)/I(n) are garbage there. compute work ourselves; matches the good logs exactly. runs = {}
# symmetry variants do half the pairs -> 36 n^2 + 110 n, everything else 72 n^2 + 74 n.
def flops_per_iter(variant, n):
if "symmetry" in variant:
return 36 * n * n + 110 * n
return 72 * n * n + 74 * n
for variant in sorted(os.listdir(ROOT)): for variant in sorted(os.listdir(ROOT)):
logdir = os.path.join(ROOT, variant, "x86") logdir = os.path.join(ROOT, variant, 'x86')
if not os.path.isdir(logdir): if not os.path.isdir(logdir):
continue
for fn in os.listdir(logdir):
if not fn.endswith('.log'):
continue
text = open(os.path.join(logdir, fn)).read()
marks = list(size_line.finditer(text))
for i, m in enumerate(marks):
n = int(m.group(1))
n_iter = int(m.group(2))
start = m.end()
stop = marks[i + 1].start() if i + 1 < len(marks) else len(text)
block = text[start:stop]
cycles = num(r'T\(n\):\s*([\d.]+)', block)
if cycles is None:
continue continue
for fn in os.listdir(logdir): key = (variant, n)
if not fn.endswith(".log"): q = num(r'Q\(n\) per iteration:\s*([\d.]+)', block)
continue if key not in runs:
text = open(os.path.join(logdir, fn)).read() runs[key] = []
runs[key].append((cycles, n_iter, q))
marks = list(size_line.finditer(text)) with open(OUT, 'w', newline='') as f:
for i, m in enumerate(marks): w = csv.writer(f)
n = int(m.group(1)) w.writerow([
n_iter = int(m.group(2)) 'variant', 'n', 'n_iter', 'W', 'Q_per_iter', 'I', 'cycles',
start = m.end() 'flops_per_cycle'
stop = marks[i + 1].start() if i + 1 < len(marks) else len(text) ])
block = text[start:stop] for variant, n in sorted(runs):
entries = runs[(variant, n)]
n_iter = entries[0][1]
q = entries[0][2]
for _, ni, qi in entries:
if ni != n_iter:
print(f'Warning: n_iter mismatch for {(variant, n)}: {ni} vs {n_iter}')
if qi != q:
print(f'Warning: Q_per_iter mismatch for {(variant, n)}: {qi} vs {q}')
cycles = num(r"T\(n\):\s*([\d.]+)", block) cycles = sum(e[0] for e in entries) / len(entries)
if cycles is None:
continue
key = (variant, n) w_iter = get_flops_per_iter(variant, n)
if key not in best or cycles < best[key][0]:
best[key] = (cycles, n_iter,
num(r"Q\(n\) per iteration:\s*([\d.]+)", block))
with open(OUT, "w", newline="") as f: assert w_iter is not None
w = csv.writer(f)
w.writerow(["variant", "n", "n_iter", "W", "Q_per_iter", "I", "cycles", "flops_per_cycle"]) W = w_iter * n_iter
for variant, n in sorted(best): I = w_iter / q if q else w_iter
cycles, n_iter, q = best[(variant, n)] fc = W / cycles if cycles else 0
w_iter = flops_per_iter(variant, n) w.writerow(
W = w_iter * n_iter [variant, n, n_iter, W, q,
I = w_iter / q round(I, 2),
fc = W / cycles round(cycles, 1),
w.writerow([variant, n, n_iter, W, q, round(I, 2), round(cycles, 1), round(fc, 3)]) round(fc, 3)])
print("wrote", OUT, "with", len(best), "rows")
print('wrote', OUT, 'with', len(runs), 'rows')
+63
View File
@@ -0,0 +1,63 @@
from pathlib import Path
import re
LOG_DIR = Path('measurements/memory/x86')
CPU_FREQ_GHZ = 2.0
def parse_sysbench_log(file_path):
"""Parses a single sysbench log file to extract memory bandwidth in MiB/s."""
try:
with open(file_path, 'r') as f:
content = f.read()
match = re.search(r'(\d+\.?\d*)\s+MiB/sec', content)
if match:
return float(match.group(1))
else:
print(f"Warning: Could not find 'MiB/sec' in {file_path.name}")
return None
except Exception as e:
print(f'Error reading {file_path}: {e}')
return None
def main():
if not LOG_DIR.exists():
print(f"Error: Directory '{LOG_DIR}' not found.")
return
bandwidths_mib_s = []
log_files = sorted(LOG_DIR.glob('*.log'))
print(f'Found {len(log_files)} log files.')
for file_path in log_files:
val = parse_sysbench_log(file_path)
if val is not None:
bandwidths_mib_s.append(val)
if not bandwidths_mib_s:
print('No valid bandwidth data found.')
return
avg_mi_b_s = sum(bandwidths_mib_s) / len(bandwidths_mib_s)
bytes_per_second = avg_mi_b_s * (1024**2)
cycles_per_second = CPU_FREQ_GHZ * 1e9
bytes_per_cycle = bytes_per_second / cycles_per_second
print('-' * 40)
print(f'Files analyzed: {len(bandwidths_mib_s)}')
print(f'Average Bandwidth: {avg_mi_b_s:.2f} MiB/sec')
print(f'CPU Frequency: {CPU_FREQ_GHZ} GHz')
print('-' * 40)
print(f'Result: {bytes_per_cycle:.2f} bytes/cycle')
print('-' * 40)
if __name__ == '__main__':
main()
+49 -60
View File
@@ -5,14 +5,15 @@ import matplotlib.pyplot as plt
import matplotlib.patheffects as pe import matplotlib.patheffects as pe
#import seaborn as sns # tried it, the default look was worse #import seaborn as sns # tried it, the default look was worse
df = pd.read_csv("analysis/results.csv") df = pd.read_csv("analysis/results_x86.csv")
# peaks for the ryzen ai 7 350 (zen5) at 2GHz. 2 fma units and the datapath is 256 bit # peaks for the ryzen ai 7 350 (zen5) at 2GHz. 2 fma + 2 fadd units and the datapath is 256 bit
# -> scalar 6, double 24, float 48 flops/cycle # -> scalar 6, double 24, float 48 flops/cycle
SCALAR = 6 SCALAR = 6
PEAK_D = 24 PEAK_D = 24
PEAK_F = 48 PEAK_F = 48
maroon = "#A71D5B" maroon = "#A71D5B"
crimson = "#DC143C"
def get(v, n=5000): def get(v, n=5000):
@@ -20,13 +21,13 @@ def get(v, n=5000):
def getline(v): def getline(v):
s = df[df.variant == v].sort_values("n") s = df[df.variant == v].sort_values("n") # pyright: ignore[reportCallIssue]
return s.n.values, s["flops_per_cycle"].values return s.n.values, s["flops_per_cycle"].values
def label_lines_above(ax, def label_lines_above(ax,
entries, entries,
fontsize=9, fontsize: float = 9,
rotate=False, rotate=False,
dy_frac=0.012, dy_frac=0.012,
halo=0): halo=0):
@@ -108,79 +109,66 @@ tracks = [
("variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt", ("variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt",
"AVX-256 + PolyExp + RSQRT (float)", "#d05a82", "--"), "AVX-256 + PolyExp + RSQRT (float)", "#d05a82", "--"),
("variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt", ("variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt",
"AVX-512 + PolyExp + RSQRT + ILP (float)", maroon, "-"), "AVX-512 + PolyExp + RSQRT + ILP-Inner (float)", maroon, "-"),
("variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp",
"AVX-512 + PolyExp + RSQRT + ILP-Outer (float)", crimson, "-"),
] ]
tick_vals = np.array([50, 100, 200, 500, 1000, 2000, 5000, 10000])
target_positions = np.arange(len(tick_vals))
def map_x_to_linear(x_val):
return np.interp(x_val, tick_vals, target_positions)
fig, ax = plt.subplots(figsize=(9, 4.7)) fig, ax = plt.subplots(figsize=(9, 4.7))
ends = [] ends = []
for v, lab, c, ls in tracks: for v, lab, c, ls in tracks:
x_raw, y = getline(v) x, y = getline(v)
x_mapped = map_x_to_linear(x_raw) ax.plot(
x,
y, # pyright: ignore[reportArgumentType]
ls,
color=c,
marker="o",
ms=4,
lw=2.4 if c == maroon else 1.8)
if c == maroon:
side = "below"
xpos = 5600
else:
side = "above"
xpos = None
ends.append((x, y, lab, c, xpos, side))
ax.plot(x_mapped, for yv, t in [
y, (27.43, f"Peak π based on instruction mix [{27.43} flops/cycle]"),
ls, # (PEAK_D, f"Peak π par. w/ doubles ({PEAK_D} flops/cycle)"),
color=c, # (PEAK_F, f"Peak π par. w/ floats ({PEAK_F} flops/cycle)")
marker="o", ]:
ms=4,
lw=2.4 if c == maroon else 1.8)
ends.append((x_mapped, y, lab, c))
tick_vals = [50, 100, 200, 500, 1000, 2000, 5000, 10000]
target_positions = list(range(len(tick_vals)))
start_x_pos = 0
for yv, t in [(PEAK_D, f"Peak π par. w/ doubles ({PEAK_D} flops/cycle)"),
(PEAK_F, f"Peak π par. w/ floats ({PEAK_F} flops/cycle)")]:
ax.axhline(yv, ls=":", color="#999", lw=1.2) ax.axhline(yv, ls=":", color="#999", lw=1.2)
ax.text(start_x_pos + 0.2, ax.text(52, yv * 1.03, t, fontsize=9, color="#888", fontweight="bold")
yv * 1.03,
t,
fontsize=9,
color="#888",
fontweight="bold")
ax.set_yscale("log", base=2) ax.set_xscale("log", base=10)
ax.set_xticks([50, 100, 200, 500, 1000, 2000, 5000, 10000])
ax.set_xticks(target_positions) ax.set_xticklabels(["50", "100", "200", "500", "1K", "2K", "5K", "10K"])
ax.set_xticklabels(["50", "100", "200", "500", "1k", "2k", "5k", "10k"], ax.set_xlim(46, 13000)
fontweight="bold", ax.set_ylim(0, 30)
fontsize=9)
ax.set_xlim(-0.5, len(tick_vals) - 0.5)
ax.yaxis.set_major_formatter(ticker.FuncFormatter(lambda x, _: str(int(x))))
for label in ax.get_yticklabels(): for label in ax.get_yticklabels():
label.set_fontweight('bold') label.set_fontweight('bold')
label.set_fontsize(9) label.set_fontsize(9)
ax.set_ylim(1, 64) for label in ax.get_xticklabels():
label.set_fontweight('bold')
label.set_fontsize(9)
ax.set_xlabel("Number of Pedestrians", fontweight="bold", fontsize=9) ax.set_xlabel("Number of Pedestrians", fontweight="bold", fontsize=9)
ax.grid(color="#e9e9e9") ax.grid(color="#e9e9e9")
ax.spines["top"].set_visible(False) ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False) ax.spines["right"].set_visible(False)
plt.title( plt.title(
'Performance [flops/cycle]\nCPU: AMD Ryzen AI 7 350 w/ Radeon 860M @ 2 GHz\nCompiler: g++ (Debian 15.2.0-17) 15.2.0\nFlags: -O3 -march=native -std=c++23 -Wall -Wextra -flto', 'Performance (flops/cycle) [N = 3]\nCPU: AMD Ryzen AI 7 350 @ 2 GHz\nCompiler: g++ (Debian 15.2.0-17) 15.2.0\nFlags: -O3 -march=native -std=c++23 -Wall -Wextra -flto',
loc='left', loc='left',
size=9, size=9,
fontweight="bold") fontweight="bold")
ax.grid(color="#e9e9e9")
plt.tight_layout() plt.tight_layout()
label_lines_above(ax, ends, fontsize=7.25, dy_frac=0.012)
label_lines_above(ax, ends, fontsize=7.5, dy_frac=0.012)
plt.savefig("analysis/fig_tracks.svg", bbox_inches="tight") plt.savefig("analysis/fig_tracks.svg", bbox_inches="tight")
# plot 2: all te milestones + the symmetry one that got slower # plot 2: all the milestones + the symmetry one that got slower
bars = [ bars = [
("baseline", "variant_baseline"), ("baseline", "variant_baseline"),
("AVX2 (double)", "variant_inlining_7_SoA_AVX2"), ("AVX2 (double)", "variant_inlining_7_SoA_AVX2"),
@@ -219,7 +207,7 @@ ax.grid(axis="y", visible=False)
ax.spines["top"].set_visible(False) ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False) ax.spines["right"].set_visible(False)
plt.tight_layout() plt.tight_layout()
plt.savefig("analysis/fig_ladder.png", dpi=170, bbox_inches="tight") plt.savefig("analysis/fig_ladder.svg", bbox_inches="tight")
# plot 3: roofline (n = 5000). same 7 variants as fig_tracks, same colors, inline labels. # plot 3: roofline (n = 5000). same 7 variants as fig_tracks, same colors, inline labels.
@@ -318,7 +306,7 @@ ax.set_xticklabels(ax.get_xticklabels(), fontweight="bold")
ax.set_yticklabels(ax.get_yticklabels(), fontweight="bold") ax.set_yticklabels(ax.get_yticklabels(), fontweight="bold")
# ax.set_ylabel("Performance [flops/cycle]", fontweight="bold", fontsize=9) # ax.set_ylabel("Performance [flops/cycle]", fontweight="bold", fontsize=9)
plt.title( plt.title(
'Performance [flops/cycle]\nCPU: AMD Ryzen AI 7 350 w/ Radeon 860M @ 2 GHz\nCompiler: g++ (Debian 15.2.0-17) 15.2.0\nFlags: -O3 -march=native -std=c++23 -Wall -Wextra -flto', 'Performance [flops/cycle]\nCPU: AMD Ryzen AI 7 350 @ 2 GHz\nCompiler: g++ (Debian 15.2.0-17) 15.2.0\nFlags: -O3 -march=native -std=c++23 -Wall -Wextra -flto',
loc='left', loc='left',
size=9, size=9,
fontweight="bold") fontweight="bold")
@@ -344,7 +332,7 @@ ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False) ax.spines["right"].set_visible(False)
ax.legend(frameon=False, fontsize=10) ax.legend(frameon=False, fontsize=10)
plt.tight_layout() plt.tight_layout()
plt.savefig("analysis/fig_exp.png", dpi=170, bbox_inches="tight") plt.savefig("analysis/fig_exp.svg", bbox_inches="tight")
# plot 5: the milestone ladder as lines (this is plot0 + line1, line2, ... for the doc). # plot 5: the milestone ladder as lines (this is plot0 + line1, line2, ... for the doc).
# one line per relevant optimization step across n, baseline at the bottom. # one line per relevant optimization step across n, baseline at the bottom.
@@ -399,7 +387,7 @@ ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False) ax.spines["right"].set_visible(False)
plt.tight_layout() plt.tight_layout()
label_lines_above(ax, ends, fontsize=6.5, dy_frac=0.02, halo=0) label_lines_above(ax, ends, fontsize=6.5, dy_frac=0.02, halo=0)
plt.savefig("analysis/fig_milestones.png", dpi=170, bbox_inches="tight") plt.savefig("analysis/fig_milestones.svg", bbox_inches="tight")
#plt.show() #plt.show()
@@ -449,7 +437,8 @@ ax.set_xscale("log")
ax.set_yscale("log") ax.set_yscale("log")
ax.set_xticks([50, 100, 200, 500, 1000, 2000, 5000]) ax.set_xticks([50, 100, 200, 500, 1000, 2000, 5000])
ax.set_xticklabels(["50", "100", "200", "500", "1k", "2k", "5k"], fontweight="bold") ax.set_xticklabels(["50", "100", "200", "500", "1k", "2k", "5k"],
fontweight="bold")
ax.set_yticks([1, 2, 5, 10, 20]) ax.set_yticks([1, 2, 5, 10, 20])
ax.set_yticklabels(["1x", "2x", "5x", "10x", "20x"], fontweight="bold") ax.set_yticklabels(["1x", "2x", "5x", "10x", "20x"], fontweight="bold")
@@ -462,7 +451,7 @@ ax.set_ylim(0.8, 28)
ax.set_xlabel("Number of Pedestrians", fontweight="bold", fontsize=9) ax.set_xlabel("Number of Pedestrians", fontweight="bold", fontsize=9)
# ax.set_ylabel("Speedup", fontweight="bold", fontsize=9) # ax.set_ylabel("Speedup", fontweight="bold", fontsize=9)
plt.title( plt.title(
'Runtime Speedup\nCPU: AMD Ryzen AI 7 350 w/ Radeon 860M @ 2 GHz\nCompiler: g++ (Debian 15.2.0-17) 15.2.0\nFlags: -O3 -march=native -std=c++23 -Wall -Wextra -flto', 'Runtime Speedup\nCPU: AMD Ryzen AI 7 350 @ 2 GHz\nCompiler: g++ (Debian 15.2.0-17) 15.2.0\nFlags: -O3 -march=native -std=c++23 -Wall -Wextra -flto',
loc='left', loc='left',
size=9, size=9,
fontweight="bold") fontweight="bold")
+316
View File
@@ -0,0 +1,316 @@
variant,n,n_iter,W,Q_per_iter,I,cycles,flops_per_cycle
variant_AVX512_1,50,200,40690000,6512.0,31.24,12357341.2,3.293
variant_AVX512_1,100,200,157220000,12912.0,60.88,42690045.0,3.683
variant_AVX512_1,200,200,619080000,25712.0,120.39,149289520.0,4.147
variant_AVX512_1,500,200,3826100000,64112.0,298.39,895752980.0,4.271
variant_AVX512_1,1000,200,15255400000,128112.0,595.39,3427521146.7,4.451
variant_AVX512_1,2000,200,60910800000,256112.0,1189.14,13524851386.7,4.504
variant_AVX512_1,5000,200,380277000000,640112.0,2970.39,83786559000.0,4.539
variant_AVX512_1,10000,200,1520554000000,1280112.0,5939.14,346902390090.0,4.383
variant_baseline,50,200,36740000,6512.0,28.21,27452843.3,1.338
variant_baseline,100,200,145480000,12912.0,56.34,108607106.7,1.34
variant_baseline,200,200,578960000,25712.0,112.59,435167353.3,1.33
variant_baseline,500,200,3607400000,64112.0,281.34,2807013360.0,1.285
variant_baseline,1000,200,14414800000,128112.0,562.59,11381234466.7,1.267
variant_baseline,2000,200,57629600000,256112.0,1125.09,46436426300.0,1.241
variant_baseline,5000,200,360074000000,640112.0,2812.59,312703123826.7,1.151
variant_branchless,50,200,37920000,6512.0,29.12,32528650.0,1.166
variant_branchless,100,200,149840000,12912.0,58.02,130689786.7,1.147
variant_branchless,200,200,595680000,25712.0,115.84,544820746.7,1.093
variant_branchless,500,200,3709200000,64112.0,289.28,3560289460.0,1.042
variant_branchless,1000,200,14818400000,128112.0,578.34,14393150806.7,1.03
variant_branchless,2000,200,59236800000,256112.0,1156.46,59210476113.3,1.0
variant_branchless,5000,200,370092000000,640112.0,2890.84,385464816373.3,0.96
variant_branchless_sqrtfree,50,200,37920000,6512.0,29.12,31693365.0,1.196
variant_branchless_sqrtfree,100,200,149840000,12912.0,58.02,124691126.7,1.202
variant_branchless_sqrtfree,200,200,595680000,25712.0,115.84,494602046.7,1.204
variant_branchless_sqrtfree,500,200,3709200000,64112.0,289.28,3078930946.7,1.205
variant_branchless_sqrtfree,1000,200,14818400000,128112.0,578.34,12280066680.0,1.207
variant_branchless_sqrtfree,2000,200,59236800000,256112.0,1156.46,49188518600.0,1.204
variant_branchless_sqrtfree,5000,200,370092000000,640112.0,2890.84,308663505060.0,1.199
variant_cutoff,50,200,36900000,6512.0,28.33,17730605.8,2.081
variant_cutoff,100,200,145800000,12912.0,56.46,76248960.0,1.912
variant_cutoff,200,200,579600000,25712.0,112.71,267962706.7,2.163
variant_cutoff,500,200,3609000000,64112.0,281.46,1895310460.0,1.904
variant_cutoff,1000,200,14418000000,128112.0,562.71,7727298866.7,1.866
variant_cutoff,2000,200,57636000000,256112.0,1125.21,32411782673.3,1.778
variant_cutoff,5000,200,360090000000,640112.0,2812.71,216604501193.3,1.662
variant_cutoff_callsite,50,200,36900000,6512.0,28.33,16724109.2,2.206
variant_cutoff_callsite,100,200,145800000,12912.0,56.46,71482436.7,2.04
variant_cutoff_callsite,200,200,579600000,25712.0,112.71,254096566.7,2.281
variant_cutoff_callsite,500,200,3609000000,64112.0,281.46,1819565306.7,1.983
variant_cutoff_callsite,1000,200,14418000000,128112.0,562.71,7520631446.7,1.917
variant_cutoff_callsite,2000,200,57636000000,256112.0,1125.21,31026276366.7,1.858
variant_cutoff_callsite,5000,200,360090000000,640112.0,2812.71,211550331440.0,1.702
variant_float_baseline,50,200,21950000,3256.0,33.71,24694491.3,0.889
variant_float_baseline,100,200,86900000,6456.0,67.3,96417530.7,0.901
variant_float_baseline,200,200,345800000,12856.0,134.49,383608277.3,0.901
variant_float_baseline,500,200,2154500000,32056.0,336.05,2749099520.0,0.784
variant_float_baseline,1000,200,8609000000,64056.0,671.99,11748012373.3,0.733
variant_float_baseline,2000,200,34418000000,128056.0,1343.87,51879605589.3,0.663
variant_float_baseline,5000,200,215045000000,320056.0,3359.49,369651034794.7,0.582
variant_float_inlining,50,200,36750000,3256.0,56.43,20938618.7,1.755
variant_float_inlining,100,200,145500000,6456.0,112.69,83407050.7,1.744
variant_float_inlining,200,200,579000000,12856.0,225.19,338390005.3,1.711
variant_float_inlining,500,200,3607500000,32056.0,562.69,2457371306.7,1.468
variant_float_inlining,1000,200,14415000000,64056.0,1125.19,10667126784.0,1.351
variant_float_inlining,2000,200,57630000000,128056.0,2250.19,47520261461.3,1.213
variant_float_inlining,5000,200,360075000000,320056.0,5625.19,341753222485.3,1.054
variant_float_inlining_SoA,50,200,36750000,3256.0,56.43,21048408.0,1.746
variant_float_inlining_SoA,100,200,145500000,6456.0,112.69,84708077.3,1.718
variant_float_inlining_SoA,200,200,579000000,12856.0,225.19,336827125.3,1.719
variant_float_inlining_SoA,500,200,3607500000,32056.0,562.69,2477081600.0,1.456
variant_float_inlining_SoA,1000,200,14415000000,64056.0,1125.19,10766873600.0,1.339
variant_float_inlining_SoA,2000,200,57630000000,128056.0,2250.19,47988983125.3,1.201
variant_float_inlining_SoA,5000,200,360075000000,320056.0,5625.19,345895436288.0,1.041
variant_float_inlining_SoA_AVX2,50,200,42520000,3256.0,65.29,9238852.3,4.602
variant_float_inlining_SoA_AVX2,100,200,155120000,6456.0,120.14,31443590.0,4.933
variant_float_inlining_SoA_AVX2,200,200,590560000,12856.0,229.68,117080762.7,5.044
variant_float_inlining_SoA_AVX2,500,200,3695600000,32056.0,576.43,715304192.0,5.166
variant_float_inlining_SoA_AVX2,1000,200,14632800000,64056.0,1142.19,2914458538.7,5.021
variant_float_inlining_SoA_AVX2,2000,200,58465600000,128056.0,2282.81,12570639018.7,4.651
variant_float_inlining_SoA_AVX2,5000,200,365164000000,320056.0,5704.69,91014157653.3,4.012
variant_float_inlining_SoA_AVX2,10000,200,1460328000000,640056.0,11407.81,410624917504.0,3.556
variant_float_inlining_SoA_AVX2_polyexp,50,200,42520000,3256.0,65.29,5861893.7,7.254
variant_float_inlining_SoA_AVX2_polyexp,100,200,155120000,6456.0,120.14,19739642.7,7.858
variant_float_inlining_SoA_AVX2_polyexp,200,200,590560000,12856.0,229.68,71656157.3,8.242
variant_float_inlining_SoA_AVX2_polyexp,500,200,3695600000,32056.0,576.43,435824629.3,8.48
variant_float_inlining_SoA_AVX2_polyexp,1000,200,14632800000,64056.0,1142.19,1699931264.0,8.608
variant_float_inlining_SoA_AVX2_polyexp,2000,200,58465600000,128056.0,2282.81,6739927722.7,8.675
variant_float_inlining_SoA_AVX2_polyexp,5000,200,365164000000,320056.0,5704.69,42246128981.3,8.644
variant_float_inlining_SoA_AVX2_polyexp,10000,200,1460328000000,640056.0,11407.81,167398135125.3,8.724
variant_float_inlining_SoA_AVX2_polyexp_rsqrt,50,200,44760000,3256.0,68.73,5092671.3,8.789
variant_float_inlining_SoA_AVX2_polyexp_rsqrt,100,200,163440000,6456.0,126.58,16935302.7,9.651
variant_float_inlining_SoA_AVX2_polyexp_rsqrt,200,200,622560000,12856.0,242.13,60867113.3,10.228
variant_float_inlining_SoA_AVX2_polyexp_rsqrt,500,200,3897200000,32056.0,607.87,368188341.3,10.585
variant_float_inlining_SoA_AVX2_polyexp_rsqrt,1000,200,15432800000,64056.0,1204.63,1433606229.3,10.765
variant_float_inlining_SoA_AVX2_polyexp_rsqrt,2000,200,61665600000,128056.0,2407.76,5675097941.3,10.866
variant_float_inlining_SoA_AVX2_polyexp_rsqrt,5000,200,385164000000,320056.0,6017.13,35604179626.7,10.818
variant_float_inlining_SoA_AVX2_polyexp_rsqrt,10000,200,1540328000000,640056.0,12032.76,142421229568.0,10.815
variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt,50,200,44200000,3256.0,67.87,4881582.7,9.054
variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt,100,200,161360000,6456.0,124.97,15658073.7,10.305
variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt,200,200,614560000,12856.0,239.02,55530342.7,11.067
variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt,500,200,3846800000,32056.0,600.01,332591989.3,11.566
variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt,1000,200,15232800000,64056.0,1189.02,1292824832.0,11.783
variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt,2000,200,60865600000,128056.0,2376.52,5134484992.0,11.854
variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt,5000,200,380164000000,320056.0,5939.02,32074893312.0,11.852
variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt,10000,200,1520328000000,640056.0,11876.52,128325312512.0,11.847
variant_float_inlining_SoA_AVX512_polyexp,50,200,48510000,3256.0,74.49,4637544.0,10.46
variant_float_inlining_SoA_AVX512_polyexp,100,200,167100000,6456.0,129.41,14045100.0,11.897
variant_float_inlining_SoA_AVX512_polyexp,200,200,614520000,12856.0,239.0,47525244.0,12.93
variant_float_inlining_SoA_AVX512_polyexp,500,200,3755500000,32056.0,585.77,272034645.3,13.805
variant_float_inlining_SoA_AVX512_polyexp,1000,200,14752600000,64056.0,1151.54,1048487445.3,14.07
variant_float_inlining_SoA_AVX512_polyexp,2000,200,58471600000,128056.0,2283.05,4093863424.0,14.283
variant_float_inlining_SoA_AVX512_polyexp,5000,200,365763000000,320056.0,5714.05,25352017237.3,14.427
variant_float_inlining_SoA_AVX512_polyexp,10000,200,1460358000000,640056.0,11408.05,100878147584.0,14.476
variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt,50,200,48640000,3256.0,74.69,4900494.3,9.926
variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt,100,200,167360000,6456.0,129.62,14697632.0,11.387
variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt,200,200,615040000,12856.0,239.2,48755792.0,12.615
variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt,500,200,3756800000,32056.0,585.97,275589760.0,13.632
variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt,1000,200,14755200000,64056.0,1151.74,1056675861.3,13.964
variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt,2000,200,58476800000,128056.0,2283.25,4125949952.0,14.173
variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt,5000,200,365776000000,320056.0,5714.25,25582010368.0,14.298
variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt,10000,200,1460384000000,640056.0,11408.25,101411954688.0,14.401
variant_float_inlining_SoA_AVX512_polyexp_moreavx,50,200,48565600,3256.0,74.58,4427194.8,10.97
variant_float_inlining_SoA_AVX512_polyexp_moreavx,100,200,167124800,6456.0,129.43,13805986.0,12.105
variant_float_inlining_SoA_AVX512_polyexp_moreavx,200,200,614483200,12856.0,238.99,47360122.7,12.975
variant_float_inlining_SoA_AVX512_polyexp_moreavx,500,200,3755364800,32056.0,585.75,275211349.3,13.645
variant_float_inlining_SoA_AVX512_polyexp_moreavx,1000,200,14752243200,64056.0,1151.51,1064273109.3,13.861
variant_float_inlining_SoA_AVX512_polyexp_moreavx,2000,200,58470800000,128056.0,2283.02,4162095445.3,14.048
variant_float_inlining_SoA_AVX512_polyexp_moreavx,5000,200,365761043200,320056.0,5714.02,26013326677.3,14.061
variant_float_inlining_SoA_AVX512_polyexp_moreavx,10000,200,1460354000000,640056.0,11408.02,103437175466.7,14.118
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2,50,200,48885600,3256.0,75.07,4118233.3,11.871
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2,100,200,191211200,6456.0,148.09,14171592.7,13.493
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2,200,200,662569600,12856.0,257.69,46241824.0,14.328
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2,500,200,3758564800,32056.0,586.25,250078272.0,15.03
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2,1000,200,14992329600,64056.0,1170.25,978147584.0,15.327
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2,2000,200,58950886400,128056.0,2301.76,3802809770.7,15.502
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2,5000,200,366961129600,320056.0,5732.76,23565800789.3,15.572
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2,10000,200,1462754086400,640056.0,11426.77,93711062357.3,15.609
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp,50,200,48885600,3256.0,75.07,4128367.9,11.841
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp,100,200,191211200,6456.0,148.09,14211595.0,13.455
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp,200,200,662569600,12856.0,257.69,46258992.0,14.323
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp,500,200,3758564800,32056.0,586.25,249568197.3,15.06
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp,1000,200,14992329600,64056.0,1170.25,975399104.0,15.37
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp,2000,200,58950886400,128056.0,2301.76,3793620480.0,15.539
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp,5000,200,366961129600,320056.0,5732.76,23545909930.7,15.585
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp,10000,200,1462754086400,640056.0,11426.77,93541878442.7,15.637
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt,50,200,48936800,3256.0,75.15,4115576.2,11.891
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt,100,200,191313600,6456.0,148.17,14176439.7,13.495
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt,200,200,662748800,12856.0,257.76,46456041.3,14.266
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt,500,200,3758974400,32056.0,586.31,250008314.7,15.035
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt,1000,200,14993148800,64056.0,1170.32,980856746.7,15.286
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt,2000,200,58952499200,128056.0,2301.82,3823654485.3,15.418
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt,5000,200,366965148800,320056.0,5732.83,23661115392.0,15.509
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt,10000,200,1462762099200,640056.0,11426.83,94207066112.0,15.527
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt,50,200,51458400,3256.0,79.02,3483682.3,14.771
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt,100,200,201476800,6456.0,156.04,11811947.3,17.057
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt,200,200,698454400,12856.0,271.65,38043610.7,18.359
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt,500,200,3963467200,32056.0,618.21,203642453.3,19.463
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt,1000,200,15811734400,64056.0,1234.21,812575168.0,19.459
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt,2000,200,62176889600,128056.0,2427.72,3099994965.3,20.057
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt,5000,200,387058134400,320056.0,6046.73,19214568789.3,20.144
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt,10000,200,1542884089600,640056.0,12052.73,76092566186.7,20.276
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved,50,200,51618400,3256.0,79.27,3425376.1,15.069
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved,100,200,201796800,6456.0,156.29,11372835.7,17.744
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved,200,200,699094400,12856.0,271.89,36467076.0,19.171
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved,500,200,3965067200,32056.0,618.46,195375242.7,20.295
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved,1000,200,15814934400,64056.0,1234.46,757288490.7,20.884
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved,2000,200,62183289600,128056.0,2427.97,2960859477.3,21.002
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved,5000,200,387074134400,320056.0,6046.98,18368346112.0,21.073
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved,10000,200,1542916089600,640056.0,12052.98,72963047424.0,21.147
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp,50,200,51238400,3256.0,78.68,2439821.7,21.001
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp,100,200,175907200,6456.0,136.24,8335320.3,21.104
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp,200,200,647004800,12856.0,251.64,30687906.7,21.083
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp,500,200,3958067200,32056.0,617.37,186111381.3,21.267
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp,1000,200,15554044800,64056.0,1214.1,732997781.3,21.22
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp,2000,200,61661200000,128056.0,2407.59,2924175018.7,21.087
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp,5000,200,385769244800,320056.0,6026.59,18349806250.7,21.023
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp,10000,200,1540306000000,640056.0,12032.59,73231152469.3,21.033
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4,50,200,49525600,3256.0,76.05,3890111.5,12.731
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4,100,200,192491200,6456.0,149.08,13501827.7,14.257
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4,200,200,758742400,12856.0,295.09,49975976.0,15.182
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4,500,200,3764964800,32056.0,587.25,239680656.0,15.708
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4,1000,200,15005129600,64056.0,1171.25,945644394.7,15.868
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4,2000,200,59911059200,128056.0,2339.25,3715754325.3,16.124
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4,5000,200,369361302400,320056.0,5770.26,22745182890.7,16.239
variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4,10000,200,1467554259200,640056.0,11464.26,90144694272.0,16.28
variant_float_inlining_SoA_symmetry,50,200,35280000,3256.0,54.18,20621257.3,1.711
variant_float_inlining_SoA_symmetry,100,200,139560000,6456.0,108.09,81476053.3,1.713
variant_float_inlining_SoA_symmetry,200,200,555120000,12856.0,215.9,333481098.7,1.665
variant_float_inlining_SoA_symmetry,500,200,3457800000,32056.0,539.34,2568502357.3,1.346
variant_float_inlining_SoA_symmetry,1000,200,13815600000,64056.0,1078.4,11066851669.3,1.248
variant_float_inlining_SoA_symmetry,2000,200,55231200000,128056.0,2156.53,49006380373.3,1.127
variant_float_inlining_SoA_symmetry,5000,200,345078000000,320056.0,5390.9,349641758037.3,0.987
variant_float_inlining_SoA_symmetry_ILP_16,50,200,35920000,3256.0,55.16,17984374.0,1.997
variant_float_inlining_SoA_symmetry_ILP_16,100,200,140840000,6456.0,109.08,64325713.3,2.189
variant_float_inlining_SoA_symmetry_ILP_16,200,200,557680000,12856.0,216.89,252748229.3,2.206
variant_float_inlining_SoA_symmetry_ILP_16,500,200,3464200000,32056.0,540.34,1863017770.7,1.859
variant_float_inlining_SoA_symmetry_ILP_16,1000,200,13828400000,64056.0,1079.4,8033498282.7,1.721
variant_float_inlining_SoA_symmetry_ILP_16,2000,200,55256800000,128056.0,2157.52,33723052032.0,1.639
variant_float_inlining_SoA_symmetry_ILP_16,5000,200,345142000000,320056.0,5391.9,219469376170.7,1.573
variant_float_inlining_SoA_symmetry_ILP_2,50,200,35360000,3256.0,54.3,18593934.7,1.902
variant_float_inlining_SoA_symmetry_ILP_2,100,200,139720000,6456.0,108.21,73156496.0,1.91
variant_float_inlining_SoA_symmetry_ILP_2,200,200,555440000,12856.0,216.02,293520213.3,1.892
variant_float_inlining_SoA_symmetry_ILP_2,500,200,3458600000,32056.0,539.46,2178498048.0,1.588
variant_float_inlining_SoA_symmetry_ILP_2,1000,200,13817200000,64056.0,1078.53,9321413973.3,1.482
variant_float_inlining_SoA_symmetry_ILP_2,2000,200,55234400000,128056.0,2156.65,40795664384.0,1.354
variant_float_inlining_SoA_symmetry_ILP_2,5000,200,345086000000,320056.0,5391.03,287744611669.3,1.199
variant_float_inlining_SoA_symmetry_ILP_4,50,200,35440000,3256.0,54.42,17059464.0,2.077
variant_float_inlining_SoA_symmetry_ILP_4,100,200,139880000,6456.0,108.33,65813640.0,2.125
variant_float_inlining_SoA_symmetry_ILP_4,200,200,555760000,12856.0,216.15,266939221.3,2.082
variant_float_inlining_SoA_symmetry_ILP_4,500,200,3459400000,32056.0,539.59,1956788906.7,1.768
variant_float_inlining_SoA_symmetry_ILP_4,1000,200,13818800000,64056.0,1078.65,8363417088.0,1.652
variant_float_inlining_SoA_symmetry_ILP_4,2000,200,55237600000,128056.0,2156.78,35347298986.7,1.563
variant_float_inlining_SoA_symmetry_ILP_4,5000,200,345094000000,320056.0,5391.15,238227024554.7,1.449
variant_float_inlining_SoA_symmetry_ILP_8,50,200,35600000,3256.0,54.67,15194553.3,2.343
variant_float_inlining_SoA_symmetry_ILP_8,100,200,140200000,6456.0,108.58,56247389.3,2.493
variant_float_inlining_SoA_symmetry_ILP_8,200,200,556400000,12856.0,216.4,226057952.0,2.461
variant_float_inlining_SoA_symmetry_ILP_8,500,200,3461000000,32056.0,539.84,1703800277.3,2.031
variant_float_inlining_SoA_symmetry_ILP_8,1000,200,13822000000,64056.0,1078.9,7384531456.0,1.872
variant_float_inlining_SoA_symmetry_ILP_8,2000,200,55244000000,128056.0,2157.03,31106564096.0,1.776
variant_float_inlining_SoA_symmetry_ILP_8,5000,200,345110000000,320056.0,5391.4,205839695872.0,1.677
variant_inlining_7,50,200,36910000,6512.0,28.34,26121151.7,1.413
variant_inlining_7,100,200,145820000,12912.0,56.47,102845253.3,1.418
variant_inlining_7,200,200,579640000,25712.0,112.72,414933826.7,1.397
variant_inlining_7,500,200,3609100000,64112.0,281.47,2696322800.0,1.339
variant_inlining_7,1000,200,14418200000,128112.0,562.72,10910614700.0,1.321
variant_inlining_7,2000,200,57636400000,256112.0,1125.22,44697241900.0,1.289
variant_inlining_7,5000,200,360091000000,640112.0,2812.72,301883852420.0,1.193
variant_inlining_7_SoA,50,200,36910000,6512.0,28.34,35321441.7,1.045
variant_inlining_7_SoA,100,200,145820000,12912.0,56.47,135295173.3,1.078
variant_inlining_7_SoA,200,200,579640000,25712.0,112.72,568212960.0,1.02
variant_inlining_7_SoA,500,200,3609100000,64112.0,281.47,3522666700.0,1.025
variant_inlining_7_SoA,1000,200,14418200000,128112.0,562.72,13818697526.7,1.043
variant_inlining_7_SoA,2000,200,57636400000,256112.0,1125.22,55165644633.3,1.045
variant_inlining_7_SoA,5000,200,360091000000,640112.0,2812.72,339567715040.0,1.06
variant_inlining_7_SoA_AVX2,50,200,39660000,6512.0,30.45,16930248.3,2.343
variant_inlining_7_SoA_AVX2,100,200,149400000,12912.0,57.85,57593386.7,2.594
variant_inlining_7_SoA_AVX2,200,200,590800000,25712.0,114.89,221606086.7,2.666
variant_inlining_7_SoA_AVX2,500,200,3667000000,64112.0,285.98,1355735366.7,2.705
variant_inlining_7_SoA_AVX2,1000,200,14634000000,128112.0,571.14,5363998226.7,2.728
variant_inlining_7_SoA_AVX2,2000,200,58468000000,256112.0,1141.45,21340824240.0,2.74
variant_inlining_7_SoA_AVX2,5000,200,365170000000,640112.0,2852.39,118313683993.3,3.086
variant_inlining_7_SoA_AVX2,10000,200,1460340000000,1280112.0,5703.95,483403608680.0,3.021
variant_inlining_7_SoA_AVX2_polyexp,50,200,39660000,6512.0,30.45,11360558.3,3.491
variant_inlining_7_SoA_AVX2_polyexp,100,200,149400000,12912.0,57.85,39974676.7,3.737
variant_inlining_7_SoA_AVX2_polyexp,200,200,590800000,25712.0,114.89,152454126.7,3.875
variant_inlining_7_SoA_AVX2_polyexp,500,200,3667000000,64112.0,285.98,924841613.3,3.965
variant_inlining_7_SoA_AVX2_polyexp,1000,200,14634000000,128112.0,571.14,3677548486.7,3.979
variant_inlining_7_SoA_AVX2_polyexp,2000,200,58468000000,256112.0,1141.45,14646151666.7,3.992
variant_inlining_7_SoA_AVX2_polyexp,5000,200,365170000000,640112.0,2852.39,91635680486.7,3.985
variant_inlining_7_SoA_AVX2_polyexp,10000,200,1460340000000,1280112.0,5703.95,362144000826.7,4.032
variant_inlining_7_symmetry_1,50,200,35440000,6512.0,27.21,26691613.3,1.328
variant_inlining_7_symmetry_1,100,200,139880000,12912.0,54.17,104115826.7,1.344
variant_inlining_7_symmetry_1,200,200,555760000,25712.0,108.07,420221973.3,1.323
variant_inlining_7_symmetry_1,500,200,3459400000,64112.0,269.79,2784195260.0,1.243
variant_inlining_7_symmetry_1,1000,200,13818800000,128112.0,539.32,11440548280.0,1.208
variant_inlining_7_symmetry_1,2000,200,55237600000,256112.0,1078.39,46724088026.7,1.182
variant_inlining_7_symmetry_1,5000,200,345094000000,640112.0,2695.58,208238979073.3,1.657
variant_inlining_7_symmetry_2,50,200,35440000,6512.0,27.21,26825500.0,1.321
variant_inlining_7_symmetry_2,100,200,139880000,12912.0,54.17,104047720.0,1.344
variant_inlining_7_symmetry_2,200,200,555760000,25712.0,108.07,418572093.3,1.328
variant_inlining_7_symmetry_2,500,200,3459400000,64112.0,269.79,2796809913.3,1.237
variant_inlining_7_symmetry_2,1000,200,13818800000,128112.0,539.32,11473883373.3,1.204
variant_inlining_7_symmetry_2,2000,200,55237600000,256112.0,1078.39,47218873140.0,1.17
variant_inlining_7_symmetry_2,5000,200,345094000000,640112.0,2695.58,212940538246.7,1.621
variant_inlining_7_symmetry_2_ilp_1,50,200,35520000,6512.0,27.27,26576390.0,1.337
variant_inlining_7_symmetry_2_ilp_1,100,200,140040000,12912.0,54.23,102705346.7,1.364
variant_inlining_7_symmetry_2_ilp_1,200,200,556080000,25712.0,108.14,414853306.7,1.34
variant_inlining_7_symmetry_2_ilp_1,500,200,3460200000,64112.0,269.86,2745536040.0,1.26
variant_inlining_7_symmetry_2_ilp_1,1000,200,13820400000,128112.0,539.39,11346744286.7,1.218
variant_inlining_7_symmetry_2_ilp_1,2000,200,55240800000,256112.0,1078.45,45827858580.0,1.205
variant_inlining_7_symmetry_2_ilp_1,5000,200,345102000000,640112.0,2695.64,216145504520.0,1.597
variant_inlining_7_symmetry_2_ilp_2,50,200,35600000,6512.0,27.33,26837608.3,1.326
variant_inlining_7_symmetry_2_ilp_2,100,200,140200000,12912.0,54.29,104635440.0,1.34
variant_inlining_7_symmetry_2_ilp_2,200,200,556400000,25712.0,108.2,421424786.7,1.32
variant_inlining_7_symmetry_2_ilp_2,500,200,3461000000,64112.0,269.92,2800723726.7,1.236
variant_inlining_7_symmetry_2_ilp_2,1000,200,13822000000,128112.0,539.45,11627472146.7,1.189
variant_inlining_7_symmetry_2_ilp_2,2000,200,55244000000,256112.0,1078.51,47722643580.0,1.158
variant_inlining_7_symmetry_2_ilp_2,5000,200,345110000000,640112.0,2695.7,316224530286.7,1.091
variant_inlining_8,50,200,36750000,6512.0,28.22,25967831.7,1.415
variant_inlining_8,100,200,145500000,12912.0,56.34,102344446.7,1.422
variant_inlining_8,200,200,579000000,25712.0,112.59,412337820.0,1.404
variant_inlining_8,500,200,3607500000,64112.0,281.34,2712489206.7,1.33
variant_inlining_8,1000,200,14415000000,128112.0,562.59,10911941346.7,1.321
variant_inlining_8,2000,200,57630000000,256112.0,1125.09,44617296533.3,1.292
variant_inlining_8,5000,200,360075000000,640112.0,2812.59,302676303926.7,1.19
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt,50,200,42720000,6512.0,32.8,8373508.8,5.102
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt,100,200,155520000,12912.0,60.22,28637320.0,5.431
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt,200,200,591360000,25712.0,115.0,104580140.0,5.655
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt,500,200,3697600000,64112.0,288.37,637315293.3,5.802
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt,1000,200,14636800000,128112.0,571.25,2508058493.3,5.836
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt,2000,200,58473600000,256112.0,1141.56,9964964006.7,5.868
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt,5000,200,365184000000,640112.0,2852.5,61862883653.3,5.903
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt,10000,200,1460368000000,1280112.0,5704.06,246835017580.0,5.916
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr,50,200,42720000,6512.0,32.8,8324976.2,5.132
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr,100,200,155520000,12912.0,60.22,28461063.3,5.464
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr,200,200,591360000,25712.0,115.0,104197200.0,5.675
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr,500,200,3697600000,64112.0,288.37,634698826.7,5.826
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr,1000,200,14636800000,128112.0,571.25,2497438973.3,5.861
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr,2000,200,58473600000,256112.0,1141.56,9905258186.7,5.903
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr,5000,200,365184000000,640112.0,2852.5,61800905773.3,5.909
variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr,10000,200,1460368000000,1280112.0,5704.06,246638909100.0,5.921
variant_inlining_8_SoA_AVX512_polyexp_moreavx,50,200,42522400,6512.0,32.65,8002191.7,5.314
variant_inlining_8_SoA_AVX512_polyexp_moreavx,100,200,155081600,12912.0,60.05,27743588.3,5.59
variant_inlining_8_SoA_AVX512_polyexp_moreavx,200,200,590440000,25712.0,114.82,102487693.3,5.761
variant_inlining_8_SoA_AVX512_polyexp_moreavx,500,200,3695321600,64112.0,288.19,632610206.7,5.841
variant_inlining_8_SoA_AVX512_polyexp_moreavx,1000,200,14632200000,128112.0,571.07,2470303860.0,5.923
variant_inlining_8_SoA_AVX512_polyexp_moreavx,2000,200,58464400000,256112.0,1141.38,9838694466.7,5.942
variant_inlining_8_SoA_AVX512_polyexp_moreavx,5000,200,365161000000,640112.0,2852.32,61438052786.7,5.944
variant_inlining_8_SoA_AVX512_polyexp_moreavx,10000,200,1460322000000,1280112.0,5703.88,245546828340.0,5.947
variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2,50,200,48565600,6512.0,37.29,8523056.7,5.698
variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2,100,200,167124800,12912.0,64.72,27731721.7,6.026
variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2,200,200,614483200,25712.0,119.49,98272536.7,6.253
variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2,500,200,3755364800,64112.0,292.88,588475846.7,6.382
variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2,1000,200,14752243200,128112.0,575.76,2281054360.0,6.467
variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2,2000,200,58470800000,256112.0,1141.51,8988870633.3,6.505
variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2,5000,200,365761043200,640112.0,2857.01,56207738100.0,6.507
variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2,10000,200,1460354000000,1280112.0,5704.01,224126171313.3,6.516
variant_lut_exp,50,200,36900000,6512.0,28.33,28594623.3,1.29
variant_lut_exp,100,200,145800000,12912.0,56.46,108870166.7,1.339
variant_lut_exp,200,200,579600000,25712.0,112.71,435786306.7,1.33
variant_lut_exp,500,200,3609000000,64112.0,281.46,2898102033.3,1.245
variant_lut_exp,1000,200,14418000000,128112.0,562.71,11825768686.7,1.219
variant_lut_exp,2000,200,57636000000,256112.0,1125.21,47853617373.3,1.204
variant_lut_exp,5000,200,360090000000,640112.0,2812.71,305260944300.0,1.18
1 variant n n_iter W Q_per_iter I cycles flops_per_cycle
2 variant_AVX512_1 50 200 40690000 6512.0 31.24 12357341.2 3.293
3 variant_AVX512_1 100 200 157220000 12912.0 60.88 42690045.0 3.683
4 variant_AVX512_1 200 200 619080000 25712.0 120.39 149289520.0 4.147
5 variant_AVX512_1 500 200 3826100000 64112.0 298.39 895752980.0 4.271
6 variant_AVX512_1 1000 200 15255400000 128112.0 595.39 3427521146.7 4.451
7 variant_AVX512_1 2000 200 60910800000 256112.0 1189.14 13524851386.7 4.504
8 variant_AVX512_1 5000 200 380277000000 640112.0 2970.39 83786559000.0 4.539
9 variant_AVX512_1 10000 200 1520554000000 1280112.0 5939.14 346902390090.0 4.383
10 variant_baseline 50 200 36740000 6512.0 28.21 27452843.3 1.338
11 variant_baseline 100 200 145480000 12912.0 56.34 108607106.7 1.34
12 variant_baseline 200 200 578960000 25712.0 112.59 435167353.3 1.33
13 variant_baseline 500 200 3607400000 64112.0 281.34 2807013360.0 1.285
14 variant_baseline 1000 200 14414800000 128112.0 562.59 11381234466.7 1.267
15 variant_baseline 2000 200 57629600000 256112.0 1125.09 46436426300.0 1.241
16 variant_baseline 5000 200 360074000000 640112.0 2812.59 312703123826.7 1.151
17 variant_branchless 50 200 37920000 6512.0 29.12 32528650.0 1.166
18 variant_branchless 100 200 149840000 12912.0 58.02 130689786.7 1.147
19 variant_branchless 200 200 595680000 25712.0 115.84 544820746.7 1.093
20 variant_branchless 500 200 3709200000 64112.0 289.28 3560289460.0 1.042
21 variant_branchless 1000 200 14818400000 128112.0 578.34 14393150806.7 1.03
22 variant_branchless 2000 200 59236800000 256112.0 1156.46 59210476113.3 1.0
23 variant_branchless 5000 200 370092000000 640112.0 2890.84 385464816373.3 0.96
24 variant_branchless_sqrtfree 50 200 37920000 6512.0 29.12 31693365.0 1.196
25 variant_branchless_sqrtfree 100 200 149840000 12912.0 58.02 124691126.7 1.202
26 variant_branchless_sqrtfree 200 200 595680000 25712.0 115.84 494602046.7 1.204
27 variant_branchless_sqrtfree 500 200 3709200000 64112.0 289.28 3078930946.7 1.205
28 variant_branchless_sqrtfree 1000 200 14818400000 128112.0 578.34 12280066680.0 1.207
29 variant_branchless_sqrtfree 2000 200 59236800000 256112.0 1156.46 49188518600.0 1.204
30 variant_branchless_sqrtfree 5000 200 370092000000 640112.0 2890.84 308663505060.0 1.199
31 variant_cutoff 50 200 36900000 6512.0 28.33 17730605.8 2.081
32 variant_cutoff 100 200 145800000 12912.0 56.46 76248960.0 1.912
33 variant_cutoff 200 200 579600000 25712.0 112.71 267962706.7 2.163
34 variant_cutoff 500 200 3609000000 64112.0 281.46 1895310460.0 1.904
35 variant_cutoff 1000 200 14418000000 128112.0 562.71 7727298866.7 1.866
36 variant_cutoff 2000 200 57636000000 256112.0 1125.21 32411782673.3 1.778
37 variant_cutoff 5000 200 360090000000 640112.0 2812.71 216604501193.3 1.662
38 variant_cutoff_callsite 50 200 36900000 6512.0 28.33 16724109.2 2.206
39 variant_cutoff_callsite 100 200 145800000 12912.0 56.46 71482436.7 2.04
40 variant_cutoff_callsite 200 200 579600000 25712.0 112.71 254096566.7 2.281
41 variant_cutoff_callsite 500 200 3609000000 64112.0 281.46 1819565306.7 1.983
42 variant_cutoff_callsite 1000 200 14418000000 128112.0 562.71 7520631446.7 1.917
43 variant_cutoff_callsite 2000 200 57636000000 256112.0 1125.21 31026276366.7 1.858
44 variant_cutoff_callsite 5000 200 360090000000 640112.0 2812.71 211550331440.0 1.702
45 variant_float_baseline 50 200 21950000 3256.0 33.71 24694491.3 0.889
46 variant_float_baseline 100 200 86900000 6456.0 67.3 96417530.7 0.901
47 variant_float_baseline 200 200 345800000 12856.0 134.49 383608277.3 0.901
48 variant_float_baseline 500 200 2154500000 32056.0 336.05 2749099520.0 0.784
49 variant_float_baseline 1000 200 8609000000 64056.0 671.99 11748012373.3 0.733
50 variant_float_baseline 2000 200 34418000000 128056.0 1343.87 51879605589.3 0.663
51 variant_float_baseline 5000 200 215045000000 320056.0 3359.49 369651034794.7 0.582
52 variant_float_inlining 50 200 36750000 3256.0 56.43 20938618.7 1.755
53 variant_float_inlining 100 200 145500000 6456.0 112.69 83407050.7 1.744
54 variant_float_inlining 200 200 579000000 12856.0 225.19 338390005.3 1.711
55 variant_float_inlining 500 200 3607500000 32056.0 562.69 2457371306.7 1.468
56 variant_float_inlining 1000 200 14415000000 64056.0 1125.19 10667126784.0 1.351
57 variant_float_inlining 2000 200 57630000000 128056.0 2250.19 47520261461.3 1.213
58 variant_float_inlining 5000 200 360075000000 320056.0 5625.19 341753222485.3 1.054
59 variant_float_inlining_SoA 50 200 36750000 3256.0 56.43 21048408.0 1.746
60 variant_float_inlining_SoA 100 200 145500000 6456.0 112.69 84708077.3 1.718
61 variant_float_inlining_SoA 200 200 579000000 12856.0 225.19 336827125.3 1.719
62 variant_float_inlining_SoA 500 200 3607500000 32056.0 562.69 2477081600.0 1.456
63 variant_float_inlining_SoA 1000 200 14415000000 64056.0 1125.19 10766873600.0 1.339
64 variant_float_inlining_SoA 2000 200 57630000000 128056.0 2250.19 47988983125.3 1.201
65 variant_float_inlining_SoA 5000 200 360075000000 320056.0 5625.19 345895436288.0 1.041
66 variant_float_inlining_SoA_AVX2 50 200 42520000 3256.0 65.29 9238852.3 4.602
67 variant_float_inlining_SoA_AVX2 100 200 155120000 6456.0 120.14 31443590.0 4.933
68 variant_float_inlining_SoA_AVX2 200 200 590560000 12856.0 229.68 117080762.7 5.044
69 variant_float_inlining_SoA_AVX2 500 200 3695600000 32056.0 576.43 715304192.0 5.166
70 variant_float_inlining_SoA_AVX2 1000 200 14632800000 64056.0 1142.19 2914458538.7 5.021
71 variant_float_inlining_SoA_AVX2 2000 200 58465600000 128056.0 2282.81 12570639018.7 4.651
72 variant_float_inlining_SoA_AVX2 5000 200 365164000000 320056.0 5704.69 91014157653.3 4.012
73 variant_float_inlining_SoA_AVX2 10000 200 1460328000000 640056.0 11407.81 410624917504.0 3.556
74 variant_float_inlining_SoA_AVX2_polyexp 50 200 42520000 3256.0 65.29 5861893.7 7.254
75 variant_float_inlining_SoA_AVX2_polyexp 100 200 155120000 6456.0 120.14 19739642.7 7.858
76 variant_float_inlining_SoA_AVX2_polyexp 200 200 590560000 12856.0 229.68 71656157.3 8.242
77 variant_float_inlining_SoA_AVX2_polyexp 500 200 3695600000 32056.0 576.43 435824629.3 8.48
78 variant_float_inlining_SoA_AVX2_polyexp 1000 200 14632800000 64056.0 1142.19 1699931264.0 8.608
79 variant_float_inlining_SoA_AVX2_polyexp 2000 200 58465600000 128056.0 2282.81 6739927722.7 8.675
80 variant_float_inlining_SoA_AVX2_polyexp 5000 200 365164000000 320056.0 5704.69 42246128981.3 8.644
81 variant_float_inlining_SoA_AVX2_polyexp 10000 200 1460328000000 640056.0 11407.81 167398135125.3 8.724
82 variant_float_inlining_SoA_AVX2_polyexp_rsqrt 50 200 44760000 3256.0 68.73 5092671.3 8.789
83 variant_float_inlining_SoA_AVX2_polyexp_rsqrt 100 200 163440000 6456.0 126.58 16935302.7 9.651
84 variant_float_inlining_SoA_AVX2_polyexp_rsqrt 200 200 622560000 12856.0 242.13 60867113.3 10.228
85 variant_float_inlining_SoA_AVX2_polyexp_rsqrt 500 200 3897200000 32056.0 607.87 368188341.3 10.585
86 variant_float_inlining_SoA_AVX2_polyexp_rsqrt 1000 200 15432800000 64056.0 1204.63 1433606229.3 10.765
87 variant_float_inlining_SoA_AVX2_polyexp_rsqrt 2000 200 61665600000 128056.0 2407.76 5675097941.3 10.866
88 variant_float_inlining_SoA_AVX2_polyexp_rsqrt 5000 200 385164000000 320056.0 6017.13 35604179626.7 10.818
89 variant_float_inlining_SoA_AVX2_polyexp_rsqrt 10000 200 1540328000000 640056.0 12032.76 142421229568.0 10.815
90 variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt 50 200 44200000 3256.0 67.87 4881582.7 9.054
91 variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt 100 200 161360000 6456.0 124.97 15658073.7 10.305
92 variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt 200 200 614560000 12856.0 239.02 55530342.7 11.067
93 variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt 500 200 3846800000 32056.0 600.01 332591989.3 11.566
94 variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt 1000 200 15232800000 64056.0 1189.02 1292824832.0 11.783
95 variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt 2000 200 60865600000 128056.0 2376.52 5134484992.0 11.854
96 variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt 5000 200 380164000000 320056.0 5939.02 32074893312.0 11.852
97 variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt 10000 200 1520328000000 640056.0 11876.52 128325312512.0 11.847
98 variant_float_inlining_SoA_AVX512_polyexp 50 200 48510000 3256.0 74.49 4637544.0 10.46
99 variant_float_inlining_SoA_AVX512_polyexp 100 200 167100000 6456.0 129.41 14045100.0 11.897
100 variant_float_inlining_SoA_AVX512_polyexp 200 200 614520000 12856.0 239.0 47525244.0 12.93
101 variant_float_inlining_SoA_AVX512_polyexp 500 200 3755500000 32056.0 585.77 272034645.3 13.805
102 variant_float_inlining_SoA_AVX512_polyexp 1000 200 14752600000 64056.0 1151.54 1048487445.3 14.07
103 variant_float_inlining_SoA_AVX512_polyexp 2000 200 58471600000 128056.0 2283.05 4093863424.0 14.283
104 variant_float_inlining_SoA_AVX512_polyexp 5000 200 365763000000 320056.0 5714.05 25352017237.3 14.427
105 variant_float_inlining_SoA_AVX512_polyexp 10000 200 1460358000000 640056.0 11408.05 100878147584.0 14.476
106 variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt 50 200 48640000 3256.0 74.69 4900494.3 9.926
107 variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt 100 200 167360000 6456.0 129.62 14697632.0 11.387
108 variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt 200 200 615040000 12856.0 239.2 48755792.0 12.615
109 variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt 500 200 3756800000 32056.0 585.97 275589760.0 13.632
110 variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt 1000 200 14755200000 64056.0 1151.74 1056675861.3 13.964
111 variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt 2000 200 58476800000 128056.0 2283.25 4125949952.0 14.173
112 variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt 5000 200 365776000000 320056.0 5714.25 25582010368.0 14.298
113 variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt 10000 200 1460384000000 640056.0 11408.25 101411954688.0 14.401
114 variant_float_inlining_SoA_AVX512_polyexp_moreavx 50 200 48565600 3256.0 74.58 4427194.8 10.97
115 variant_float_inlining_SoA_AVX512_polyexp_moreavx 100 200 167124800 6456.0 129.43 13805986.0 12.105
116 variant_float_inlining_SoA_AVX512_polyexp_moreavx 200 200 614483200 12856.0 238.99 47360122.7 12.975
117 variant_float_inlining_SoA_AVX512_polyexp_moreavx 500 200 3755364800 32056.0 585.75 275211349.3 13.645
118 variant_float_inlining_SoA_AVX512_polyexp_moreavx 1000 200 14752243200 64056.0 1151.51 1064273109.3 13.861
119 variant_float_inlining_SoA_AVX512_polyexp_moreavx 2000 200 58470800000 128056.0 2283.02 4162095445.3 14.048
120 variant_float_inlining_SoA_AVX512_polyexp_moreavx 5000 200 365761043200 320056.0 5714.02 26013326677.3 14.061
121 variant_float_inlining_SoA_AVX512_polyexp_moreavx 10000 200 1460354000000 640056.0 11408.02 103437175466.7 14.118
122 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2 50 200 48885600 3256.0 75.07 4118233.3 11.871
123 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2 100 200 191211200 6456.0 148.09 14171592.7 13.493
124 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2 200 200 662569600 12856.0 257.69 46241824.0 14.328
125 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2 500 200 3758564800 32056.0 586.25 250078272.0 15.03
126 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2 1000 200 14992329600 64056.0 1170.25 978147584.0 15.327
127 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2 2000 200 58950886400 128056.0 2301.76 3802809770.7 15.502
128 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2 5000 200 366961129600 320056.0 5732.76 23565800789.3 15.572
129 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2 10000 200 1462754086400 640056.0 11426.77 93711062357.3 15.609
130 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp 50 200 48885600 3256.0 75.07 4128367.9 11.841
131 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp 100 200 191211200 6456.0 148.09 14211595.0 13.455
132 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp 200 200 662569600 12856.0 257.69 46258992.0 14.323
133 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp 500 200 3758564800 32056.0 586.25 249568197.3 15.06
134 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp 1000 200 14992329600 64056.0 1170.25 975399104.0 15.37
135 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp 2000 200 58950886400 128056.0 2301.76 3793620480.0 15.539
136 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp 5000 200 366961129600 320056.0 5732.76 23545909930.7 15.585
137 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp 10000 200 1462754086400 640056.0 11426.77 93541878442.7 15.637
138 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt 50 200 48936800 3256.0 75.15 4115576.2 11.891
139 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt 100 200 191313600 6456.0 148.17 14176439.7 13.495
140 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt 200 200 662748800 12856.0 257.76 46456041.3 14.266
141 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt 500 200 3758974400 32056.0 586.31 250008314.7 15.035
142 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt 1000 200 14993148800 64056.0 1170.32 980856746.7 15.286
143 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt 2000 200 58952499200 128056.0 2301.82 3823654485.3 15.418
144 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt 5000 200 366965148800 320056.0 5732.83 23661115392.0 15.509
145 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt 10000 200 1462762099200 640056.0 11426.83 94207066112.0 15.527
146 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt 50 200 51458400 3256.0 79.02 3483682.3 14.771
147 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt 100 200 201476800 6456.0 156.04 11811947.3 17.057
148 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt 200 200 698454400 12856.0 271.65 38043610.7 18.359
149 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt 500 200 3963467200 32056.0 618.21 203642453.3 19.463
150 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt 1000 200 15811734400 64056.0 1234.21 812575168.0 19.459
151 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt 2000 200 62176889600 128056.0 2427.72 3099994965.3 20.057
152 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt 5000 200 387058134400 320056.0 6046.73 19214568789.3 20.144
153 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt 10000 200 1542884089600 640056.0 12052.73 76092566186.7 20.276
154 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved 50 200 51618400 3256.0 79.27 3425376.1 15.069
155 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved 100 200 201796800 6456.0 156.29 11372835.7 17.744
156 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved 200 200 699094400 12856.0 271.89 36467076.0 19.171
157 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved 500 200 3965067200 32056.0 618.46 195375242.7 20.295
158 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved 1000 200 15814934400 64056.0 1234.46 757288490.7 20.884
159 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved 2000 200 62183289600 128056.0 2427.97 2960859477.3 21.002
160 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved 5000 200 387074134400 320056.0 6046.98 18368346112.0 21.073
161 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved 10000 200 1542916089600 640056.0 12052.98 72963047424.0 21.147
162 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp 50 200 51238400 3256.0 78.68 2439821.7 21.001
163 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp 100 200 175907200 6456.0 136.24 8335320.3 21.104
164 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp 200 200 647004800 12856.0 251.64 30687906.7 21.083
165 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp 500 200 3958067200 32056.0 617.37 186111381.3 21.267
166 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp 1000 200 15554044800 64056.0 1214.1 732997781.3 21.22
167 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp 2000 200 61661200000 128056.0 2407.59 2924175018.7 21.087
168 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp 5000 200 385769244800 320056.0 6026.59 18349806250.7 21.023
169 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_improved_moreilp 10000 200 1540306000000 640056.0 12032.59 73231152469.3 21.033
170 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4 50 200 49525600 3256.0 76.05 3890111.5 12.731
171 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4 100 200 192491200 6456.0 149.08 13501827.7 14.257
172 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4 200 200 758742400 12856.0 295.09 49975976.0 15.182
173 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4 500 200 3764964800 32056.0 587.25 239680656.0 15.708
174 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4 1000 200 15005129600 64056.0 1171.25 945644394.7 15.868
175 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4 2000 200 59911059200 128056.0 2339.25 3715754325.3 16.124
176 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4 5000 200 369361302400 320056.0 5770.26 22745182890.7 16.239
177 variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4 10000 200 1467554259200 640056.0 11464.26 90144694272.0 16.28
178 variant_float_inlining_SoA_symmetry 50 200 35280000 3256.0 54.18 20621257.3 1.711
179 variant_float_inlining_SoA_symmetry 100 200 139560000 6456.0 108.09 81476053.3 1.713
180 variant_float_inlining_SoA_symmetry 200 200 555120000 12856.0 215.9 333481098.7 1.665
181 variant_float_inlining_SoA_symmetry 500 200 3457800000 32056.0 539.34 2568502357.3 1.346
182 variant_float_inlining_SoA_symmetry 1000 200 13815600000 64056.0 1078.4 11066851669.3 1.248
183 variant_float_inlining_SoA_symmetry 2000 200 55231200000 128056.0 2156.53 49006380373.3 1.127
184 variant_float_inlining_SoA_symmetry 5000 200 345078000000 320056.0 5390.9 349641758037.3 0.987
185 variant_float_inlining_SoA_symmetry_ILP_16 50 200 35920000 3256.0 55.16 17984374.0 1.997
186 variant_float_inlining_SoA_symmetry_ILP_16 100 200 140840000 6456.0 109.08 64325713.3 2.189
187 variant_float_inlining_SoA_symmetry_ILP_16 200 200 557680000 12856.0 216.89 252748229.3 2.206
188 variant_float_inlining_SoA_symmetry_ILP_16 500 200 3464200000 32056.0 540.34 1863017770.7 1.859
189 variant_float_inlining_SoA_symmetry_ILP_16 1000 200 13828400000 64056.0 1079.4 8033498282.7 1.721
190 variant_float_inlining_SoA_symmetry_ILP_16 2000 200 55256800000 128056.0 2157.52 33723052032.0 1.639
191 variant_float_inlining_SoA_symmetry_ILP_16 5000 200 345142000000 320056.0 5391.9 219469376170.7 1.573
192 variant_float_inlining_SoA_symmetry_ILP_2 50 200 35360000 3256.0 54.3 18593934.7 1.902
193 variant_float_inlining_SoA_symmetry_ILP_2 100 200 139720000 6456.0 108.21 73156496.0 1.91
194 variant_float_inlining_SoA_symmetry_ILP_2 200 200 555440000 12856.0 216.02 293520213.3 1.892
195 variant_float_inlining_SoA_symmetry_ILP_2 500 200 3458600000 32056.0 539.46 2178498048.0 1.588
196 variant_float_inlining_SoA_symmetry_ILP_2 1000 200 13817200000 64056.0 1078.53 9321413973.3 1.482
197 variant_float_inlining_SoA_symmetry_ILP_2 2000 200 55234400000 128056.0 2156.65 40795664384.0 1.354
198 variant_float_inlining_SoA_symmetry_ILP_2 5000 200 345086000000 320056.0 5391.03 287744611669.3 1.199
199 variant_float_inlining_SoA_symmetry_ILP_4 50 200 35440000 3256.0 54.42 17059464.0 2.077
200 variant_float_inlining_SoA_symmetry_ILP_4 100 200 139880000 6456.0 108.33 65813640.0 2.125
201 variant_float_inlining_SoA_symmetry_ILP_4 200 200 555760000 12856.0 216.15 266939221.3 2.082
202 variant_float_inlining_SoA_symmetry_ILP_4 500 200 3459400000 32056.0 539.59 1956788906.7 1.768
203 variant_float_inlining_SoA_symmetry_ILP_4 1000 200 13818800000 64056.0 1078.65 8363417088.0 1.652
204 variant_float_inlining_SoA_symmetry_ILP_4 2000 200 55237600000 128056.0 2156.78 35347298986.7 1.563
205 variant_float_inlining_SoA_symmetry_ILP_4 5000 200 345094000000 320056.0 5391.15 238227024554.7 1.449
206 variant_float_inlining_SoA_symmetry_ILP_8 50 200 35600000 3256.0 54.67 15194553.3 2.343
207 variant_float_inlining_SoA_symmetry_ILP_8 100 200 140200000 6456.0 108.58 56247389.3 2.493
208 variant_float_inlining_SoA_symmetry_ILP_8 200 200 556400000 12856.0 216.4 226057952.0 2.461
209 variant_float_inlining_SoA_symmetry_ILP_8 500 200 3461000000 32056.0 539.84 1703800277.3 2.031
210 variant_float_inlining_SoA_symmetry_ILP_8 1000 200 13822000000 64056.0 1078.9 7384531456.0 1.872
211 variant_float_inlining_SoA_symmetry_ILP_8 2000 200 55244000000 128056.0 2157.03 31106564096.0 1.776
212 variant_float_inlining_SoA_symmetry_ILP_8 5000 200 345110000000 320056.0 5391.4 205839695872.0 1.677
213 variant_inlining_7 50 200 36910000 6512.0 28.34 26121151.7 1.413
214 variant_inlining_7 100 200 145820000 12912.0 56.47 102845253.3 1.418
215 variant_inlining_7 200 200 579640000 25712.0 112.72 414933826.7 1.397
216 variant_inlining_7 500 200 3609100000 64112.0 281.47 2696322800.0 1.339
217 variant_inlining_7 1000 200 14418200000 128112.0 562.72 10910614700.0 1.321
218 variant_inlining_7 2000 200 57636400000 256112.0 1125.22 44697241900.0 1.289
219 variant_inlining_7 5000 200 360091000000 640112.0 2812.72 301883852420.0 1.193
220 variant_inlining_7_SoA 50 200 36910000 6512.0 28.34 35321441.7 1.045
221 variant_inlining_7_SoA 100 200 145820000 12912.0 56.47 135295173.3 1.078
222 variant_inlining_7_SoA 200 200 579640000 25712.0 112.72 568212960.0 1.02
223 variant_inlining_7_SoA 500 200 3609100000 64112.0 281.47 3522666700.0 1.025
224 variant_inlining_7_SoA 1000 200 14418200000 128112.0 562.72 13818697526.7 1.043
225 variant_inlining_7_SoA 2000 200 57636400000 256112.0 1125.22 55165644633.3 1.045
226 variant_inlining_7_SoA 5000 200 360091000000 640112.0 2812.72 339567715040.0 1.06
227 variant_inlining_7_SoA_AVX2 50 200 39660000 6512.0 30.45 16930248.3 2.343
228 variant_inlining_7_SoA_AVX2 100 200 149400000 12912.0 57.85 57593386.7 2.594
229 variant_inlining_7_SoA_AVX2 200 200 590800000 25712.0 114.89 221606086.7 2.666
230 variant_inlining_7_SoA_AVX2 500 200 3667000000 64112.0 285.98 1355735366.7 2.705
231 variant_inlining_7_SoA_AVX2 1000 200 14634000000 128112.0 571.14 5363998226.7 2.728
232 variant_inlining_7_SoA_AVX2 2000 200 58468000000 256112.0 1141.45 21340824240.0 2.74
233 variant_inlining_7_SoA_AVX2 5000 200 365170000000 640112.0 2852.39 118313683993.3 3.086
234 variant_inlining_7_SoA_AVX2 10000 200 1460340000000 1280112.0 5703.95 483403608680.0 3.021
235 variant_inlining_7_SoA_AVX2_polyexp 50 200 39660000 6512.0 30.45 11360558.3 3.491
236 variant_inlining_7_SoA_AVX2_polyexp 100 200 149400000 12912.0 57.85 39974676.7 3.737
237 variant_inlining_7_SoA_AVX2_polyexp 200 200 590800000 25712.0 114.89 152454126.7 3.875
238 variant_inlining_7_SoA_AVX2_polyexp 500 200 3667000000 64112.0 285.98 924841613.3 3.965
239 variant_inlining_7_SoA_AVX2_polyexp 1000 200 14634000000 128112.0 571.14 3677548486.7 3.979
240 variant_inlining_7_SoA_AVX2_polyexp 2000 200 58468000000 256112.0 1141.45 14646151666.7 3.992
241 variant_inlining_7_SoA_AVX2_polyexp 5000 200 365170000000 640112.0 2852.39 91635680486.7 3.985
242 variant_inlining_7_SoA_AVX2_polyexp 10000 200 1460340000000 1280112.0 5703.95 362144000826.7 4.032
243 variant_inlining_7_symmetry_1 50 200 35440000 6512.0 27.21 26691613.3 1.328
244 variant_inlining_7_symmetry_1 100 200 139880000 12912.0 54.17 104115826.7 1.344
245 variant_inlining_7_symmetry_1 200 200 555760000 25712.0 108.07 420221973.3 1.323
246 variant_inlining_7_symmetry_1 500 200 3459400000 64112.0 269.79 2784195260.0 1.243
247 variant_inlining_7_symmetry_1 1000 200 13818800000 128112.0 539.32 11440548280.0 1.208
248 variant_inlining_7_symmetry_1 2000 200 55237600000 256112.0 1078.39 46724088026.7 1.182
249 variant_inlining_7_symmetry_1 5000 200 345094000000 640112.0 2695.58 208238979073.3 1.657
250 variant_inlining_7_symmetry_2 50 200 35440000 6512.0 27.21 26825500.0 1.321
251 variant_inlining_7_symmetry_2 100 200 139880000 12912.0 54.17 104047720.0 1.344
252 variant_inlining_7_symmetry_2 200 200 555760000 25712.0 108.07 418572093.3 1.328
253 variant_inlining_7_symmetry_2 500 200 3459400000 64112.0 269.79 2796809913.3 1.237
254 variant_inlining_7_symmetry_2 1000 200 13818800000 128112.0 539.32 11473883373.3 1.204
255 variant_inlining_7_symmetry_2 2000 200 55237600000 256112.0 1078.39 47218873140.0 1.17
256 variant_inlining_7_symmetry_2 5000 200 345094000000 640112.0 2695.58 212940538246.7 1.621
257 variant_inlining_7_symmetry_2_ilp_1 50 200 35520000 6512.0 27.27 26576390.0 1.337
258 variant_inlining_7_symmetry_2_ilp_1 100 200 140040000 12912.0 54.23 102705346.7 1.364
259 variant_inlining_7_symmetry_2_ilp_1 200 200 556080000 25712.0 108.14 414853306.7 1.34
260 variant_inlining_7_symmetry_2_ilp_1 500 200 3460200000 64112.0 269.86 2745536040.0 1.26
261 variant_inlining_7_symmetry_2_ilp_1 1000 200 13820400000 128112.0 539.39 11346744286.7 1.218
262 variant_inlining_7_symmetry_2_ilp_1 2000 200 55240800000 256112.0 1078.45 45827858580.0 1.205
263 variant_inlining_7_symmetry_2_ilp_1 5000 200 345102000000 640112.0 2695.64 216145504520.0 1.597
264 variant_inlining_7_symmetry_2_ilp_2 50 200 35600000 6512.0 27.33 26837608.3 1.326
265 variant_inlining_7_symmetry_2_ilp_2 100 200 140200000 12912.0 54.29 104635440.0 1.34
266 variant_inlining_7_symmetry_2_ilp_2 200 200 556400000 25712.0 108.2 421424786.7 1.32
267 variant_inlining_7_symmetry_2_ilp_2 500 200 3461000000 64112.0 269.92 2800723726.7 1.236
268 variant_inlining_7_symmetry_2_ilp_2 1000 200 13822000000 128112.0 539.45 11627472146.7 1.189
269 variant_inlining_7_symmetry_2_ilp_2 2000 200 55244000000 256112.0 1078.51 47722643580.0 1.158
270 variant_inlining_7_symmetry_2_ilp_2 5000 200 345110000000 640112.0 2695.7 316224530286.7 1.091
271 variant_inlining_8 50 200 36750000 6512.0 28.22 25967831.7 1.415
272 variant_inlining_8 100 200 145500000 12912.0 56.34 102344446.7 1.422
273 variant_inlining_8 200 200 579000000 25712.0 112.59 412337820.0 1.404
274 variant_inlining_8 500 200 3607500000 64112.0 281.34 2712489206.7 1.33
275 variant_inlining_8 1000 200 14415000000 128112.0 562.59 10911941346.7 1.321
276 variant_inlining_8 2000 200 57630000000 256112.0 1125.09 44617296533.3 1.292
277 variant_inlining_8 5000 200 360075000000 640112.0 2812.59 302676303926.7 1.19
278 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt 50 200 42720000 6512.0 32.8 8373508.8 5.102
279 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt 100 200 155520000 12912.0 60.22 28637320.0 5.431
280 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt 200 200 591360000 25712.0 115.0 104580140.0 5.655
281 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt 500 200 3697600000 64112.0 288.37 637315293.3 5.802
282 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt 1000 200 14636800000 128112.0 571.25 2508058493.3 5.836
283 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt 2000 200 58473600000 256112.0 1141.56 9964964006.7 5.868
284 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt 5000 200 365184000000 640112.0 2852.5 61862883653.3 5.903
285 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt 10000 200 1460368000000 1280112.0 5704.06 246835017580.0 5.916
286 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr 50 200 42720000 6512.0 32.8 8324976.2 5.132
287 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr 100 200 155520000 12912.0 60.22 28461063.3 5.464
288 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr 200 200 591360000 25712.0 115.0 104197200.0 5.675
289 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr 500 200 3697600000 64112.0 288.37 634698826.7 5.826
290 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr 1000 200 14636800000 128112.0 571.25 2497438973.3 5.861
291 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr 2000 200 58473600000 256112.0 1141.56 9905258186.7 5.903
292 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr 5000 200 365184000000 640112.0 2852.5 61800905773.3 5.909
293 variant_inlining_8_SoA_AVX512_polyexp_fastinvsqrt_sr 10000 200 1460368000000 1280112.0 5704.06 246638909100.0 5.921
294 variant_inlining_8_SoA_AVX512_polyexp_moreavx 50 200 42522400 6512.0 32.65 8002191.7 5.314
295 variant_inlining_8_SoA_AVX512_polyexp_moreavx 100 200 155081600 12912.0 60.05 27743588.3 5.59
296 variant_inlining_8_SoA_AVX512_polyexp_moreavx 200 200 590440000 25712.0 114.82 102487693.3 5.761
297 variant_inlining_8_SoA_AVX512_polyexp_moreavx 500 200 3695321600 64112.0 288.19 632610206.7 5.841
298 variant_inlining_8_SoA_AVX512_polyexp_moreavx 1000 200 14632200000 128112.0 571.07 2470303860.0 5.923
299 variant_inlining_8_SoA_AVX512_polyexp_moreavx 2000 200 58464400000 256112.0 1141.38 9838694466.7 5.942
300 variant_inlining_8_SoA_AVX512_polyexp_moreavx 5000 200 365161000000 640112.0 2852.32 61438052786.7 5.944
301 variant_inlining_8_SoA_AVX512_polyexp_moreavx 10000 200 1460322000000 1280112.0 5703.88 245546828340.0 5.947
302 variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2 50 200 48565600 6512.0 37.29 8523056.7 5.698
303 variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2 100 200 167124800 12912.0 64.72 27731721.7 6.026
304 variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2 200 200 614483200 25712.0 119.49 98272536.7 6.253
305 variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2 500 200 3755364800 64112.0 292.88 588475846.7 6.382
306 variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2 1000 200 14752243200 128112.0 575.76 2281054360.0 6.467
307 variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2 2000 200 58470800000 256112.0 1141.51 8988870633.3 6.505
308 variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2 5000 200 365761043200 640112.0 2857.01 56207738100.0 6.507
309 variant_inlining_8_SoA_AVX512_polyexp_moreavx_ilp_2 10000 200 1460354000000 1280112.0 5704.01 224126171313.3 6.516
310 variant_lut_exp 50 200 36900000 6512.0 28.33 28594623.3 1.29
311 variant_lut_exp 100 200 145800000 12912.0 56.46 108870166.7 1.339
312 variant_lut_exp 200 200 579600000 25712.0 112.71 435786306.7 1.33
313 variant_lut_exp 500 200 3609000000 64112.0 281.46 2898102033.3 1.245
314 variant_lut_exp 1000 200 14418000000 128112.0 562.71 11825768686.7 1.219
315 variant_lut_exp 2000 200 57636000000 256112.0 1125.21 47853617373.3 1.204
316 variant_lut_exp 5000 200 360090000000 640112.0 2812.71 305260944300.0 1.18
View File
+100
View File
@@ -0,0 +1,100 @@
# ADDs: n_iter * n_p * 4 +
# n_iter * n_p * ceil(((double) (n_p - 7)) / 8) * (1 / (ceil(((double) (n_p - 7)) / 8))) * 7 * 14 +
# n_iter * n_p * ceil(((double) (n_p - 7)) / 8) * (1 - 1 / (ceil(((double) (n_p - 7)) / 8))) * 224 +
# n_iter * n_p * (n_p - floor((double) n_p / 8) * 8) * 14 +
# n_iter * n_p * board.n_obstacles * 12 +
# n_iter * n_p * 7
# MULTs: n_iter * n_p * 4 +
# n_iter * n_p * ceil(((double) (n_p - 7)) / 8) * (1 / (ceil(((double) (n_p - 7)) / 8))) * 7 * 24 +
# n_iter * n_p * ceil(((double) (n_p - 7)) / 8) * (1 - 1 / (ceil(((double) (n_p - 7)) / 8))) * 352 +
# n_iter * n_p * (n_p - floor((double) n_p / 8) * 8) * 24 +
# n_iter * n_p * board.n_obstacles * 19 +
# n_iter * n_p * 17
# DIVs: n_iter * n_p * ceil(((double) (n_p - 7)) / 8) * (1 / (ceil(((double) (n_p - 7)) / 8))) * 7 +
# n_iter * n_p * ceil(((double) (n_p - 7)) / 8) * (1 - 1 / (ceil(((double) (n_p - 7)) / 8))) * 8 +
# n_iter * n_p * (n_p - floor((double) n_p / 8) * 8) +
# n_iter * n_p * board.n_obstacles +
# n_iter * n_p * 2
# SQRTs: n_iter * n_p * ceil(((double) (n_p - 7)) / 8) * (1 / (ceil(((double) (n_p - 7)) / 8))) * 7 * 3 +
# n_iter * n_p * ceil(((double) (n_p - 7)) / 8) * (1 - 1 / (ceil(((double) (n_p - 7)) / 8))) * 24 +
# n_iter * n_p * (n_p - floor((double) n_p / 8) * 8) * 3 +
# n_iter * n_p * board.n_obstacles +
# n_iter * n_p * 3
# EXPs: n_iter * n_p * ceil(((double) (n_p - 7)) / 8) * (1 / (ceil(((double) (n_p - 7)) / 8))) * 7 +
# n_iter * n_p * (n_p - floor((double) n_p / 8) * 8) +
# n_iter * n_p * board.n_obstacles
from math import ceil
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
chunks = ceil((n_p - 7) / 8) if n_p > 7 else 0
remainder = n_p - int(n_p // 8) * 8
if chunks > 0:
term1 = n_iter * n_p * chunks * (1 / chunks) * 7 * 14
term2 = n_iter * n_p * chunks * (1 - 1 / chunks) * 224
else:
term1 = 0
term2 = 0
return int(n_iter * n_p * 4 + term1 + term2 + n_iter * n_p * remainder * 14 +
n_iter * n_p * n_obs * 12 + n_iter * n_p * 7)
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
chunks = ceil((n_p - 7) / 8) if n_p > 7 else 0
remainder = n_p - int(n_p // 8) * 8
if chunks > 0:
term1 = n_iter * n_p * chunks * (1 / chunks) * 7 * 24
term2 = n_iter * n_p * chunks * (1 - 1 / chunks) * 352
else:
term1 = 0
term2 = 0
return int(n_iter * n_p * 4 + term1 + term2 + n_iter * n_p * remainder * 24 +
n_iter * n_p * n_obs * 19 + n_iter * n_p * 17)
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
chunks = ceil((n_p - 7) / 8) if n_p > 7 else 0
remainder = n_p - int(n_p // 8) * 8
if chunks > 0:
term1 = n_iter * n_p * chunks * (1 / chunks) * 7
term2 = n_iter * n_p * chunks * (1 - 1 / chunks) * 8
else:
term1 = 0
term2 = 0
return int(n_iter * n_p * 4 + term1 + term2 + n_iter * n_p * remainder +
n_iter * n_p * n_obs + n_iter * n_p * 2)
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
chunks = ceil((n_p - 7) / 8) if n_p > 7 else 0
remainder = n_p - int(n_p // 8) * 8
if chunks > 0:
term1 = n_iter * n_p * chunks * (1 / chunks) * 7 * 3
term2 = n_iter * n_p * chunks * (1 - 1 / chunks) * 24
else:
term1 = 0
term2 = 0
return int(n_iter * n_p * 4 + term1 + term2 + n_iter * n_p * remainder * 3 +
n_iter * n_p * n_obs + n_iter * n_p * 3)
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
chunks = ceil((n_p - 7) / 8) if n_p > 7 else 0
remainder = n_p - int(n_p // 8) * 8
if chunks > 0:
term1 = n_iter * n_p * chunks * (1 / chunks) * 7
else:
term1 = 0
return int(n_iter * n_p * 4 + term1 + n_iter * n_p * remainder +
n_iter * n_p * n_obs + n_iter * n_p * 3)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
+58
View File
@@ -0,0 +1,58 @@
# ADDs: n_iter * (
# n_p * 4 +
# n_p * (n_p - 1) * 14 +
# n_p * board.n_obstacles * 10 +
# n_p * 7
# )
# MULTs: n_iter * (
# n_p * 4
# n_p * (n_p - 1) * 24 +
# n_p * board.n_obstacles * 13 +
# n_p * 16
# )
# DIVs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles +
# n_p * 2
# )
# SQRTs: n_iter * (
# n_p * (n_p - 1) * 3 +
# n_p * board.n_obstacles +
# n_p * 3
# )
# EXPs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles
# )
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + n_p *
(n_p - 1) * 14 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + n_p *
(n_p - 1) * 24 + n_p * n_obs * 13 + n_p * 16))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) * 3 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
+27
View File
@@ -0,0 +1,27 @@
# n_iter * [n_p ** 2 * (15 A + 24 M + 1 D + 4 S + 1 E) + n_p * (- 4 A - 4 M + 1 D - 1 S - 1 E) + n_obstacles * n_p * (13 A + 19 M + 1 D + 2 S + 1 E)]
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 15 + n_p * (-4) + n_obs * n_p * 13))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 24 + n_p * (-4) + n_obs * n_p * 19))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * 1 + n_obs * n_p * 1))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 4 + n_p * (-1) + n_obs * n_p * 2))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * (-1) + n_obs * n_p * 1))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,27 @@
# n_iter * [n_p ** 2 * (15 A + 25 M + 1 D + 3 S + 1 E) + n_p * (- 4 A - 5 M + 1 D - 1 E) + n_obstacles * n_p * (13 A + 20 M + 1 D + 1 S + 1 E)]
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 15 + n_p * (-4) + n_obs * n_p * 13))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 25 + n_p * (-5) + n_obs * n_p * 20))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * 1 + n_obs * n_p * 1))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 3 + n_obs * n_p * 1))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * (-1) + n_obs * n_p * 1))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
+27
View File
@@ -0,0 +1,27 @@
# n_iter * [ n_p ** 2 * (14 A + 23 M + 1 D + 4 S + 1 E) + n_p * (- 3 A - 3 M + 1 D - 1 S - 1 E) + n_obstacles * n_p * (12 A + 18 M + 1 D + 2 S + 1 E) ]
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 14 + n_p * (-3) + n_obs * n_p * 12))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 23 + n_p * (-3) + n_obs * n_p * 18))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * 1 + n_obs * n_p * 1))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 4 + n_p * (-1) + n_obs * n_p * 2))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * (-1) + n_obs * n_p * 1))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
+27
View File
@@ -0,0 +1,27 @@
# n_iter * [ n_p ** 2 * (14 A + 23 M + 1 D + 4 S + 1 E) + n_p * (- 3 A - 3 M + 1 D - 1 S - 1 E) + n_obstacles * n_p * (12 A + 18 M + 1 D + 2 S + 1 E) ]
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 14 + n_p * (-3) + n_obs * n_p * 12))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 23 + n_p * (-3) + n_obs * n_p * 18))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * 1 + n_obs * n_p * 1))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 4 + n_p * (-1) + n_obs * n_p * 2))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * (-1) + n_obs * n_p * 1))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
+57
View File
@@ -0,0 +1,57 @@
# ADDs: n_iter * (
# n_p * 4 +
# n_p * (n_p - 1) * 14 +
# n_p * board.n_obstacles * 10 +
# n_p * 7
# )
# MULTs: n_iter * (
# n_p * 4
# n_p * (n_p - 1) * 24 +
# n_p * board.n_obstacles * 13 +
# n_p * 16
# )
# DIVs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles +
# n_p * 2
# )
# SQRTs: n_iter * (
# n_p * (n_p - 1) * 3 +
# n_p * board.n_obstacles +
# n_p * 3
# )
# EXPs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles
# )
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + n_p *
(n_p - 1) * 14 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + n_p *
(n_p - 1) * 24 + n_p * n_obs * 13 + n_p * 16))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) * 3 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p, n_obs) + exps(n_iter, n_p, n_obs)
+58
View File
@@ -0,0 +1,58 @@
# ADDs: n_iter * (
# n_p * 4 +
# n_p * (n_p - 1) * 14 +
# n_p * board.n_obstacles * 10 +
# n_p * 7
# )
# MULTs: n_iter * (
# n_p * 4
# n_p * (n_p - 1) * 24 +
# n_p * board.n_obstacles * 13 +
# n_p * 17
# )
# DIVs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles +
# n_p * 2
# )
# SQRTs: n_iter * (
# n_p * (n_p - 1) * 3 +
# n_p * board.n_obstacles +
# n_p * 3
# )
# EXPs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles
# )
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + n_p *
(n_p - 1) * 14 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + n_p *
(n_p - 1) * 24 + n_p * n_obs * 13 + n_p * 17))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) * 3 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,58 @@
# ADDs: n_iter * (
# n_p * 4 +
# n_p * (n_p - 1) * 14 +
# n_p * board.n_obstacles * 10 +
# n_p * 7
# )
# MULTs: n_iter * (
# n_p * 4
# n_p * (n_p - 1) * 24 +
# n_p * board.n_obstacles * 13 +
# n_p * 17
# )
# DIVs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles +
# n_p * 2
# )
# SQRTs: n_iter * (
# n_p * (n_p - 1) * 3 +
# n_p * board.n_obstacles +
# n_p * 3
# )
# EXPs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles
# )
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + n_p *
(n_p - 1) * 14 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + n_p *
(n_p - 1) * 24 + n_p * n_obs * 13 + n_p * 17))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) * 3 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,41 @@
# const int n_p_pad = (n_p + 7) & ~7;
# flops per iteration (one pass of the outer time loop):
# ADDs: n_p * 22 + n_p * n_p_pad * 15 + n_p * board.n_obstacles * 10 + n_p * 7
# MULTs: n_p * 4 + n_p * n_p_pad * 24 + n_p * board.n_obstacles * 13 + n_p * 16
# DIVs: n_p * n_p_pad * 1 + n_p * board.n_obstacles + n_p * 2
# SQRTs: n_p * n_p_pad * 3 + n_p * board.n_obstacles + n_p * 3
# EXPs: n_p * n_p_pad * 1 + n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter *
(n_p * 22 + n_p * n_p_pad * 15 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 24 + n_p * n_obs * 13 + n_p * 16))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * n_p_pad * 1 + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * n_p_pad * 1 + n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,41 @@
# const int n_p_pad = (n_p + 7) & ~7;
# flops per iteration (one pass of the outer time loop):
# ADDs: n_p * 22 + n_p * n_p_pad * 29 + n_p * board.n_obstacles * 10 + n_p * 7
# MULTs: n_p * 4 + n_p * n_p_pad * 40 + n_p * board.n_obstacles * 13 + n_p * 16
# DIVs: n_p * n_p_pad * 1 + n_p * board.n_obstacles + n_p * 2
# SQRTs: n_p * n_p_pad * 3 + n_p * board.n_obstacles + n_p * 3
# EXPs: n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter *
(n_p * 22 + n_p * n_p_pad * 29 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 40 + n_p * n_obs * 13 + n_p * 16))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * n_p_pad * 1 + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,41 @@
# const int n_p_pad = (n_p + 7) & ~7;
# flops per iteration (one pass of the outer time loop):
# ADDs: n_p * 22 + n_p * n_p_pad * 29 + n_p * board.n_obstacles * 10 + n_p * 7
# MULTs: n_p * 4 + n_p * n_p_pad * 42 + n_p * board.n_obstacles * 13 + n_p * 16
# DIVs: n_p * n_p_pad * 3 + n_p * board.n_obstacles + n_p * 2
# SQRTs: n_p * n_p_pad * 3 + n_p * board.n_obstacles + n_p * 3
# EXPs: n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter *
(n_p * 22 + n_p * n_p_pad * 29 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 42 + n_p * n_obs * 13 + n_p * 16))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,41 @@
# const int n_p_pad = (n_p + 7) & ~7;
# flops per iteration (one pass of the outer time loop):
# ADDs: n_p * 22 + n_p * n_p_pad * 28 + n_p * board.n_obstacles * 10 + n_p * 7
# MULTs: n_p * 4 + n_p * n_p_pad * 42 + n_p * board.n_obstacles * 13 + n_p * 16
# DIVs: n_p * n_p_pad * 3 + n_p * board.n_obstacles + n_p * 2
# SQRTs: n_p * n_p_pad * 3 + n_p * board.n_obstacles + n_p * 3
# EXPs: n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter *
(n_p * 22 + n_p * n_p_pad * 28 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 42 + n_p * n_obs * 13 + n_p * 16))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,62 @@
# const int n_p_pad = (n_p + 15) & ~15;
# ADDs: n_iter * (
# n_p * 36 +
# n_p * n_p_pad * 29 +
# n_p * board.n_obstacles * 10 +
# n_p * 7
# )
#
# MULTs: n_iter * (
# n_p * 4 +
# n_p * n_p_pad * 40 +
# n_p * board.n_obstacles * 13 +
# n_p * 17
# )
#
# DIVs: n_iter * (
# n_p * n_p_pad +
# n_p * board.n_obstacles +
# n_p * 2
# )
#
# SQRTs: n_iter * (
# n_p * n_p_pad * 3 +
# n_p * board.n_obstacles +
# n_p * 3
# )
#
# EXPs: n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter *
(n_p * 36 + n_p * n_p_pad * 29 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 40 + n_p * n_obs * 13 + n_p * 17))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * (n_p * n_p_pad + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * n_p * n_obs)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,61 @@
# const int n_p_pad = (n_p + 15) & ~15;
# ADDs: n_iter * (
# n_p * 36 +
# n_p * n_p_pad * 29 +
# n_p * board.n_obstacles * 10 +
# n_p * 11
# )
# MULTs: n_iter * (
# n_p * 4 +
# n_p * n_p_pad * 40 +
# n_p * board.n_obstacles * 13 +
# n_p * 30
# )
# DIVs: n_iter * (
# n_p * n_p_pad +
# n_p * board.n_obstacles
# )
# SQRTs: n_iter * (
# n_p * n_p_pad * 3 +
# n_p * board.n_obstacles +
# n_p
# )
# EXPs: n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter *
(n_p * 36 + n_p * n_p_pad * 29 + n_p * n_obs * 10 + n_p * 11))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 40 + n_p * n_obs * 13 + n_p * 30))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * (n_p * n_p_pad + n_p * n_obs))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * n_p * n_obs)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,62 @@
# const int n_p_pad = (n_p + 15) & ~15;
# ADDs: n_iter * (
# n_p * 36 +
# n_p * n_p_pad * 29 +
# n_p * board.n_obstacles * 10 +
# n_p_pad * 7
# )
# MULTs: n_iter * (
# n_p * 4 +
# n_p * n_p_pad * 40 +
# n_p * board.n_obstacles * 13 +
# n_p_pad * 15
# )
# DIVs: n_iter * (
# n_p * n_p_pad +
# n_p * board.n_obstacles +
# n_p_pad * 2
# )
# SQRTs: n_iter * (
# n_p * n_p_pad * 3 +
# n_p * board.n_obstacles +
# n_p_pad * 3
# )
# EXPs: n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter *
(n_p * 36 + n_p * n_p_pad * 29 + n_p * n_obs * 10 + n_p_pad * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 40 + n_p * n_obs * 13 + n_p_pad * 15))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * (n_p * n_p_pad + n_p * n_obs + n_p_pad * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p_pad * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * n_p * n_obs)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,62 @@
# const int n_p_pad = (n_p + 31) & ~31;
# ADDs: n_iter * (
# n_p * 68 +
# n_p * n_p_pad * 29 +
# n_p * board.n_obstacles * 10 +
# n_p_pad * 7
# )
# MULTs: n_iter * (
# n_p * 4 +
# n_p * n_p_pad * 40 +
# n_p * board.n_obstacles * 13 +
# n_p_pad * 15
# )
# SQRTs: n_iter * (
# n_p * n_p_pad * 3 +
# n_p * board.n_obstacles +
# n_p_pad * 3
# )
# DIVs: n_iter * (
# n_p * n_p_pad +
# n_p * board.n_obstacles +
# n_p_pad * 2
# )
# EXPs: n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter *
(n_p * 68 + n_p * n_p_pad * 29 + n_p * n_obs * 10 + n_p_pad * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 40 + n_p * n_obs * 13 + n_p_pad * 15))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * (n_p * n_p_pad + n_p * n_obs + n_p_pad * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p_pad * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * n_p * n_obs)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,62 @@
# const int n_p_pad = (n_p + 31) & ~31;
# ADDs: n_iter * (
# n_p * 68 +
# n_p * n_p_pad * 29 +
# n_p * board.n_obstacles * 10 +
# n_p_pad * 7
# )
# MULTs: n_iter * (
# n_p * 4 +
# n_p * n_p_pad * 40 +
# n_p * board.n_obstacles * 13 +
# n_p_pad * 15
# )
# DIVs: n_iter * (
# n_p * n_p_pad +
# n_p * board.n_obstacles +
# n_p_pad * 2
# )
# SQRTs: n_iter * (
# n_p * n_p_pad * 3 +
# n_p * board.n_obstacles +
# n_p_pad * 3
# )
# EXPs: n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter *
(n_p * 68 + n_p * n_p_pad * 29 + n_p * n_obs * 10 + n_p_pad * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 40 + n_p * n_obs * 13 + n_p_pad * 15))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * (n_p * n_p_pad + n_p * n_obs + n_p_pad * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p_pad * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * n_p * n_obs)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,62 @@
# const int n_p_pad = (n_p + 31) & ~31;
# ADDs: n_iter * (
# n_p * 68 +
# n_p * n_p_pad * 29
# n_p * board.n_obstacles * 10
# n_p_pad * 9
# )
# MULTs: n_iter * (
# n_p * 4 +
# n_p * n_p_pad * 40
# n_p * board.n_obstacles * 13
# n_p_pad * 17
# )
# DIVs: n_iter * (
# n_p * n_p_pad
# n_p * board.n_obstacles
# n_p_pad * 2
# )
# SQRTs: n_iter * (
# n_p * n_p_pad * 3
# n_p * board.n_obstacles
# n_p_pad * 3
# )
# EXPs: n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter *
(n_p * 68 + n_p * n_p_pad * 29 + n_p * n_obs * 10 + n_p_pad * 9))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 40 + n_p * n_obs * 13 + n_p_pad * 17))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * (n_p * n_p_pad + n_p * n_obs + n_p_pad * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p_pad * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * n_p * n_obs)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,61 @@
# const int n_p_pad = (n_p + 31) & ~31;
# ADDs: n_iter * (
# n_p * 68 +
# n_p * n_p_pad * 29 +
# n_p * board.n_obstacles * 10 +
# n_p_pad * 7
# )
# MULTs: n_iter * (
# n_p * 4 +
# n_p * n_p_pad * 42 +
# n_p * board.n_obstacles * 13 +
# n_p_pad * 16
# )
# DIVs: n_iter * (
# n_p * n_p_pad * 3 +
# n_p * board.n_obstacles +
# n_p_pad * 2
# )
# SQRTs: n_iter * (
# n_p * n_p_pad * 3 +
# n_p * board.n_obstacles +
# n_p_pad * 3
# )
# EXPs: n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter *
(n_p * 68 + n_p * n_p_pad * 29 + n_p * n_obs * 10 + n_p_pad * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 42 + n_p * n_obs * 13 + n_p_pad * 16))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p_pad * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p_pad * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * n_p * n_obs)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p, n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,61 @@
# const int n_p_pad = (n_p + 31) & ~31;
# ADDs: n_iter * (
# n_p * 84 +
# n_p * n_p_pad * 29 +
# n_p * board.n_obstacles * 10 +
# n_p_pad * 7
# )
# MULTs: n_iter * (
# n_p * 4 +
# n_p * n_p_pad * 42 +
# n_p * board.n_obstacles * 13 +
# n_p_pad * 16
# )
# DIVs: n_iter * (
# n_p * n_p_pad * 3 +
# n_p * board.n_obstacles +
# n_p_pad * 2
# )
# SQRTs: n_iter * (
# n_p * n_p_pad * 3 +
# n_p * board.n_obstacles +
# n_p_pad * 3
# )
# EXPs: n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter *
(n_p * 84 + n_p * n_p_pad * 29 + n_p * n_obs * 10 + n_p_pad * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 42 + n_p * n_obs * 13 + n_p_pad * 16))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p_pad * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p_pad * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 31) & ~31
return int(n_iter * n_p * n_obs)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p, n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,62 @@
# const int n_p_pad = (n_p + 15) & ~15;
# ADDs: n_iter * (
# n_p_pad * 7 +
# n_p_pad * n_p * 29 +
# n_p_pad * 2(=board.n_obstacles) * 24 +
# n_p_pad * 7
# )
# MULTs: n_iter * (
# n_p_pad * 4 +
# n_p_pad * n_p * 42 +
# n_p_pad * 2(=board.n_obstacles) * 31 +
# n_p_pad * 16
# )
# DIVs: n_iter * (
# n_p_pad * n_p * 3 +
# n_p_pad * 2(=board.n_obstacles) * 1 +
# n_p_pad * 2
# )
# SQRTs: n_iter * (
# n_p_pad * n_p * 3 +
# n_p_pad * 2(=board.n_obstacles) * 1 +
# n_p_pad * 3
# )
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(
n_iter *
(n_p_pad * 7 + n_p_pad * n_p * 29 + n_p_pad * n_obs * 24 + n_p_pad * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(
n_iter *
(n_p_pad * 4 + n_p_pad * n_p * 42 + n_p_pad * n_obs * 31 + n_p_pad * 16))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * (n_p_pad * n_p * 3 + n_p_pad * n_obs * 1 + n_p_pad * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * (n_p_pad * n_p * 3 + n_p_pad * n_obs * 1 + n_p_pad * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(0)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,62 @@
# const int n_p_pad = (n_p + 63) & ~63;
# ADDs: n_iter * (
# n_p * 132 +
# n_p * n_p_pad * 29 +
# n_p * board.n_obstacles * 10 +
# n_p_pad * 7
# )
# MULTs: n_iter * (
# n_p * 4 +
# n_p * n_p_pad * 40 +
# n_p * board.n_obstacles * 13 +
# n_p_pad * 15
# )
# DIVs: n_iter * (
# n_p * n_p_pad +
# n_p * board.n_obstacles +
# n_p_pad * 2
# )
# SQRTs: n_iter * (
# n_p * n_p_pad * 3 +
# n_p * board.n_obstacles +
# n_p_pad * 3
# )
# EXPs: n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 63) & ~63
return int(n_iter *
(n_p * 132 + n_p * n_p_pad * 29 + n_p * n_obs * 10 + n_p_pad * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 63) & ~63
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 40 + n_p * n_obs * 13 + n_p_pad * 15))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 63) & ~63
return int(n_iter * (n_p * n_p_pad + n_p * n_obs + n_p_pad * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 63) & ~63
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p_pad * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 63) & ~63
return int(n_iter * n_p * n_obs)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,69 @@
# FLOPCOUNT (everything inside the t-loop). EXP kept as its own op (one real exp() per call).
# section costs: overhead 4 ADD 4 MULT | distance pair 3 ADD 2 MULT 1 SQRT |
# ped-ped j 11 ADD 22 MULT 2 SQRT 1 DIV 1 EXP |
# obstacle 10 ADD 13 MULT 1 SQRT 1 DIV 1 EXP | update 7 ADD 17 MULT 3 SQRT 2 DIV
# ADDs: n_iter * (
# n_p * 4 +
# 0.5 * (n_p*n_p - n_p) * 3 +
# n_p * (n_p - 1) * 11 +
# n_p * board.n_obstacles * 10 +
# n_p * 7
# )
# MULTs: n_iter * (
# n_p * 4 +
# 0.5 * (n_p*n_p - n_p) * 2 +
# n_p * (n_p - 1) * 22 +
# n_p * board.n_obstacles * 13 +
# n_p * 17
# )
# DIVs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles +
# n_p * 2
# )
# SQRTs: n_iter * (
# 0.5 * (n_p*n_p - n_p) +
# n_p * (n_p - 1) * 2 +
# n_p * board.n_obstacles +
# n_p * 3
# )
# EXPs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles
# )
# total with EXP = 30: n_iter * ( 69 * n_p ** 2 - 32 * n_p + 55 * n_obstacles * n_p )
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + 0.5 * (n_p * n_p - n_p) * 3 + n_p *
(n_p - 1) * 11 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + 0.5 * (n_p * n_p - n_p) * 2 + n_p *
(n_p - 1) * 22 + n_p * n_obs * 13 + n_p * 17))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (0.5 * (n_p * n_p - n_p) + n_p *
(n_p - 1) * 2 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,70 @@
# FLOPCOUNT (everything inside the t-loop). EXP kept as its own op (one real exp() per call).
# section costs: overhead 4 ADD 4 MULT (+ reductions 4*K = 64 ADD, K=16) |
# distance pair 3 ADD 2 MULT 1 SQRT |
# ped-ped j 11 ADD 22 MULT 2 SQRT 1 DIV 1 EXP |
# obstacle 10 ADD 13 MULT 1 SQRT 1 DIV 1 EXP | update 7 ADD 17 MULT 3 SQRT 2 DIV
# ADDs: n_iter * (
# n_p * 68 +
# 0.5 * (n_p*n_p - n_p) * 3 +
# n_p * (n_p - 1) * 11 +
# n_p * board.n_obstacles * 10 +
# n_p * 7
# )
# MULTs: n_iter * (
# n_p * 4 +
# 0.5 * (n_p*n_p - n_p) * 2 +
# n_p * (n_p - 1) * 22 +
# n_p * board.n_obstacles * 13 +
# n_p * 17
# )
# DIVs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles +
# n_p * 2
# )
# SQRTs: n_iter * (
# 0.5 * (n_p*n_p - n_p) +
# n_p * (n_p - 1) * 2 +
# n_p * board.n_obstacles +
# n_p * 3
# )
# EXPs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles
# )
# total with EXP = 30: n_iter * ( 69 * n_p ** 2 + 32 * n_p + 55 * n_obstacles * n_p )
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 68 + 0.5 * (n_p * n_p - n_p) * 3 + n_p *
(n_p - 1) * 11 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + 0.5 * (n_p * n_p - n_p) * 2 + n_p *
(n_p - 1) * 22 + n_p * n_obs * 13 + n_p * 17))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (0.5 * (n_p * n_p - n_p) + n_p *
(n_p - 1) * 2 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,70 @@
# FLOPCOUNT (everything inside the t-loop). EXP kept as its own op (one real exp() per call).
# section costs: overhead 4 ADD 4 MULT (+ reductions 4*K = 8 ADD, K=2) |
# distance pair 3 ADD 2 MULT 1 SQRT |
# ped-ped j 11 ADD 22 MULT 2 SQRT 1 DIV 1 EXP |
# obstacle 10 ADD 13 MULT 1 SQRT 1 DIV 1 EXP | update 7 ADD 17 MULT 3 SQRT 2 DIV
# ADDs: n_iter * (
# n_p * 12 +
# 0.5 * (n_p*n_p - n_p) * 3 +
# n_p * (n_p - 1) * 11 +
# n_p * board.n_obstacles * 10 +
# n_p * 7
# )
# MULTs: n_iter * (
# n_p * 4 +
# 0.5 * (n_p*n_p - n_p) * 2 +
# n_p * (n_p - 1) * 22 +
# n_p * board.n_obstacles * 13 +
# n_p * 17
# )
# DIVs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles +
# n_p * 2
# )
# SQRTs: n_iter * (
# 0.5 * (n_p*n_p - n_p) +
# n_p * (n_p - 1) * 2 +
# n_p * board.n_obstacles +
# n_p * 3
# )
# EXPs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles
# )
# total with EXP = 30: n_iter * ( 69 * n_p ** 2 - 24 * n_p + 55 * n_obstacles * n_p )
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 12 + 0.5 * (n_p * n_p - n_p) * 3 + n_p *
(n_p - 1) * 11 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + 0.5 * (n_p * n_p - n_p) * 2 + n_p *
(n_p - 1) * 22 + n_p * n_obs * 13 + n_p * 17))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (0.5 * (n_p * n_p - n_p) + n_p *
(n_p - 1) * 2 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,70 @@
# FLOPCOUNT (everything inside the t-loop). EXP kept as its own op (one real exp() per call).
# section costs: overhead 4 ADD 4 MULT (+ reductions 4*K = 16 ADD, K=4) |
# distance pair 3 ADD 2 MULT 1 SQRT |
# ped-ped j 11 ADD 22 MULT 2 SQRT 1 DIV 1 EXP |
# obstacle 10 ADD 13 MULT 1 SQRT 1 DIV 1 EXP | update 7 ADD 17 MULT 3 SQRT 2 DIV
# ADDs: n_iter * (
# n_p * 20 +
# 0.5 * (n_p*n_p - n_p) * 3 +
# n_p * (n_p - 1) * 11 +
# n_p * board.n_obstacles * 10 +
# n_p * 7
# )
# MULTs: n_iter * (
# n_p * 4 +
# 0.5 * (n_p*n_p - n_p) * 2 +
# n_p * (n_p - 1) * 22 +
# n_p * board.n_obstacles * 13 +
# n_p * 17
# )
# DIVs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles +
# n_p * 2
# )
# SQRTs: n_iter * (
# 0.5 * (n_p*n_p - n_p) +
# n_p * (n_p - 1) * 2 +
# n_p * board.n_obstacles +
# n_p * 3
# )
# EXPs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles
# )
# total with EXP = 30: n_iter * ( 69 * n_p ** 2 - 16 * n_p + 55 * n_obstacles * n_p )
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 20 + 0.5 * (n_p * n_p - n_p) * 3 + n_p *
(n_p - 1) * 11 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + 0.5 * (n_p * n_p - n_p) * 2 + n_p *
(n_p - 1) * 22 + n_p * n_obs * 13 + n_p * 17))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (0.5 * (n_p * n_p - n_p) + n_p *
(n_p - 1) * 2 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,70 @@
# FLOPCOUNT (everything inside the t-loop). EXP kept as its own op (one real exp() per call).
# section costs: overhead 4 ADD 4 MULT (+ reductions 4*K = 32 ADD, K=8) |
# distance pair 3 ADD 2 MULT 1 SQRT |
# ped-ped j 11 ADD 22 MULT 2 SQRT 1 DIV 1 EXP |
# obstacle 10 ADD 13 MULT 1 SQRT 1 DIV 1 EXP | update 7 ADD 17 MULT 3 SQRT 2 DIV
# ADDs: n_iter * (
# n_p * 36 +
# 0.5 * (n_p*n_p - n_p) * 3 +
# n_p * (n_p - 1) * 11 +
# n_p * board.n_obstacles * 10 +
# n_p * 7
# )
# MULTs: n_iter * (
# n_p * 4 +
# 0.5 * (n_p*n_p - n_p) * 2 +
# n_p * (n_p - 1) * 22 +
# n_p * board.n_obstacles * 13 +
# n_p * 17
# )
# DIVs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles +
# n_p * 2
# )
# SQRTs: n_iter * (
# 0.5 * (n_p*n_p - n_p) +
# n_p * (n_p - 1) * 2 +
# n_p * board.n_obstacles +
# n_p * 3
# )
# EXPs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles
# )
# total with EXP = 30: n_iter * ( 69 * n_p ** 2 + 55 * n_obstacles * n_p ) linear term cancels
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 36 + 0.5 * (n_p * n_p - n_p) * 3 + n_p *
(n_p - 1) * 11 + n_p * n_obs * 10 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + 0.5 * (n_p * n_p - n_p) * 2 + n_p *
(n_p - 1) * 22 + n_p * n_obs * 13 + n_p * 17))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (0.5 * (n_p * n_p - n_p) + n_p *
(n_p - 1) * 2 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
+44
View File
@@ -0,0 +1,44 @@
# ADDs: n_iter * n_p * 11 +
# n_iter * n_p * (n_p - 1) * 14 +
# n_iter * n_p * board.n_obstacles * 12
# MULTs: n_iter * n_p * 21 +
# n_iter * n_p * (n_p - 1) * 24 +
# n_iter * n_p * board.n_obstacles * 19
# DIVs: n_iter * n_p * 2 +
# n_iter * n_p * (n_p - 1) +
# n_iter * n_p * board.n_obstacles
# SQRTs: n_iter * n_p * 3 +
# n_iter * n_p * (n_p - 1) * 3 +
# n_iter * n_p * board.n_obstacles
# EXPs: n_iter * n_p * (n_p - 1) +
# n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * (11 + (n_p - 1) * 14 + n_obs * 12))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * (21 + (n_p - 1) * 24 + n_obs * 19))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * (2 + (n_p - 1) + n_obs))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * (3 + (n_p - 1) * 3 + n_obs))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * ((n_p - 1) + n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
+44
View File
@@ -0,0 +1,44 @@
# ADDs: n_iter * n_p * 11 +
# n_iter * n_p * (n_p - 1) * 14 +
# n_iter * n_p * board.n_obstacles * 12
# MULTs: n_iter * n_p * 21 +
# n_iter * n_p * (n_p - 1) * 24 +
# n_iter * n_p * board.n_obstacles * 19
# DIVs: n_iter * n_p * 2 +
# n_iter * n_p * (n_p - 1) +
# n_iter * n_p * board.n_obstacles
# SQRTs: n_iter * n_p * 3 +
# n_iter * n_p * (n_p - 1) * 3 +
# n_iter * n_p * board.n_obstacles
# EXPs: n_iter * n_p * (n_p - 1) +
# n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * (11 + (n_p - 1) * 14 + n_obs * 12))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * (21 + (n_p - 1) * 24 + n_obs * 19))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * (2 + (n_p - 1) + n_obs))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * (3 + (n_p - 1) * 3 + n_obs))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * ((n_p - 1) + n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,41 @@
# const int n_p_pad = (n_p + 3) & ~3;
# flops per iteration (one pass of the outer time loop):
# ADDs: n_p * 12 + n_p * n_p_pad * 15 + n_p * board.n_obstacles * 12 + n_p * 7
# MULTs: n_p * 4 + n_p * n_p_pad * 24 + n_p * board.n_obstacles * 19 + n_p * 16
# DIVs: n_p * n_p_pad * 1 + n_p * board.n_obstacles + n_p * 2
# SQRTs: n_p * n_p_pad * 3 + n_p * board.n_obstacles + n_p * 3
# EXPs: n_p * n_p_pad * 1 + n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 3) & ~3
return int(n_iter *
(n_p * 12 + n_p * n_p_pad * 15 + n_p * n_obs * 12 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 3) & ~3
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 24 + n_p * n_obs * 19 + n_p * 16))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 3) & ~3
return int(n_iter * (n_p * n_p_pad * 1 + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 3) & ~3
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 3) & ~3
return int(n_iter * (n_p * n_p_pad * 1 + n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,41 @@
# const int n_p_pad = (n_p + 3) & ~3;
# flops per iteration (one pass of the outer time loop):
# ADDs: n_p * 12 + n_p * n_p_pad * 29 + n_p * board.n_obstacles * 12 + n_p * 7
# MULTs: n_p * 4 + n_p * n_p_pad * 40 + n_p * board.n_obstacles * 19 + n_p * 16
# DIVs: n_p * n_p_pad * 1 + n_p * board.n_obstacles + n_p * 2
# SQRTs: n_p * n_p_pad * 3 + n_p * board.n_obstacles + n_p * 3
# EXPs: n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 3) & ~3
return int(n_iter *
(n_p * 12 + n_p * n_p_pad * 29 + n_p * n_obs * 12 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 3) & ~3
return int(n_iter *
(n_p * 4 + n_p * n_p_pad * 40 + n_p * n_obs * 19 + n_p * 16))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 3) & ~3
return int(n_iter * (n_p * n_p_pad * 1 + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 3) & ~3
return int(n_iter * (n_p * n_p_pad * 3 + n_p * n_obs + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 3) & ~3
return int(n_iter * (n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,27 @@
# n_iter * [ n_p ** 2 * (12.5 ADD + 23 MULT + 1 DIV + 1 EXP + 2.5 SQRT) + n_p * (- 1.5 ADD + 0.5 SQRT - 2 MULT - 1 EXP + 1 DIV) + n_obstacles * n_p * (12 ADD + 19 MULT + 1 SQRT + 1 DIV + 1 EXP) ]
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 12.5 + n_p * (-1.5) + n_obs * n_p * 12))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 23 + n_p * (-2) + n_obs * n_p * 19))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * 1 + n_obs * n_p * 1))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 2.5 + n_p * 0.5 + n_obs * n_p * 1))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * (-1) + n_obs * n_p * 1))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,27 @@
# n_iter * [ n_p ** 2 * (12.5 ADD + 23 MULT + 1 DIV + 1 EXP + 2.5 SQRT) + n_p * (- 1.5 ADD + 0.5 SQRT - 2 MULT - 1 EXP + 1 DIV) + n_obstacles * n_p * (12 ADD + 19 MULT + 1 SQRT + 1 DIV + 1 EXP) ]
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 12.5 + n_p * (-1.5) + n_obs * n_p * 12))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 23 + n_p * (-2) + n_obs * n_p * 19))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * 1 + n_obs * n_p * 1))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 2.5 + n_p * 0.5 + n_obs * n_p * 1))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * (-1) + n_obs * n_p * 1))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,27 @@
# n_iter * [ n_p ** 2 * (12.5 A + 2.5 S + 23 M + 1 D + 1 E) + n_p * (6.5 A + 0.5 S - 2 M + 1 D - 1 E) + n_obstacles * n_p * (12 A + 19 M + 1 S + 1 D + 1 E)]
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 12.5 + n_p * 6.5 + n_obs * n_p * 12))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 23 + n_p * (-2) + n_obs * n_p * 19))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * 1 + n_obs * n_p * 1))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 2.5 + n_p * 0.5 + n_obs * n_p * 1))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * (-1) + n_obs * n_p * 1))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,27 @@
# n_iter * [ n_p ** 2 * (12.5 A + 23 M + 2.5 S + 1 D + 1 E) + n_p * (14.5 A - 2 M + 0.5 S + 1 D - 1 E) + n_obstacles * n_p * (12 A + 19 M + 1 S + 1 D + 1 E) ]
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 12.5 + n_p * 14.5 + n_obs * n_p * 12))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 23 + n_p * (-2) + n_obs * n_p * 19))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * 1 + n_obs * n_p * 1))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 2.5 + n_p * 0.5 + n_obs * n_p * 1))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p**2 * 1 + n_p * (-1) + n_obs * n_p * 1))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
+44
View File
@@ -0,0 +1,44 @@
# ADDs: n_iter * n_p * 11 +
# n_iter * n_p * (n_p - 1) * 14 +
# n_iter * n_p * board.n_obstacles * 10
# MULTs: n_iter * n_p * 21 +
# n_iter * n_p * (n_p - 1) * 24 +
# n_iter * n_p * board.n_obstacles * 13
# DIVs: n_iter * n_p * 2 +
# n_iter * n_p * (n_p - 1) +
# n_iter * n_p * board.n_obstacles
# SQRTs: n_iter * n_p * 3 +
# n_iter * n_p * (n_p - 1) * 3 +
# n_iter * n_p * board.n_obstacles
# EXPs: n_iter * n_p * (n_p - 1) +
# n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * (11 + (n_p - 1) * 14 + n_obs * 10))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * (21 + (n_p - 1) * 24 + n_obs * 13))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * (2 + (n_p - 1) + n_obs))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * (3 + (n_p - 1) * 3 + n_obs))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * n_p * ((n_p - 1) + n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,49 @@
# const int n_p_pad = (n_p + 7) & ~7;
# ADDs: n_iter * n_p * 33 +
# n_iter * n_p * (n_p_pad / 8) * 232 +
# n_iter * n_p * board.n_obstacles * 10
# MULTs: n_iter * n_p * 40 +
# n_iter * n_p * (n_p_pad / 8) * 320 +
# n_iter * n_p * board.n_obstacles * 13
# DIVs: n_iter * n_p * (n_p_pad / 8) * 8 +
# n_iter * n_p * board.n_obstacles
# SQRTs: n_iter * n_p +
# n_iter * n_p * (n_p_pad / 8) * 24 +
# n_iter * n_p * board.n_obstacles
# EXPs: n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * n_p * (33 + (n_p_pad // 8) * 232 + n_obs * 10))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * n_p * (40 + (n_p_pad // 8) * 320 + n_obs * 13))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * n_p * ((n_p_pad // 8) * 8 + n_obs))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * n_p * (1 + (n_p_pad // 8) * 24 + n_obs))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * n_p * n_obs)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,49 @@
# const int n_p_pad = (n_p + 7) & ~7;
# ADDs: n_iter * n_p * 33 +
# n_iter * n_p * (n_p_pad / 8) * 232 +
# n_iter * n_p * board.n_obstacles * 10
# MULTs: n_iter * n_p * 40 +
# n_iter * n_p * (n_p_pad / 8) * 320 +
# n_iter * n_p * board.n_obstacles * 13
# DIVs: n_iter * n_p * (n_p_pad / 8) * 8 +
# n_iter * n_p * board.n_obstacles
# SQRTs: n_iter * n_p +
# n_iter * n_p * (n_p_pad / 8) * 24 +
# n_iter * n_p * board.n_obstacles
# EXPs: n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * n_p * (33 + (n_p_pad // 8) * 232 + n_obs * 10))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * n_p * (40 + (n_p_pad // 8) * 320 + n_obs * 13))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * n_p * ((n_p_pad // 8) * 8 + n_obs))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * n_p * (1 + (n_p_pad // 8) * 24 + n_obs))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * n_p * n_obs)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,57 @@
# const int n_p_pad = (n_p + 7) & ~7;
# ADDs: n_iter * n_p * 20 +
# n_iter * n_p * (n_p_pad / 8) * 232 +
# n_iter * n_p * board.n_obstacles * 10 +
# n_iter * (n_p_pad / 8) * 56
# MULTs: n_iter * n_p * 4 +
# n_iter * n_p * (n_p_pad / 8) * 320 +
# n_iter * n_p * board.n_obstacles * 13 +
# n_iter * (n_p_pad / 8) * 120
# DIVs: n_iter * n_p * (n_p_pad / 8) * 8 +
# n_iter * n_p * board.n_obstacles +
# n_iter * (n_p_pad / 8) * 16
# SQRTs: n_iter * n_p * (n_p_pad / 8) * 24 +
# n_iter * n_p * board.n_obstacles +
# n_iter * (n_p_pad / 8) * 24
# EXPs: n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter *
(n_p * 20 + n_p * (n_p_pad // 8) * 232 + n_p * n_obs * 10 +
(n_p_pad // 8) * 56))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * 4 + n_p * (n_p_pad // 8) * 320 + n_p * n_obs * 13 +
(n_p_pad // 8) * 120))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * (n_p_pad // 8) * 8 + n_p * n_obs +
(n_p_pad // 8) * 16))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * (n_p * (n_p_pad // 8) * 24 + n_p * n_obs +
(n_p_pad // 8) * 24))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 7) & ~7
return int(n_iter * n_p * n_obs)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -0,0 +1,58 @@
# const int n_p_pad = (n_p + 15) & ~15;
# ADDs: n_iter * n_p * 36 +
# n_iter * n_p * (n_p_pad / 16) * 464 +
# n_iter * n_p * board.n_obstacles * 10 +
# n_iter * (n_p_pad / 8) * 56
# MULTs: n_iter * n_p * 4 +
# n_iter * n_p * (n_p_pad / 16) * 640 +
# n_iter * n_p * board.n_obstacles * 13 +
# n_iter * (n_p_pad / 8) * 120
# DIVs: n_iter * n_p * (n_p_pad / 16) * 16 +
# n_iter * n_p * board.n_obstacles +
# n_iter * (n_p_pad / 8) * 16
# SQRTs: n_iter * n_p * (n_p_pad / 16) * 48 +
# n_iter * n_p * board.n_obstacles +
# n_iter * (n_p_pad / 8) * 24
# EXPs: n_iter * n_p * board.n_obstacles
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter *
(n_p * 36 + n_p * (n_p_pad // 16) * 464 + n_p * n_obs * 10 +
(n_p_pad // 8) * 56))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter *
(n_p * 4 + n_p * (n_p_pad // 16) * 640 + n_p * n_obs * 13 +
(n_p_pad // 8) * 120))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * (n_p * (n_p_pad // 16) * 16 + n_p * n_obs +
(n_p_pad // 8) * 16))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * (n_p * (n_p_pad // 16) * 48 + n_p * n_obs +
(n_p_pad // 8) * 24))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
n_p_pad = (n_p + 15) & ~15
return int(n_iter * n_p * n_obs)
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
+58
View File
@@ -0,0 +1,58 @@
# ADDs: n_iter * (
# n_p * 4 +
# n_p * (n_p - 1) * 14 +
# n_p * board.n_obstacles * 12 +
# n_p * 7
# )
# MULTs: n_iter * (
# n_p * 4 +
# n_p * (n_p - 1) * 23 +
# n_p * board.n_obstacles * 18 +
# n_p * 16
# )
# DIVs: n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles +
# n_p * 2
# )
# SQRTs: n_iter * (
# n_p * (n_p - 1) * 4 +
# n_p * board.n_obstacles * 2 +
# n_p * 3
# )
# EXPs (fast_exp, LUT): n_iter * (
# n_p * (n_p - 1) +
# n_p * board.n_obstacles
# )
def adds(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + n_p *
(n_p - 1) * 14 + n_p * n_obs * 12 + n_p * 7))
def mults(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * 4 + n_p *
(n_p - 1) * 23 + n_p * n_obs * 18 + n_p * 16))
def divs(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs + n_p * 2))
def sqrts(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) * 4 + n_p * n_obs * 2 + n_p * 3))
def exps(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return int(n_iter * (n_p * (n_p - 1) + n_p * n_obs))
def total(n_iter: int, n_p: int, n_obs: int = 2) -> int:
return adds(n_iter, n_p, n_obs) + mults(n_iter, n_p, n_obs) + divs(
n_iter, n_p, n_obs) + sqrts(n_iter, n_p,
n_obs) + exps(n_iter, n_p, n_obs) * 30
@@ -1,58 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX2_polyexp.cpp -o main_float_inlining_SoA_AVX2_polyexp -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX2_polyexp_expfix.cpp -o main_float_inlining_SoA_AVX2_polyexp_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 4538634.50 cycles T(n): 5860437.00 cycles
P(n): 8.09 flops/cycle P(n): 6.27 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 14836382.00 cycles T(n): 19736818.00 cycles
P(n): 9.81 flops/cycle P(n): 7.37 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 52866688.00 cycles T(n): 71295200.00 cycles
P(n): 10.95 flops/cycle P(n): 8.12 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 314877088.00 cycles T(n): 434200736.00 cycles
P(n): 11.46 flops/cycle P(n): 8.31 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 1228216448.00 cycles T(n): 1690932352.00 cycles
P(n): 11.74 flops/cycle P(n): 8.52 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 4888108544.00 cycles T(n): 6726832128.00 cycles
P(n): 11.79 flops/cycle P(n): 8.57 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 30235383808.00 cycles T(n): 41595662336.00 cycles
P(n): 11.91 flops/cycle P(n): 8.66 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 166348996608.00 cycles
P(n): 3.49 flops/cycle
@@ -1,66 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX2_polyexp.cpp -o main_float_inlining_SoA_AVX2_polyexp -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX2_polyexp_expfix.cpp -o main_float_inlining_SoA_AVX2_polyexp_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 4573347.00 cycles T(n): 5885449.00 cycles
P(n): 8.03 flops/cycle P(n): 6.24 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 14972852.00 cycles T(n): 19775262.00 cycles
P(n): 9.72 flops/cycle P(n): 7.36 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 53246808.00 cycles T(n): 71759640.00 cycles
P(n): 10.87 flops/cycle P(n): 8.07 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 317441728.00 cycles T(n): 442073856.00 cycles
P(n): 11.36 flops/cycle P(n): 8.16 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 1237166592.00 cycles T(n): 1698162944.00 cycles
P(n): 11.65 flops/cycle P(n): 8.49 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 4899325440.00 cycles T(n): 6719285248.00 cycles
P(n): 11.76 flops/cycle P(n): 8.58 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 30502610944.00 cycles T(n): 41795964928.00 cycles
P(n): 11.80 flops/cycle P(n): 8.62 flops/cycle
=== N_P=10000 N_ITER=200 === === N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops W(n): 581154570240.00 flops
T(n): 122120396800.00 cycles T(n): 166340608000.00 cycles
P(n): 4.76 flops/cycle P(n): 3.49 flops/cycle
@@ -0,0 +1,64 @@
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 5839795.00 cycles
P(n): 6.29 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 19706848.00 cycles
P(n): 7.38 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 71913632.00 cycles
P(n): 8.05 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 431199296.00 cycles
P(n): 8.37 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 1710698496.00 cycles
P(n): 8.43 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 6773665792.00 cycles
P(n): 8.51 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 43346759680.00 cycles
P(n): 8.31 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 169504800768.00 cycles
P(n): 3.43 flops/cycle
@@ -1,58 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX2_polyexp_rsqrt.cpp -o main_float_inlining_SoA_AVX2_polyexp_rsqrt -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX2_polyexp_rsqrt_expfix.cpp -o main_float_inlining_SoA_AVX2_polyexp_rsqrt_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3922583.00 cycles T(n): 5075402.00 cycles
P(n): 9.37 flops/cycle P(n): 7.24 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 12656640.00 cycles T(n): 16874942.00 cycles
P(n): 11.49 flops/cycle P(n): 8.62 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 44724200.00 cycles T(n): 60586048.00 cycles
P(n): 12.95 flops/cycle P(n): 9.56 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 264998976.00 cycles T(n): 363991840.00 cycles
P(n): 13.61 flops/cycle P(n): 9.91 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 1051923712.00 cycles T(n): 1424352768.00 cycles
P(n): 13.70 flops/cycle P(n): 10.12 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 4077504256.00 cycles T(n): 5638619648.00 cycles
P(n): 14.13 flops/cycle P(n): 10.22 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 25317951488.00 cycles T(n): 35081228288.00 cycles
P(n): 14.22 flops/cycle P(n): 10.26 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 140734889984.00 cycles
P(n): 4.13 flops/cycle
@@ -1,66 +1,64 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX2_polyexp_rsqrt.cpp -o main_float_inlining_SoA_AVX2_polyexp_rsqrt -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3968185.50 cycles T(n): 5095124.00 cycles
P(n): 9.26 flops/cycle P(n): 7.21 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 12830122.00 cycles T(n): 16958378.00 cycles
P(n): 11.34 flops/cycle P(n): 8.58 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 45279400.00 cycles T(n): 60894740.00 cycles
P(n): 12.79 flops/cycle P(n): 9.51 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 268426256.00 cycles T(n): 364922464.00 cycles
P(n): 13.44 flops/cycle P(n): 9.89 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 1064596800.00 cycles T(n): 1432131456.00 cycles
P(n): 13.54 flops/cycle P(n): 10.07 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 4126754304.00 cycles T(n): 5669585408.00 cycles
P(n): 13.96 flops/cycle P(n): 10.16 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 25623275520.00 cycles T(n): 35706060800.00 cycles
P(n): 14.05 flops/cycle P(n): 10.08 flops/cycle
=== N_P=10000 N_ITER=200 === === N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops W(n): 581154570240.00 flops
T(n): 102223626240.00 cycles T(n): 143150546944.00 cycles
P(n): 5.69 flops/cycle P(n): 4.06 flops/cycle
@@ -0,0 +1,64 @@
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 5107488.00 cycles
P(n): 7.19 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 16972588.00 cycles
P(n): 8.57 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 61120552.00 cycles
P(n): 9.47 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 375650720.00 cycles
P(n): 9.60 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 1444334464.00 cycles
P(n): 9.98 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 5717088768.00 cycles
P(n): 10.08 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 36025249792.00 cycles
P(n): 10.00 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 143378251776.00 cycles
P(n): 4.05 flops/cycle
@@ -1,58 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt.cpp -o main_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt_expfix.cpp -o main_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3857942.00 cycles T(n): 4870774.50 cycles
P(n): 9.52 flops/cycle P(n): 7.54 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 11939004.00 cycles T(n): 15640118.00 cycles
P(n): 12.19 flops/cycle P(n): 9.30 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 41343432.00 cycles T(n): 55310808.00 cycles
P(n): 14.00 flops/cycle P(n): 10.47 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 242607552.00 cycles T(n): 329563872.00 cycles
P(n): 14.87 flops/cycle P(n): 10.95 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 939774144.00 cycles T(n): 1283268352.00 cycles
P(n): 15.34 flops/cycle P(n): 11.23 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3710422272.00 cycles T(n): 5083250688.00 cycles
P(n): 15.53 flops/cycle P(n): 11.34 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 23019415552.00 cycles T(n): 31586570240.00 cycles
P(n): 15.64 flops/cycle P(n): 11.40 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 126882955264.00 cycles
P(n): 4.58 flops/cycle
@@ -1,66 +1,64 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt.cpp -o main_float_inlining_SoA_AVX2_polyexp_rsqrt_loopopt -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3896576.25 cycles T(n): 4872185.50 cycles
P(n): 9.43 flops/cycle P(n): 7.54 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 12081705.00 cycles T(n): 15664138.00 cycles
P(n): 12.04 flops/cycle P(n): 9.29 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 41848524.00 cycles T(n): 55368740.00 cycles
P(n): 13.83 flops/cycle P(n): 10.46 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 245348896.00 cycles T(n): 329987008.00 cycles
P(n): 14.70 flops/cycle P(n): 10.93 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 950120256.00 cycles T(n): 1293044736.00 cycles
P(n): 15.17 flops/cycle P(n): 11.15 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3760375296.00 cycles T(n): 5130688512.00 cycles
P(n): 15.33 flops/cycle P(n): 11.23 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 23338608640.00 cycles T(n): 32060348416.00 cycles
P(n): 15.43 flops/cycle P(n): 11.23 flops/cycle
=== N_P=10000 N_ITER=200 === === N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops W(n): 581154570240.00 flops
T(n): 93044531200.00 cycles T(n): 129057972224.00 cycles
P(n): 6.25 flops/cycle P(n): 4.50 flops/cycle
@@ -0,0 +1,64 @@
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 4901788.00 cycles
P(n): 7.50 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 15669965.00 cycles
P(n): 9.28 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 55911480.00 cycles
P(n): 10.35 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 338225088.00 cycles
P(n): 10.67 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 1302161408.00 cycles
P(n): 11.07 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 5189515776.00 cycles
P(n): 11.11 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 32577761280.00 cycles
P(n): 11.05 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 129035010048.00 cycles
P(n): 4.50 flops/cycle
@@ -1,58 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp.cpp -o main_float_inlining_SoA_AVX512_polyexp -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3952082.50 cycles T(n): 4618692.00 cycles
P(n): 9.30 flops/cycle P(n): 7.95 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 11806225.00 cycles T(n): 14020708.00 cycles
P(n): 12.32 flops/cycle P(n): 10.38 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 39147728.00 cycles T(n): 47426524.00 cycles
P(n): 14.79 flops/cycle P(n): 12.21 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 220870336.00 cycles T(n): 271672832.00 cycles
P(n): 16.33 flops/cycle P(n): 13.28 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 843467072.00 cycles T(n): 1041892096.00 cycles
P(n): 17.09 flops/cycle P(n): 13.84 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3297570560.00 cycles T(n): 4086357760.00 cycles
P(n): 17.48 flops/cycle P(n): 14.10 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 20527921152.00 cycles T(n): 25345890304.00 cycles
P(n): 17.54 flops/cycle P(n): 14.21 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 100797374464.00 cycles
P(n): 5.77 flops/cycle
@@ -1,66 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp.cpp -o main_float_inlining_SoA_AVX512_polyexp -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3995093.75 cycles T(n): 4660804.50 cycles
P(n): 9.20 flops/cycle P(n): 7.88 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 11929089.00 cycles T(n): 14015782.00 cycles
P(n): 12.20 flops/cycle P(n): 10.38 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 39616448.00 cycles T(n): 47630040.00 cycles
P(n): 14.61 flops/cycle P(n): 12.16 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 223771808.00 cycles T(n): 272007200.00 cycles
P(n): 16.12 flops/cycle P(n): 13.26 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 854663616.00 cycles T(n): 1042778816.00 cycles
P(n): 16.87 flops/cycle P(n): 13.82 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3338979072.00 cycles T(n): 4092400640.00 cycles
P(n): 17.26 flops/cycle P(n): 14.08 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 20689987584.00 cycles T(n): 25352386560.00 cycles
P(n): 17.40 flops/cycle P(n): 14.20 flops/cycle
=== N_P=10000 N_ITER=200 === === N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops W(n): 581154570240.00 flops
T(n): 82361786368.00 cycles T(n): 101285814272.00 cycles
P(n): 7.06 flops/cycle P(n): 5.74 flops/cycle
@@ -0,0 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 4633135.50 cycles
P(n): 7.93 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 14098810.00 cycles
P(n): 10.32 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 47519168.00 cycles
P(n): 12.18 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 272423904.00 cycles
P(n): 13.24 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 1060791424.00 cycles
P(n): 13.59 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 4102831872.00 cycles
P(n): 14.05 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 25357774848.00 cycles
P(n): 14.20 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 100551254016.00 cycles
P(n): 5.78 flops/cycle
@@ -1,58 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt.cpp -o main_float_inlining_SoA_AVX512_polyexp_fastinvsqrt -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_fastinvsqrt_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 4235088.00 cycles T(n): 4899351.00 cycles
P(n): 8.68 flops/cycle P(n): 7.50 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 12301878.00 cycles T(n): 14704840.00 cycles
P(n): 11.83 flops/cycle P(n): 9.89 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 40178688.00 cycles T(n): 48870456.00 cycles
P(n): 14.41 flops/cycle P(n): 11.85 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 223423168.00 cycles T(n): 274548320.00 cycles
P(n): 16.15 flops/cycle P(n): 13.14 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 848105152.00 cycles T(n): 1067638016.00 cycles
P(n): 17.00 flops/cycle P(n): 13.50 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3303374080.00 cycles T(n): 4133780736.00 cycles
P(n): 17.45 flops/cycle P(n): 13.94 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 20445360128.00 cycles T(n): 25536294912.00 cycles
P(n): 17.61 flops/cycle P(n): 14.10 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 101531860992.00 cycles
P(n): 5.72 flops/cycle
@@ -1,66 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt.cpp -o main_float_inlining_SoA_AVX512_polyexp_fastinvsqrt -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_fastinvsqrt_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 4261088.00 cycles T(n): 4906050.00 cycles
P(n): 8.62 flops/cycle P(n): 7.49 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 12455221.00 cycles T(n): 14798538.00 cycles
P(n): 11.68 flops/cycle P(n): 9.83 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 40661000.00 cycles T(n): 48817384.00 cycles
P(n): 14.24 flops/cycle P(n): 11.86 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 226296576.00 cycles T(n): 276943584.00 cycles
P(n): 15.94 flops/cycle P(n): 13.03 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 859257920.00 cycles T(n): 1052295168.00 cycles
P(n): 16.78 flops/cycle P(n): 13.70 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3344503808.00 cycles T(n): 4133724672.00 cycles
P(n): 17.23 flops/cycle P(n): 13.94 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 20797153280.00 cycles T(n): 25570220032.00 cycles
P(n): 17.31 flops/cycle P(n): 14.08 flops/cycle
=== N_P=10000 N_ITER=200 === === N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops W(n): 581154570240.00 flops
T(n): 82334916608.00 cycles T(n): 101490999296.00 cycles
P(n): 7.06 flops/cycle P(n): 5.73 flops/cycle
@@ -0,0 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_fastinvsqrt_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_fastinvsqrt_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 4896082.00 cycles
P(n): 7.50 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 14589518.00 cycles
P(n): 9.97 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 48579536.00 cycles
P(n): 11.92 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 275277376.00 cycles
P(n): 13.10 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 1050094400.00 cycles
P(n): 13.73 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 4110344448.00 cycles
P(n): 14.02 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 25639516160.00 cycles
P(n): 14.04 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 101213003776.00 cycles
P(n): 5.74 flops/cycle
@@ -1,58 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3667923.00 cycles T(n): 4444855.00 cycles
P(n): 10.02 flops/cycle P(n): 8.27 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 11422578.00 cycles T(n): 13834708.00 cycles
P(n): 12.74 flops/cycle P(n): 10.52 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 37820328.00 cycles T(n): 47410956.00 cycles
P(n): 15.31 flops/cycle P(n): 12.21 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 216471376.00 cycles T(n): 276381408.00 cycles
P(n): 16.66 flops/cycle P(n): 13.05 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 832166400.00 cycles T(n): 1067362496.00 cycles
P(n): 17.32 flops/cycle P(n): 13.51 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3253410304.00 cycles T(n): 4156325376.00 cycles
P(n): 17.71 flops/cycle P(n): 13.87 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 20200312832.00 cycles T(n): 26170245120.00 cycles
P(n): 17.83 flops/cycle P(n): 13.76 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 104163885056.00 cycles
P(n): 5.58 flops/cycle
@@ -1,66 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3700145.00 cycles T(n): 4415419.00 cycles
P(n): 9.93 flops/cycle P(n): 8.32 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 11292105.00 cycles T(n): 13731945.00 cycles
P(n): 12.88 flops/cycle P(n): 10.59 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 38161324.00 cycles T(n): 47216112.00 cycles
P(n): 15.17 flops/cycle P(n): 12.26 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 218794224.00 cycles T(n): 273902208.00 cycles
P(n): 16.49 flops/cycle P(n): 13.17 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 840880000.00 cycles T(n): 1066031616.00 cycles
P(n): 17.14 flops/cycle P(n): 13.52 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3292569344.00 cycles T(n): 4168480512.00 cycles
P(n): 17.50 flops/cycle P(n): 13.83 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 20442466304.00 cycles T(n): 25959776256.00 cycles
P(n): 17.61 flops/cycle P(n): 13.87 flops/cycle
=== N_P=10000 N_ITER=200 === === N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops W(n): 581154570240.00 flops
T(n): 81447813120.00 cycles T(n): 103256596480.00 cycles
P(n): 7.14 flops/cycle P(n): 5.63 flops/cycle
@@ -0,0 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 4421310.50 cycles
P(n): 8.31 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 13851305.00 cycles
P(n): 10.50 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 47453300.00 cycles
P(n): 12.20 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 275350432.00 cycles
P(n): 13.10 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 1059425216.00 cycles
P(n): 13.61 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 4161480448.00 cycles
P(n): 13.85 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 25909958656.00 cycles
P(n): 13.90 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 102891044864.00 cycles
P(n): 5.65 flops/cycle
@@ -1,58 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2 -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3477458.00 cycles T(n): 4116743.00 cycles
P(n): 10.57 flops/cycle P(n): 8.92 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 11784472.00 cycles T(n): 14193060.00 cycles
P(n): 12.35 flops/cycle P(n): 10.25 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 38291872.00 cycles T(n): 46275016.00 cycles
P(n): 15.12 flops/cycle P(n): 12.51 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 202935328.00 cycles T(n): 250446432.00 cycles
P(n): 17.78 flops/cycle P(n): 14.40 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 792025088.00 cycles T(n): 977844992.00 cycles
P(n): 18.20 flops/cycle P(n): 14.74 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3083133952.00 cycles T(n): 3811610624.00 cycles
P(n): 18.69 flops/cycle P(n): 15.12 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 19033051136.00 cycles T(n): 23616888832.00 cycles
P(n): 18.92 flops/cycle P(n): 15.25 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 94000291840.00 cycles
P(n): 6.18 flops/cycle
@@ -1,66 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2 -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3489274.50 cycles T(n): 4130377.00 cycles
P(n): 10.53 flops/cycle P(n): 8.90 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 11797675.00 cycles T(n): 14179700.00 cycles
P(n): 12.33 flops/cycle P(n): 10.26 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 38045456.00 cycles T(n): 46318220.00 cycles
P(n): 15.22 flops/cycle P(n): 12.50 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 203912944.00 cycles T(n): 250998336.00 cycles
P(n): 17.69 flops/cycle P(n): 14.37 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 794322688.00 cycles T(n): 982180672.00 cycles
P(n): 18.15 flops/cycle P(n): 14.68 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3086995712.00 cycles T(n): 3805426944.00 cycles
P(n): 18.67 flops/cycle P(n): 15.14 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 19067494400.00 cycles T(n): 23592302592.00 cycles
P(n): 18.88 flops/cycle P(n): 15.26 flops/cycle
=== N_P=10000 N_ITER=200 === === N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops W(n): 581154570240.00 flops
T(n): 75557011456.00 cycles T(n): 93937680384.00 cycles
P(n): 7.69 flops/cycle P(n): 6.19 flops/cycle
@@ -0,0 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 4107580.00 cycles
P(n): 8.94 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 14142018.00 cycles
P(n): 10.29 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 46132236.00 cycles
P(n): 12.55 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 248790048.00 cycles
P(n): 14.50 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 974417088.00 cycles
P(n): 14.79 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 3791391744.00 cycles
P(n): 15.20 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 23488210944.00 cycles
P(n): 15.33 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 93195214848.00 cycles
P(n): 6.24 flops/cycle
@@ -1,58 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3500766.25 cycles T(n): 4119329.50 cycles
P(n): 10.49 flops/cycle P(n): 8.92 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 11807499.00 cycles T(n): 14140615.00 cycles
P(n): 12.32 flops/cycle P(n): 10.29 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 38032600.00 cycles T(n): 46104904.00 cycles
P(n): 15.22 flops/cycle P(n): 12.56 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 204147360.00 cycles T(n): 248777184.00 cycles
P(n): 17.67 flops/cycle P(n): 14.50 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 791926400.00 cycles T(n): 972575296.00 cycles
P(n): 18.20 flops/cycle P(n): 14.82 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3074645504.00 cycles T(n): 3793779712.00 cycles
P(n): 18.74 flops/cycle P(n): 15.19 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 19024320512.00 cycles T(n): 23662673920.00 cycles
P(n): 18.93 flops/cycle P(n): 15.22 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 93648879616.00 cycles
P(n): 6.21 flops/cycle
@@ -1,66 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3498589.50 cycles T(n): 4131873.00 cycles
P(n): 10.50 flops/cycle P(n): 8.89 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 11758110.00 cycles T(n): 14207365.00 cycles
P(n): 12.37 flops/cycle P(n): 10.24 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 37864020.00 cycles T(n): 46157304.00 cycles
P(n): 15.29 flops/cycle P(n): 12.54 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 202672640.00 cycles T(n): 249512304.00 cycles
P(n): 17.80 flops/cycle P(n): 14.46 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 790035264.00 cycles T(n): 974145152.00 cycles
P(n): 18.25 flops/cycle P(n): 14.80 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3070306304.00 cycles T(n): 3796545280.00 cycles
P(n): 18.77 flops/cycle P(n): 15.18 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 18978818048.00 cycles T(n): 23539767296.00 cycles
P(n): 18.97 flops/cycle P(n): 15.30 flops/cycle
=== N_P=10000 N_ITER=200 === === N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops W(n): 581154570240.00 flops
T(n): 75496284160.00 cycles T(n): 93385080832.00 cycles
P(n): 7.70 flops/cycle P(n): 6.22 flops/cycle
@@ -0,0 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_moreilp_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 4133901.25 cycles
P(n): 8.89 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 14286805.00 cycles
P(n): 10.18 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 46514768.00 cycles
P(n): 12.45 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 250415104.00 cycles
P(n): 14.41 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 979476864.00 cycles
P(n): 14.72 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 3790536448.00 cycles
P(n): 15.20 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 23435288576.00 cycles
P(n): 15.36 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 93591674880.00 cycles
P(n): 6.21 flops/cycle
@@ -1,58 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3466542.50 cycles T(n): 4119765.00 cycles
P(n): 10.60 flops/cycle P(n): 8.92 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 11758505.00 cycles T(n): 14158772.00 cycles
P(n): 12.37 flops/cycle P(n): 10.27 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 38354536.00 cycles T(n): 46276376.00 cycles
P(n): 15.09 flops/cycle P(n): 12.51 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 203609408.00 cycles T(n): 249878624.00 cycles
P(n): 17.72 flops/cycle P(n): 14.44 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 792448704.00 cycles T(n): 982863872.00 cycles
P(n): 18.19 flops/cycle P(n): 14.67 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3076762624.00 cycles T(n): 3826156544.00 cycles
P(n): 18.73 flops/cycle P(n): 15.06 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 19086870528.00 cycles T(n): 23693496320.00 cycles
P(n): 18.87 flops/cycle P(n): 15.20 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 94222524416.00 cycles
P(n): 6.17 flops/cycle
@@ -1,66 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3470556.25 cycles T(n): 4102695.50 cycles
P(n): 10.59 flops/cycle P(n): 8.96 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 11748129.00 cycles T(n): 14151872.00 cycles
P(n): 12.38 flops/cycle P(n): 10.28 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 37961964.00 cycles T(n): 46248272.00 cycles
P(n): 15.25 flops/cycle P(n): 12.52 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 203245888.00 cycles T(n): 249935680.00 cycles
P(n): 17.75 flops/cycle P(n): 14.43 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 792723072.00 cycles T(n): 977354240.00 cycles
P(n): 18.18 flops/cycle P(n): 14.75 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3083602944.00 cycles T(n): 3821584896.00 cycles
P(n): 18.69 flops/cycle P(n): 15.08 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 19105830912.00 cycles T(n): 23594674176.00 cycles
P(n): 18.85 flops/cycle P(n): 15.26 flops/cycle
=== N_P=10000 N_ITER=200 === === N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops W(n): 581154570240.00 flops
T(n): 75556601856.00 cycles T(n): 94093844480.00 cycles
P(n): 7.69 flops/cycle P(n): 6.18 flops/cycle
@@ -0,0 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 4124268.00 cycles
P(n): 8.91 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 14218675.00 cycles
P(n): 10.23 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 46843476.00 cycles
P(n): 12.36 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 250210640.00 cycles
P(n): 14.42 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 982352128.00 cycles
P(n): 14.67 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 3823222016.00 cycles
P(n): 15.07 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 23695175680.00 cycles
P(n): 15.20 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 94304829440.00 cycles
P(n): 6.16 flops/cycle
@@ -1,58 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 2966264.00 cycles T(n): 3472917.50 cycles
P(n): 12.39 flops/cycle P(n): 10.58 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 9680198.00 cycles T(n): 11763622.00 cycles
P(n): 15.03 flops/cycle P(n): 12.37 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 30652810.00 cycles T(n): 38070640.00 cycles
P(n): 18.89 flops/cycle P(n): 15.21 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 160992976.00 cycles T(n): 204154320.00 cycles
P(n): 22.41 flops/cycle P(n): 17.67 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 629138816.00 cycles T(n): 798999808.00 cycles
P(n): 22.91 flops/cycle P(n): 18.04 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 2423142656.00 cycles T(n): 3114275584.00 cycles
P(n): 23.78 flops/cycle P(n): 18.50 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 15022035968.00 cycles T(n): 19146825728.00 cycles
P(n): 23.97 flops/cycle P(n): 18.81 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 76207964160.00 cycles
P(n): 7.63 flops/cycle
@@ -1,66 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 2942563.50 cycles T(n): 3503500.00 cycles
P(n): 12.49 flops/cycle P(n): 10.49 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 9665785.00 cycles T(n): 11802675.00 cycles
P(n): 15.05 flops/cycle P(n): 12.33 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 30626330.00 cycles T(n): 37947776.00 cycles
P(n): 18.90 flops/cycle P(n): 15.26 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 161586752.00 cycles T(n): 203323776.00 cycles
P(n): 22.32 flops/cycle P(n): 17.74 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 626457472.00 cycles T(n): 821986944.00 cycles
P(n): 23.01 flops/cycle P(n): 17.54 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 2423129344.00 cycles T(n): 3103710720.00 cycles
P(n): 23.78 flops/cycle P(n): 18.57 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 14910323712.00 cycles T(n): 19254915072.00 cycles
P(n): 24.15 flops/cycle P(n): 18.70 flops/cycle
=== N_P=10000 N_ITER=200 === === N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops W(n): 581154570240.00 flops
T(n): 59213176832.00 cycles T(n): 76036898816.00 cycles
P(n): 9.81 flops/cycle P(n): 7.64 flops/cycle
@@ -0,0 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 3474629.50 cycles
P(n): 10.57 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 11869545.00 cycles
P(n): 12.26 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 38112416.00 cycles
P(n): 15.19 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 203449264.00 cycles
P(n): 17.73 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 816738752.00 cycles
P(n): 17.65 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 3081998592.00 cycles
P(n): 18.70 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 19241965568.00 cycles
P(n): 18.71 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 76032835584.00 cycles
P(n): 7.64 flops/cycle
@@ -0,0 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_expfix_improved.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_expfix_improved -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 3443131.25 cycles
P(n): 10.67 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 11289992.00 cycles
P(n): 12.89 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 36293512.00 cycles
P(n): 15.95 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 193259072.00 cycles
P(n): 18.67 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 752713344.00 cycles
P(n): 19.15 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 2940765440.00 cycles
P(n): 19.60 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 18122862592.00 cycles
P(n): 19.87 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 71869390848.00 cycles
P(n): 8.09 flops/cycle
@@ -0,0 +1,64 @@
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 3387230.00 cycles
P(n): 10.85 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 11326786.00 cycles
P(n): 12.84 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 36351516.00 cycles
P(n): 15.93 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 194490336.00 cycles
P(n): 18.55 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 753201792.00 cycles
P(n): 19.14 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 2954236416.00 cycles
P(n): 19.51 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 18356828160.00 cycles
P(n): 19.62 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 73678970880.00 cycles
P(n): 7.89 flops/cycle
@@ -0,0 +1,64 @@
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 3445767.00 cycles
P(n): 10.66 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 11501729.00 cycles
P(n): 12.65 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 36756200.00 cycles
P(n): 15.75 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 198376320.00 cycles
P(n): 18.18 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 765950336.00 cycles
P(n): 18.82 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 2987576576.00 cycles
P(n): 19.29 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 18625347584.00 cycles
P(n): 19.33 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 73340780544.00 cycles
P(n): 7.92 flops/cycle
@@ -0,0 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_expfix_improved_moreilp.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_2_rsqrt_morersqrt_expfix_improved_moreilp -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 2430659.75 cycles
P(n): 15.12 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 8285106.00 cycles
P(n): 17.56 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 30615050.00 cycles
P(n): 18.91 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 186199040.00 cycles
P(n): 19.37 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 728076288.00 cycles
P(n): 19.80 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 2895743232.00 cycles
P(n): 19.90 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 18180956160.00 cycles
P(n): 19.81 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 72372396032.00 cycles
P(n): 8.03 flops/cycle
@@ -0,0 +1,64 @@
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 2443465.25 cycles
P(n): 15.04 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 8370210.00 cycles
P(n): 17.38 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 30839560.00 cycles
P(n): 18.77 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 185338336.00 cycles
P(n): 19.46 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 737704256.00 cycles
P(n): 19.54 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 2915981056.00 cycles
P(n): 19.76 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 18362775552.00 cycles
P(n): 19.61 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 73707225088.00 cycles
P(n): 7.88 flops/cycle
@@ -0,0 +1,64 @@
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 2445340.00 cycles
P(n): 15.02 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 8350645.00 cycles
P(n): 17.42 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 30609110.00 cycles
P(n): 18.91 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 186796768.00 cycles
P(n): 19.31 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 733212800.00 cycles
P(n): 19.66 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 2960800768.00 cycles
P(n): 19.46 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 18505687040.00 cycles
P(n): 19.46 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 73613836288.00 cycles
P(n): 7.89 flops/cycle
@@ -1,58 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4 -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3587017.50 cycles T(n): 3897775.00 cycles
P(n): 10.24 flops/cycle P(n): 9.43 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 12215910.00 cycles T(n): 13522278.00 cycles
P(n): 11.91 flops/cycle P(n): 10.76 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 44944608.00 cycles T(n): 50063060.00 cycles
P(n): 12.88 flops/cycle P(n): 11.56 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 214169936.00 cycles T(n): 240297888.00 cycles
P(n): 16.84 flops/cycle P(n): 15.01 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 828421248.00 cycles T(n): 942706688.00 cycles
P(n): 17.40 flops/cycle P(n): 15.29 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3268490496.00 cycles T(n): 3722795008.00 cycles
P(n): 17.63 flops/cycle P(n): 15.48 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 20012742656.00 cycles T(n): 22749288448.00 cycles
P(n): 17.99 flops/cycle P(n): 15.83 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 90110476288.00 cycles
P(n): 6.45 flops/cycle
@@ -1,66 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4 -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte I(n): 56.42 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 3567542.00 cycles T(n): 3907767.50 cycles
P(n): 10.30 flops/cycle P(n): 9.40 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte I(n): 112.67 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 12180789.00 cycles T(n): 13510660.00 cycles
P(n): 11.94 flops/cycle P(n): 10.77 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte I(n): 225.17 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 44522004.00 cycles T(n): 50107380.00 cycles
P(n): 13.00 flops/cycle P(n): 11.55 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte I(n): 562.67 flops/byte
W(n): 3607399936.00 flops W(n): 3607399936.00 flops
T(n): 212099104.00 cycles T(n): 239951200.00 cycles
P(n): 17.01 flops/cycle P(n): 15.03 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops W(n): 14414799872.00 flops
T(n): 830612480.00 cycles T(n): 940302272.00 cycles
P(n): 17.35 flops/cycle P(n): 15.33 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops W(n): 57629601792.00 flops
T(n): 3272956672.00 cycles T(n): 3722942720.00 cycles
P(n): 17.61 flops/cycle P(n): 15.48 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops W(n): 360073986048.00 flops
T(n): 20105635840.00 cycles T(n): 22711234560.00 cycles
P(n): 17.91 flops/cycle P(n): 15.85 flops/cycle
=== N_P=10000 N_ITER=200 === === N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops W(n): 581154570240.00 flops
T(n): 79669575680.00 cycles T(n): 90064855040.00 cycles
P(n): 7.29 flops/cycle P(n): 6.45 flops/cycle
@@ -0,0 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float.cpp ./variants/variant_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4_expfix.cpp -o main_float_inlining_SoA_AVX512_polyexp_moreavx_ilp_4_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 3864792.00 cycles
P(n): 9.51 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 13472545.00 cycles
P(n): 10.80 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 49757488.00 cycles
P(n): 11.64 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 238792880.00 cycles
P(n): 15.11 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 953924224.00 cycles
P(n): 15.11 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 3701525248.00 cycles
P(n): 15.57 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 22775025664.00 cycles
P(n): 15.81 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772800.00 flops
Q(n) per iteration: 640056 bytes
I(n): 4539.87 flops/byte
W(n): 581154570240.00 flops
T(n): 90258751488.00 cycles
P(n): 6.44 flops/cycle
@@ -0,0 +1,58 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
sudo /usr/bin/g++ main-float.cpp ./variants/variant_float_inlining.cpp -o main_float_inlining -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops
Q(n) per iteration: 3256 bytes
I(n): 56.42 flops/byte
W(n): 36740000.00 flops
T(n): 10826171.00 cycles
P(n): 3.39 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops
Q(n) per iteration: 6456 bytes
I(n): 112.67 flops/byte
W(n): 145480000.00 flops
T(n): 48929320.00 cycles
P(n): 2.97 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 12856 bytes
I(n): 225.17 flops/byte
W(n): 578960000.00 flops
T(n): 190686384.00 cycles
P(n): 3.04 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 562.67 flops/byte
W(n): 3607399936.00 flops
T(n): 1427274624.00 cycles
P(n): 2.53 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 1125.17 flops/byte
W(n): 14414799872.00 flops
T(n): 6172825600.00 cycles
P(n): 2.34 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 2250.17 flops/byte
W(n): 57629601792.00 flops
T(n): 27468242944.00 cycles
P(n): 2.10 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800369920.00 flops
Q(n) per iteration: 320056 bytes
I(n): 5625.17 flops/byte
W(n): 360073986048.00 flops
T(n): 192917569536.00 cycles
P(n): 1.87 flops/cycle
@@ -1,58 +1,66 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main.cpp ./variants/variant_inlining_7_SoA_AVX2_polyexp.cpp -o main_inlining_7_SoA_AVX2_polyexp -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 /usr/bin/g++ main.cpp ./variants/variant_inlining_7_SoA_AVX2_polyexp_expfix.cpp -o main_inlining_7_SoA_AVX2_polyexp_expfix -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 6512 bytes Q(n) per iteration: 6512 bytes
I(n): 28.21 flops/byte I(n): 28.21 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 9225415.00 cycles T(n): 11371033.75 cycles
P(n): 3.98 flops/cycle P(n): 3.23 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 12912 bytes Q(n) per iteration: 12912 bytes
I(n): 56.34 flops/byte I(n): 56.34 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 32320875.00 cycles T(n): 39890030.00 cycles
P(n): 4.50 flops/cycle P(n): 3.65 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 25712 bytes Q(n) per iteration: 25712 bytes
I(n): 112.59 flops/byte I(n): 112.59 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 122392560.00 cycles T(n): 153171560.00 cycles
P(n): 4.73 flops/cycle P(n): 3.78 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 64112 bytes Q(n) per iteration: 64112 bytes
I(n): 281.34 flops/byte I(n): 281.34 flops/byte
W(n): 3607400000.00 flops W(n): 3607400000.00 flops
T(n): 727457980.00 cycles T(n): 926036960.00 cycles
P(n): 4.96 flops/cycle P(n): 3.90 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 128112 bytes Q(n) per iteration: 128112 bytes
I(n): 562.59 flops/byte I(n): 562.59 flops/byte
W(n): 14414800000.00 flops W(n): 14414800000.00 flops
T(n): 2871839460.00 cycles T(n): 3676943300.00 cycles
P(n): 5.02 flops/cycle P(n): 3.92 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 256112 bytes Q(n) per iteration: 256112 bytes
I(n): 1125.09 flops/byte I(n): 1125.09 flops/byte
W(n): 57629600000.00 flops W(n): 57629600000.00 flops
T(n): 11342093520.00 cycles T(n): 14545721140.00 cycles
P(n): 5.08 flops/cycle P(n): 3.96 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800370000.00 flops W(n) per iteration: 1800370000.00 flops
Q(n) per iteration: 640112 bytes Q(n) per iteration: 640112 bytes
I(n): 2812.59 flops/byte I(n): 2812.59 flops/byte
W(n): 360074000000.00 flops W(n): 360074000000.00 flops
T(n): 70407692300.00 cycles T(n): 90702048200.00 cycles
P(n): 5.11 flops/cycle P(n): 3.97 flops/cycle
=== N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772704.00 flops
Q(n) per iteration: 1280112 bytes
I(n): 2269.94 flops/byte
W(n): 581154540800.00 flops
T(n): 362081083160.00 cycles
P(n): 1.61 flops/cycle
@@ -1,66 +1,64 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main.cpp ./variants/variant_inlining_7_SoA_AVX2_polyexp.cpp -o main_inlining_7_SoA_AVX2_polyexp -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
=== N_P=50 N_ITER=200 === === N_P=50 N_ITER=200 ===
W(n) per iteration: 183700.00 flops W(n) per iteration: 183700.00 flops
Q(n) per iteration: 6512 bytes Q(n) per iteration: 6512 bytes
I(n): 28.21 flops/byte I(n): 28.21 flops/byte
W(n): 36740000.00 flops W(n): 36740000.00 flops
T(n): 9074662.50 cycles T(n): 11368170.00 cycles
P(n): 4.05 flops/cycle P(n): 3.23 flops/cycle
=== N_P=100 N_ITER=200 === === N_P=100 N_ITER=200 ===
W(n) per iteration: 727400.00 flops W(n) per iteration: 727400.00 flops
Q(n) per iteration: 12912 bytes Q(n) per iteration: 12912 bytes
I(n): 56.34 flops/byte I(n): 56.34 flops/byte
W(n): 145480000.00 flops W(n): 145480000.00 flops
T(n): 31994315.00 cycles T(n): 39909820.00 cycles
P(n): 4.55 flops/cycle P(n): 3.65 flops/cycle
=== N_P=200 N_ITER=200 === === N_P=200 N_ITER=200 ===
W(n) per iteration: 2894800.00 flops W(n) per iteration: 2894800.00 flops
Q(n) per iteration: 25712 bytes Q(n) per iteration: 25712 bytes
I(n): 112.59 flops/byte I(n): 112.59 flops/byte
W(n): 578960000.00 flops W(n): 578960000.00 flops
T(n): 120234740.00 cycles T(n): 152279380.00 cycles
P(n): 4.82 flops/cycle P(n): 3.80 flops/cycle
=== N_P=500 N_ITER=200 === === N_P=500 N_ITER=200 ===
W(n) per iteration: 18037000.00 flops W(n) per iteration: 18037000.00 flops
Q(n) per iteration: 64112 bytes Q(n) per iteration: 64112 bytes
I(n): 281.34 flops/byte I(n): 281.34 flops/byte
W(n): 3607400000.00 flops W(n): 3607400000.00 flops
T(n): 719504200.00 cycles T(n): 925130680.00 cycles
P(n): 5.01 flops/cycle P(n): 3.90 flops/cycle
=== N_P=1000 N_ITER=200 === === N_P=1000 N_ITER=200 ===
W(n) per iteration: 72074000.00 flops W(n) per iteration: 72074000.00 flops
Q(n) per iteration: 128112 bytes Q(n) per iteration: 128112 bytes
I(n): 562.59 flops/byte I(n): 562.59 flops/byte
W(n): 14414800000.00 flops W(n): 14414800000.00 flops
T(n): 2844257700.00 cycles T(n): 3668254420.00 cycles
P(n): 5.07 flops/cycle P(n): 3.93 flops/cycle
=== N_P=2000 N_ITER=200 === === N_P=2000 N_ITER=200 ===
W(n) per iteration: 288148000.00 flops W(n) per iteration: 288148000.00 flops
Q(n) per iteration: 256112 bytes Q(n) per iteration: 256112 bytes
I(n): 1125.09 flops/byte I(n): 1125.09 flops/byte
W(n): 57629600000.00 flops W(n): 57629600000.00 flops
T(n): 11300324680.00 cycles T(n): 14660040260.00 cycles
P(n): 5.10 flops/cycle P(n): 3.93 flops/cycle
=== N_P=5000 N_ITER=200 === === N_P=5000 N_ITER=200 ===
W(n) per iteration: 1800370000.00 flops W(n) per iteration: 1800370000.00 flops
Q(n) per iteration: 640112 bytes Q(n) per iteration: 640112 bytes
I(n): 2812.59 flops/byte I(n): 2812.59 flops/byte
W(n): 360074000000.00 flops W(n): 360074000000.00 flops
T(n): 70554568640.00 cycles T(n): 93340296780.00 cycles
P(n): 5.10 flops/cycle P(n): 3.86 flops/cycle
=== N_P=10000 N_ITER=200 === === N_P=10000 N_ITER=200 ===
W(n) per iteration: 2905772704.00 flops W(n) per iteration: 2905772704.00 flops
Q(n) per iteration: 1280112 bytes Q(n) per iteration: 1280112 bytes
I(n): 2269.94 flops/byte I(n): 2269.94 flops/byte
W(n): 581154540800.00 flops W(n): 581154540800.00 flops
T(n): 281416807980.00 cycles T(n): 362367747120.00 cycles
P(n): 2.07 flops/cycle P(n): 1.60 flops/cycle

Some files were not shown because too many files have changed in this diff Show More