Merge branch 'elliot/flop-count' into 'main'

Flop Count Calculations + x86 Measurements + c13 Fix

See merge request course-asl-fastcode26/team70!60
This commit is contained in:
[Quy Anh] «Elliot» Nguyen
2026-06-17 07:28:12 +02:00
225 changed files with 19699 additions and 172 deletions
@@ -0,0 +1,58 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float_symmetry.cpp ./variants/variant_float_inlining_SoA_symmetry_ILP_2.cpp -o main_float_inlining_SoA_symmetry_ILP_2 -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: 95500.00 flops
Q(n) per iteration: 3256 bytes
I(n): 29.33 flops/byte
W(n): 19100000.00 flops
T(n): 18636110.00 cycles
P(n): 1.02 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 371000.00 flops
Q(n) per iteration: 6456 bytes
I(n): 57.47 flops/byte
W(n): 74200000.00 flops
T(n): 74353936.00 cycles
P(n): 1.00 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 1462000.00 flops
Q(n) per iteration: 12856 bytes
I(n): 113.72 flops/byte
W(n): 292400000.00 flops
T(n): 294626592.00 cycles
P(n): 0.99 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 9055000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 282.47 flops/byte
W(n): 1811000064.00 flops
T(n): 2190295296.00 cycles
P(n): 0.83 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 36110000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 563.73 flops/byte
W(n): 7222000128.00 flops
T(n): 9388432384.00 cycles
P(n): 0.77 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 144220000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 1126.23 flops/byte
W(n): 28843999232.00 flops
T(n): 40763506688.00 cycles
P(n): 0.71 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 900550016.00 flops
Q(n) per iteration: 320056 bytes
I(n): 2813.73 flops/byte
W(n): 180110000128.00 flops
T(n): 288141017088.00 cycles
P(n): 0.63 flops/cycle
@@ -0,0 +1,58 @@
rm -f main_* run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
/usr/bin/g++ main-float_symmetry.cpp ./variants/variant_float_inlining_SoA_symmetry_ILP_2.cpp -o main_float_inlining_SoA_symmetry_ILP_2 -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: 95500.00 flops
Q(n) per iteration: 3256 bytes
I(n): 29.33 flops/byte
W(n): 19100000.00 flops
T(n): 18660336.00 cycles
P(n): 1.02 flops/cycle
=== N_P=100 N_ITER=200 ===
W(n) per iteration: 371000.00 flops
Q(n) per iteration: 6456 bytes
I(n): 57.47 flops/byte
W(n): 74200000.00 flops
T(n): 72993616.00 cycles
P(n): 1.02 flops/cycle
=== N_P=200 N_ITER=200 ===
W(n) per iteration: 1462000.00 flops
Q(n) per iteration: 12856 bytes
I(n): 113.72 flops/byte
W(n): 292400000.00 flops
T(n): 293862496.00 cycles
P(n): 1.00 flops/cycle
=== N_P=500 N_ITER=200 ===
W(n) per iteration: 9055000.00 flops
Q(n) per iteration: 32056 bytes
I(n): 282.47 flops/byte
W(n): 1811000064.00 flops
T(n): 2185636352.00 cycles
P(n): 0.83 flops/cycle
=== N_P=1000 N_ITER=200 ===
W(n) per iteration: 36110000.00 flops
Q(n) per iteration: 64056 bytes
I(n): 563.73 flops/byte
W(n): 7222000128.00 flops
T(n): 9371756544.00 cycles
P(n): 0.77 flops/cycle
=== N_P=2000 N_ITER=200 ===
W(n) per iteration: 144220000.00 flops
Q(n) per iteration: 128056 bytes
I(n): 1126.23 flops/byte
W(n): 28843999232.00 flops
T(n): 41083510784.00 cycles
P(n): 0.70 flops/cycle
=== N_P=5000 N_ITER=200 ===
W(n) per iteration: 900550016.00 flops
Q(n) per iteration: 320056 bytes
I(n): 2813.73 flops/byte
W(n): 180110000128.00 flops
T(n): 287173902336.00 cycles
P(n): 0.63 flops/cycle