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_4.cpp -o main_float_inlining_SoA_symmetry_ILP_4 -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): 17093748.00 cycles
P(n): 1.12 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): 65814740.00 cycles
P(n): 1.13 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): 268615712.00 cycles
P(n): 1.09 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): 1957872256.00 cycles
P(n): 0.92 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): 8319636480.00 cycles
P(n): 0.87 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): 35145236480.00 cycles
P(n): 0.82 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): 237461798912.00 cycles
P(n): 0.76 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_4.cpp -o main_float_inlining_SoA_symmetry_ILP_4 -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): 17023572.00 cycles
P(n): 1.12 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): 65836080.00 cycles
P(n): 1.13 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): 267259904.00 cycles
P(n): 1.09 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): 1952850944.00 cycles
P(n): 0.93 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): 8324440064.00 cycles
P(n): 0.87 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): 35432906752.00 cycles
P(n): 0.81 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): 238751940608.00 cycles
P(n): 0.75 flops/cycle