Elliot/measurements
This commit is contained in:
@@ -9,7 +9,6 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#ifndef BENCHMARK
|
#ifndef BENCHMARK
|
||||||
// Benchmarking is disabled by default.
|
|
||||||
#define BENCHMARK 0
|
#define BENCHMARK 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -20,20 +19,25 @@
|
|||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
#include "./headers/tsc_x86.h"
|
#include "./headers/tsc_x86.h"
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
#define TRASH_BUFFER_SIZE (16ULL * 1024 * 1024 * 2) // Size of L3 cache : 16MB
|
#define TRASH_BUFFER_SIZE (16ULL * 1024 * 1024 * 2) // 2x L3 (~16MB) on the x86 machine we use for measurements
|
||||||
#define PAGE_SIZE 4096
|
#define PAGE_SIZE 4096
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __aarch64__
|
#ifdef __aarch64__
|
||||||
#include "./headers/kperf.h"
|
#include "./headers/kperf.h"
|
||||||
#include <arm_acle.h>
|
#include <arm_acle.h>
|
||||||
#define TRASH_BUFFER_SIZE (1502838784ULL * 2) // Size of SLC on M3 pro chips : 1.5GB
|
#define TRASH_BUFFER_SIZE (1502838784ULL * 2) // 2x SLC (~1.5GB) on M3 Pro
|
||||||
#define PAGE_SIZE 16384
|
#define PAGE_SIZE 16384
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define N_OBSTACLES 2
|
#define N_OBSTACLES 2
|
||||||
#define WARMUP_ITERS 5
|
|
||||||
#define NUM_REPS 11
|
// Benchmark parameters (mostly copied from mvm.c in hw1)
|
||||||
|
#define WARMUP_ITERS 3
|
||||||
|
#define NUM_REPS 15
|
||||||
|
#define NUM_RUNS 1
|
||||||
|
#define CYCLES_REQUIRED 1e8
|
||||||
|
#define MAX_NUM_RUNS (1 << 14)
|
||||||
|
|
||||||
// Flushes caches by streaming reads through a large persistent buffer.
|
// Flushes caches by streaming reads through a large persistent buffer.
|
||||||
long long flush_cache() {
|
long long flush_cache() {
|
||||||
@@ -54,7 +58,7 @@ long long flush_cache() {
|
|||||||
long long acc = 0;
|
long long acc = 0;
|
||||||
|
|
||||||
for (size_t i = 0; i < TRASH_BUFFER_SIZE; i += CACHE_BLOCK_SIZE) {
|
for (size_t i = 0; i < TRASH_BUFFER_SIZE; i += CACHE_BLOCK_SIZE) {
|
||||||
// Access one byte per cache block is enough
|
// Access one byte per cache block is enough to populate the entire block
|
||||||
acc += trash_buffer[i];
|
acc += trash_buffer[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,12 +94,11 @@ int main(int argc, const char *argv[]) {
|
|||||||
int n_iter = atoi(argv[2]);
|
int n_iter = atoi(argv[2]);
|
||||||
|
|
||||||
if (n_p <= 0) {
|
if (n_p <= 0) {
|
||||||
printf("Error: <number_of_pedestrians> must be a positive integer, got '%s' instead\n", argv[1]);
|
printf("Error: <number_of_pedestrians> must be a positive integer, got '%s'\n", argv[1]);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n_iter <= 0) {
|
if (n_iter <= 0) {
|
||||||
printf("Error: <number_of_iterations> must be a positive integer, got '%s' instead\n", argv[2]);
|
printf("Error: <number_of_iterations> must be a positive integer, got '%s'\n", argv[2]);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,29 +119,35 @@ int main(int argc, const char *argv[]) {
|
|||||||
struct performance_counters startperf, endperf;
|
struct performance_counters startperf, endperf;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Warmup runs are not measured.
|
// Warmup runs, to bring caches, predictors, frequency to steady state. These are not measured.
|
||||||
// Each run gets a fresh initialized state because run_simulation mutates the
|
// Each run gets a fresh initialized state because run_simulation mutates the
|
||||||
// pedestrians and board state.
|
// pedestrians and board state.
|
||||||
for (int i = 0; i < WARMUP_ITERS; i++) {
|
for (int i = 0; i < WARMUP_ITERS; i++) {
|
||||||
Pedestrian *P = init_pedestrians(n_p);
|
Pedestrian *P = init_pedestrians(n_p);
|
||||||
Board board = init_board_without_obstacles();
|
Board board = init_board_without_obstacles();
|
||||||
|
|
||||||
run_simulation(P, board, n_p, n_iter, nullptr);
|
run_simulation(P, board, n_p, n_iter, nullptr);
|
||||||
|
|
||||||
delete[] P;
|
delete[] P;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Store the cycle count of each measured repetition.
|
// Calibration: finds num_runs such that one batch runs for at least
|
||||||
// The median is then used as the final timing result.
|
// CYCLES_REQUIRED cycles. A long batch keeps makes the timer and other
|
||||||
std::vector<long double> cycles_v;
|
// noise overhead, negligible relative to the kernel execution cost we're
|
||||||
cycles_v.reserve(NUM_REPS);
|
// actually trying to measure.
|
||||||
|
//
|
||||||
for (int i = 0; i < NUM_REPS; i++) {
|
// Skipped when ROOFLINE is enabled: cold-cache measurements need
|
||||||
|
// exactly one timed simulation per batch, otherwise only the first
|
||||||
|
// call starts cold and subsequent calls measure warm-cache behavior.
|
||||||
|
// We can use large enough inputs so a single call already exceeds CYCLES_REQUIRED,
|
||||||
|
// when measuring for roofline plot.
|
||||||
|
// Note: we implemented the calibration exactly as it is done in mvm.c from hw1, we also
|
||||||
|
// used the same values for NUM_RUNS, etc
|
||||||
|
int num_runs = NUM_RUNS;
|
||||||
|
#if !ROOFLINE
|
||||||
|
while (num_runs < MAX_NUM_RUNS) {
|
||||||
Pedestrian *P = init_pedestrians(n_p);
|
Pedestrian *P = init_pedestrians(n_p);
|
||||||
Board board = init_board_without_obstacles();
|
Board board = init_board_without_obstacles();
|
||||||
#if ROOFLINE
|
|
||||||
trash_value = flush_cache();
|
long double cycles;
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
myInt64 start = start_tsc();
|
myInt64 start = start_tsc();
|
||||||
@@ -148,26 +157,69 @@ int main(int argc, const char *argv[]) {
|
|||||||
startperf = kperf_get_counters();
|
startperf = kperf_get_counters();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Disable CSV dumping during benchmarking to avoid measuring file I/O
|
for (int j = 0; j < num_runs; j++) {
|
||||||
// overhead. Initialization is also excluded from the measured region.
|
run_simulation(P, board, n_p, n_iter, nullptr);
|
||||||
run_simulation(P, board, n_p, n_iter, nullptr);
|
}
|
||||||
|
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
long double cycles = stop_tsc(start);
|
cycles = (long double)stop_tsc(start);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __aarch64__
|
#ifdef __aarch64__
|
||||||
endperf = kperf_get_counters();
|
endperf = kperf_get_counters();
|
||||||
long double cycles = endperf.cycles - startperf.cycles;
|
cycles = (long double)(endperf.cycles - startperf.cycles);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
delete[] P;
|
delete[] P;
|
||||||
|
|
||||||
|
if (cycles >= CYCLES_REQUIRED)
|
||||||
|
break;
|
||||||
|
num_runs *= 2;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Store the cycle count of each measured repetition.
|
||||||
|
// The median is then used as the final timing result.
|
||||||
|
std::vector<long double> cycles_v;
|
||||||
|
cycles_v.reserve(NUM_REPS);
|
||||||
|
|
||||||
|
// Measurement phase
|
||||||
|
for (int i = 0; i < NUM_REPS; i++) {
|
||||||
|
Pedestrian *P = init_pedestrians(n_p);
|
||||||
|
Board board = init_board_without_obstacles();
|
||||||
|
|
||||||
|
#if ROOFLINE
|
||||||
|
trash_value = flush_cache();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __x86_64__
|
||||||
|
myInt64 start = start_tsc();
|
||||||
|
#endif
|
||||||
|
#ifdef __aarch64__
|
||||||
|
startperf = kperf_get_counters();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (int j = 0; j < num_runs; j++) {
|
||||||
|
// Disable CSV dumping during benchmarking to avoid measuring file I/O
|
||||||
|
// overhead. Initialization is also excluded from the measured region.
|
||||||
|
|
||||||
|
run_simulation(P, board, n_p, n_iter, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __x86_64__
|
||||||
|
long double cycles = (long double)stop_tsc(start) / num_runs;
|
||||||
|
#endif
|
||||||
|
#ifdef __aarch64__
|
||||||
|
endperf = kperf_get_counters();
|
||||||
|
long double cycles = (long double)(endperf.cycles - startperf.cycles) / num_runs;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
delete[] P;
|
||||||
cycles_v.push_back(cycles);
|
cycles_v.push_back(cycles);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use the median cycle count to reduce the effect of noisy measurements.
|
|
||||||
std::sort(cycles_v.begin(), cycles_v.end());
|
std::sort(cycles_v.begin(), cycles_v.end());
|
||||||
|
// Use the median cycle count to reduce the effect of noisy measurements.
|
||||||
long double T = cycles_v[NUM_REPS / 2];
|
long double T = cycles_v[NUM_REPS / 2];
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@@ -189,14 +241,11 @@ int main(int argc, const char *argv[]) {
|
|||||||
// The total work W(n) is estimated from the number of additions,
|
// The total work W(n) is estimated from the number of additions,
|
||||||
// multiplications, divisions, square roots, and exponentials performed by the
|
// multiplications, divisions, square roots, and exponentials performed by the
|
||||||
// simulation kernels.
|
// simulation kernels.
|
||||||
|
|
||||||
long long add_count_per_iter = n_p * (4 + (n_p - 1) * 14 + N_OBSTACLES * 12) + n_p * 7;
|
long long add_count_per_iter = n_p * (4 + (n_p - 1) * 14 + N_OBSTACLES * 12) + n_p * 7;
|
||||||
|
|
||||||
long long mult_count_per_iter = n_p * (4 + (n_p - 1) * 23 + N_OBSTACLES * 18) + n_p * 16;
|
long long mult_count_per_iter = n_p * (4 + (n_p - 1) * 23 + N_OBSTACLES * 18) + n_p * 16;
|
||||||
|
|
||||||
long long div_count_per_iter = n_p * ((n_p - 1) * 1 + N_OBSTACLES * 1) + n_p * 2;
|
long long div_count_per_iter = n_p * ((n_p - 1) * 1 + N_OBSTACLES * 1) + n_p * 2;
|
||||||
|
|
||||||
long long sqrt_count_per_iter = n_p * ((n_p - 1) * 4 + N_OBSTACLES * 2) + n_p * 3;
|
long long sqrt_count_per_iter = n_p * ((n_p - 1) * 4 + N_OBSTACLES * 2) + n_p * 3;
|
||||||
|
|
||||||
long long exp_count_per_iter = n_p * ((n_p - 1) * 1 + N_OBSTACLES * 1);
|
long long exp_count_per_iter = n_p * ((n_p - 1) * 1 + N_OBSTACLES * 1);
|
||||||
|
|
||||||
long double W_per_iter = add_count_per_iter * cost_add + mult_count_per_iter * cost_mult + div_count_per_iter * cost_div + sqrt_count_per_iter * cost_sqrt + exp_count_per_iter * cost_exp;
|
long double W_per_iter = add_count_per_iter * cost_add + mult_count_per_iter * cost_mult + div_count_per_iter * cost_div + sqrt_count_per_iter * cost_sqrt + exp_count_per_iter * cost_exp;
|
||||||
@@ -204,6 +253,7 @@ int main(int argc, const char *argv[]) {
|
|||||||
// Estimated memory traffic per iteration.
|
// Estimated memory traffic per iteration.
|
||||||
// TODO: refine this model to account for actual memory accesses, cache reuse,
|
// TODO: refine this model to account for actual memory accesses, cache reuse,
|
||||||
// and the full interaction loop.
|
// and the full interaction loop.
|
||||||
|
|
||||||
long long Q_per_iter = sizeof(Pedestrian) * n_p + sizeof(Obstacle) * N_OBSTACLES;
|
long long Q_per_iter = sizeof(Pedestrian) * n_p + sizeof(Obstacle) * N_OBSTACLES;
|
||||||
|
|
||||||
// Operational intensity:
|
// Operational intensity:
|
||||||
@@ -212,9 +262,8 @@ int main(int argc, const char *argv[]) {
|
|||||||
//
|
//
|
||||||
// where W is estimated work in flops and Q is estimated memory traffic in
|
// where W is estimated work in flops and Q is estimated memory traffic in
|
||||||
// bytes.
|
// bytes.
|
||||||
long double I = W_per_iter / Q_per_iter;
|
|
||||||
|
|
||||||
// Total estimated work over all iterations.
|
long double I = W_per_iter / Q_per_iter;
|
||||||
long double W = W_per_iter * n_iter;
|
long double W = W_per_iter * n_iter;
|
||||||
|
|
||||||
// Performance in estimated flops per cycle.
|
// Performance in estimated flops per cycle.
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
|
||||||
|
/usr/bin/g++ main.cpp ./variants/variant_avx512_1.cpp -o main_avx512_1 -O3 -march=native -std=c++23 -Wall -Wextra -flto -lsleef -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 63060640.00 cycles
|
||||||
|
P(n): 2.93 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 215114100.00 cycles
|
||||||
|
P(n): 3.39 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 744500640.00 cycles
|
||||||
|
P(n): 3.89 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 4480783600.00 cycles
|
||||||
|
P(n): 4.03 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=1000 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 72090000.00 flops
|
||||||
|
Q(n) per iteration: 128112 bytes
|
||||||
|
I(n): 562.71 flops/byte
|
||||||
|
W(n): 72090000000.00 flops
|
||||||
|
T(n): 16918374740.00 cycles
|
||||||
|
P(n): 4.26 flops/cycle
|
||||||
|
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
|
||||||
|
/usr/bin/g++ main.cpp ./variants/variant_avx512_1.cpp -o main_avx512_1 -O3 -march=native -std=c++23 -Wall -Wextra -flto -lsleef -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 62465750.00 cycles
|
||||||
|
P(n): 2.95 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 213111220.00 cycles
|
||||||
|
P(n): 3.42 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 749193840.00 cycles
|
||||||
|
P(n): 3.87 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 4481202620.00 cycles
|
||||||
|
P(n): 4.03 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=1000 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 72090000.00 flops
|
||||||
|
Q(n) per iteration: 128112 bytes
|
||||||
|
I(n): 562.71 flops/byte
|
||||||
|
W(n): 72090000000.00 flops
|
||||||
|
T(n): 17063409500.00 cycles
|
||||||
|
P(n): 4.22 flops/cycle
|
||||||
|
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s variants/*.s variants/*.o headers/*.s headers/*.o
|
||||||
|
/usr/bin/g++ main.cpp ./variants/variant_avx512_1.cpp -o main_avx512_1 -O3 -march=native -std=c++23 -Wall -Wextra -flto -lsleef -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 62186140.00 cycles
|
||||||
|
P(n): 2.97 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 214174540.00 cycles
|
||||||
|
P(n): 3.40 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 739779420.00 cycles
|
||||||
|
P(n): 3.92 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 4486436580.00 cycles
|
||||||
|
P(n): 4.02 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=1000 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 72090000.00 flops
|
||||||
|
Q(n) per iteration: 128112 bytes
|
||||||
|
I(n): 562.71 flops/byte
|
||||||
|
W(n): 72090000000.00 flops
|
||||||
|
T(n): 16950058060.00 cycles
|
||||||
|
P(n): 4.25 flops/cycle
|
||||||
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_baseline.cpp -o main_baseline
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 149741420.00 cycles
|
||||||
|
P(n): 1.23 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 590173880.00 cycles
|
||||||
|
P(n): 1.24 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2394306640.00 cycles
|
||||||
|
P(n): 1.21 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 15758554280.00 cycles
|
||||||
|
P(n): 1.15 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=1000 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 72090000.00 flops
|
||||||
|
Q(n) per iteration: 128112 bytes
|
||||||
|
I(n): 562.71 flops/byte
|
||||||
|
W(n): 72090000000.00 flops
|
||||||
|
T(n): 61911299420.00 cycles
|
||||||
|
P(n): 1.16 flops/cycle
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_baseline.cpp -o main_baseline
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 145460860.00 cycles
|
||||||
|
P(n): 1.27 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 589429960.00 cycles
|
||||||
|
P(n): 1.24 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2395474680.00 cycles
|
||||||
|
P(n): 1.21 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 15694979780.00 cycles
|
||||||
|
P(n): 1.15 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=1000 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 72090000.00 flops
|
||||||
|
Q(n) per iteration: 128112 bytes
|
||||||
|
I(n): 562.71 flops/byte
|
||||||
|
W(n): 72090000000.00 flops
|
||||||
|
T(n): 61883782540.00 cycles
|
||||||
|
P(n): 1.16 flops/cycle
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_baseline.cpp -o main_baseline
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 147463240.00 cycles
|
||||||
|
P(n): 1.25 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 583811800.00 cycles
|
||||||
|
P(n): 1.25 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2406765140.00 cycles
|
||||||
|
P(n): 1.20 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 15769461780.00 cycles
|
||||||
|
P(n): 1.14 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=1000 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 72090000.00 flops
|
||||||
|
Q(n) per iteration: 128112 bytes
|
||||||
|
I(n): 562.71 flops/byte
|
||||||
|
W(n): 72090000000.00 flops
|
||||||
|
T(n): 61870155280.00 cycles
|
||||||
|
P(n): 1.17 flops/cycle
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_branchless.cpp -o main_branchless
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 164628520.00 cycles
|
||||||
|
P(n): 1.12 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 668671300.00 cycles
|
||||||
|
P(n): 1.09 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2797909140.00 cycles
|
||||||
|
P(n): 1.04 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 18473174460.00 cycles
|
||||||
|
P(n): 0.98 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=1000 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 72090000.00 flops
|
||||||
|
Q(n) per iteration: 128112 bytes
|
||||||
|
I(n): 562.71 flops/byte
|
||||||
|
W(n): 72090000000.00 flops
|
||||||
|
T(n): 72557284580.00 cycles
|
||||||
|
P(n): 0.99 flops/cycle
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_branchless.cpp -o main_branchless
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 163598600.00 cycles
|
||||||
|
P(n): 1.13 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 672653360.00 cycles
|
||||||
|
P(n): 1.08 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2815032380.00 cycles
|
||||||
|
P(n): 1.03 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 18559971420.00 cycles
|
||||||
|
P(n): 0.97 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=1000 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 72090000.00 flops
|
||||||
|
Q(n) per iteration: 128112 bytes
|
||||||
|
I(n): 562.71 flops/byte
|
||||||
|
W(n): 72090000000.00 flops
|
||||||
|
T(n): 72285399260.00 cycles
|
||||||
|
P(n): 1.00 flops/cycle
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_branchless.cpp -o main_branchless
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 165200000.00 cycles
|
||||||
|
P(n): 1.12 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 686277160.00 cycles
|
||||||
|
P(n): 1.06 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2805241940.00 cycles
|
||||||
|
P(n): 1.03 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 18557266380.00 cycles
|
||||||
|
P(n): 0.97 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=1000 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 72090000.00 flops
|
||||||
|
Q(n) per iteration: 128112 bytes
|
||||||
|
I(n): 562.71 flops/byte
|
||||||
|
W(n): 72090000000.00 flops
|
||||||
|
T(n): 72552877660.00 cycles
|
||||||
|
P(n): 0.99 flops/cycle
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_branchless_sqrtfree.cpp -o main_branchless_sqrtfree
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 160027720.00 cycles
|
||||||
|
P(n): 1.15 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 632178740.00 cycles
|
||||||
|
P(n): 1.15 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2477854340.00 cycles
|
||||||
|
P(n): 1.17 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 15380682320.00 cycles
|
||||||
|
P(n): 1.17 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=1000 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 72090000.00 flops
|
||||||
|
Q(n) per iteration: 128112 bytes
|
||||||
|
I(n): 562.71 flops/byte
|
||||||
|
W(n): 72090000000.00 flops
|
||||||
|
T(n): 61619267280.00 cycles
|
||||||
|
P(n): 1.17 flops/cycle
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DBENCHMARK=1 main.cpp ./variants/variant_ilp.cpp -o main_ilp
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7.cpp -o main_inlining_7
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 131794980.00 cycles
|
||||||
|
P(n): 1.40 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 527605420.00 cycles
|
||||||
|
P(n): 1.38 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2166884360.00 cycles
|
||||||
|
P(n): 1.34 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 14615797280.00 cycles
|
||||||
|
P(n): 1.23 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=1000 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 72090000.00 flops
|
||||||
|
Q(n) per iteration: 128112 bytes
|
||||||
|
I(n): 562.71 flops/byte
|
||||||
|
W(n): 72090000000.00 flops
|
||||||
|
T(n): 57677070100.00 cycles
|
||||||
|
P(n): 1.25 flops/cycle
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7.cpp -o main_inlining_7
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 132693220.00 cycles
|
||||||
|
P(n): 1.39 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 527980800.00 cycles
|
||||||
|
P(n): 1.38 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2161999920.00 cycles
|
||||||
|
P(n): 1.34 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 14567319680.00 cycles
|
||||||
|
P(n): 1.24 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=1000 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 72090000.00 flops
|
||||||
|
Q(n) per iteration: 128112 bytes
|
||||||
|
I(n): 562.71 flops/byte
|
||||||
|
W(n): 72090000000.00 flops
|
||||||
|
T(n): 57637351660.00 cycles
|
||||||
|
P(n): 1.25 flops/cycle
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7.cpp -o main_inlining_7
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 132083640.00 cycles
|
||||||
|
P(n): 1.40 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 526775360.00 cycles
|
||||||
|
P(n): 1.38 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2160050540.00 cycles
|
||||||
|
P(n): 1.34 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 14605475200.00 cycles
|
||||||
|
P(n): 1.24 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=1000 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 72090000.00 flops
|
||||||
|
Q(n) per iteration: 128112 bytes
|
||||||
|
I(n): 562.71 flops/byte
|
||||||
|
W(n): 72090000000.00 flops
|
||||||
|
T(n): 57692748180.00 cycles
|
||||||
|
P(n): 1.25 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7_SoA.cpp -o main_inlining_7_SoA
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 174279560.00 cycles
|
||||||
|
P(n): 1.06 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 771260820.00 cycles
|
||||||
|
P(n): 0.95 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 3263227240.00 cycles
|
||||||
|
P(n): 0.89 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 19848792000.00 cycles
|
||||||
|
P(n): 0.91 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7_SoA.cpp -o main_inlining_7_SoA
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 174641860.00 cycles
|
||||||
|
P(n): 1.06 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 769502860.00 cycles
|
||||||
|
P(n): 0.95 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 3259749920.00 cycles
|
||||||
|
P(n): 0.89 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 19799476220.00 cycles
|
||||||
|
P(n): 0.91 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7_SoA.cpp -o main_inlining_7_SoA
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 174646140.00 cycles
|
||||||
|
P(n): 1.06 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 771133380.00 cycles
|
||||||
|
P(n): 0.95 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 3262481280.00 cycles
|
||||||
|
P(n): 0.89 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 19817595500.00 cycles
|
||||||
|
P(n): 0.91 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7_symmetry_2.cpp -o main_inlining_7_symmetry_2
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 134217900.00 cycles
|
||||||
|
P(n): 1.37 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 539909700.00 cycles
|
||||||
|
P(n): 1.35 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2204928560.00 cycles
|
||||||
|
P(n): 1.31 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 15229802740.00 cycles
|
||||||
|
P(n): 1.18 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7_symmetry_2.cpp -o main_inlining_7_symmetry_2
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 134590240.00 cycles
|
||||||
|
P(n): 1.37 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 537772020.00 cycles
|
||||||
|
P(n): 1.36 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2216669180.00 cycles
|
||||||
|
P(n): 1.31 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 15269978860.00 cycles
|
||||||
|
P(n): 1.18 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7_symmetry_2.cpp -o main_inlining_7_symmetry_2
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 133252040.00 cycles
|
||||||
|
P(n): 1.38 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 533142280.00 cycles
|
||||||
|
P(n): 1.37 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2200045220.00 cycles
|
||||||
|
P(n): 1.32 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 15171854800.00 cycles
|
||||||
|
P(n): 1.19 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7_symmetry_2_ilp_1.cpp -o main_inlining_7_symmetry_2_ilp_1
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 134117580.00 cycles
|
||||||
|
P(n): 1.38 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 529885740.00 cycles
|
||||||
|
P(n): 1.38 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2158215760.00 cycles
|
||||||
|
P(n): 1.34 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 14658868260.00 cycles
|
||||||
|
P(n): 1.23 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7_symmetry_2_ilp_1.cpp -o main_inlining_7_symmetry_2_ilp_1
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 135847100.00 cycles
|
||||||
|
P(n): 1.36 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 531086160.00 cycles
|
||||||
|
P(n): 1.37 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2149640340.00 cycles
|
||||||
|
P(n): 1.35 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 14662439140.00 cycles
|
||||||
|
P(n): 1.23 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7_symmetry_2_ilp_1.cpp -o main_inlining_7_symmetry_2_ilp_1
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 132982240.00 cycles
|
||||||
|
P(n): 1.39 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 530176140.00 cycles
|
||||||
|
P(n): 1.38 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2162889920.00 cycles
|
||||||
|
P(n): 1.34 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 14697507480.00 cycles
|
||||||
|
P(n): 1.23 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7_symmetry_2_ilp_2.cpp -o main_inlining_7_symmetry_2_ilp_2
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 138339020.00 cycles
|
||||||
|
P(n): 1.33 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 534997480.00 cycles
|
||||||
|
P(n): 1.36 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2168912380.00 cycles
|
||||||
|
P(n): 1.34 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 14986758980.00 cycles
|
||||||
|
P(n): 1.20 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7_symmetry_2_ilp_2.cpp -o main_inlining_7_symmetry_2_ilp_2
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 135244420.00 cycles
|
||||||
|
P(n): 1.36 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 537453160.00 cycles
|
||||||
|
P(n): 1.36 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2175781640.00 cycles
|
||||||
|
P(n): 1.33 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 14932133120.00 cycles
|
||||||
|
P(n): 1.21 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_inlining_7_symmetry_2_ilp_2.cpp -o main_inlining_7_symmetry_2_ilp_2
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 135881620.00 cycles
|
||||||
|
P(n): 1.36 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 534853360.00 cycles
|
||||||
|
P(n): 1.36 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2166176600.00 cycles
|
||||||
|
P(n): 1.34 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 14773516340.00 cycles
|
||||||
|
P(n): 1.22 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_lut_exp.cpp -o main_lut_exp
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 145567620.00 cycles
|
||||||
|
P(n): 1.27 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 569315980.00 cycles
|
||||||
|
P(n): 1.28 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2268145640.00 cycles
|
||||||
|
P(n): 1.28 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 15227306960.00 cycles
|
||||||
|
P(n): 1.19 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_lut_exp.cpp -o main_lut_exp
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 141259480.00 cycles
|
||||||
|
P(n): 1.31 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 570826340.00 cycles
|
||||||
|
P(n): 1.28 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2281692040.00 cycles
|
||||||
|
P(n): 1.27 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 15242958120.00 cycles
|
||||||
|
P(n): 1.18 flops/cycle
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
rm -f main_* sizes run_tests *.o *.s
|
||||||
|
/usr/bin/g++ -O3 -march=native -std=c++23 -Wall -Wextra -flto -DFLOPCOUNT=0 -DRANDOM_SEED=0 -DROOFLINE=0 -DBENCHMARK=1 main.cpp ./variants/variant_lut_exp.cpp -o main_lut_exp
|
||||||
|
=== N_P=50 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 184500.00 flops
|
||||||
|
Q(n) per iteration: 6512 bytes
|
||||||
|
I(n): 28.33 flops/byte
|
||||||
|
W(n): 184500000.00 flops
|
||||||
|
T(n): 140807980.00 cycles
|
||||||
|
P(n): 1.31 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=100 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 729000.00 flops
|
||||||
|
Q(n) per iteration: 12912 bytes
|
||||||
|
I(n): 56.46 flops/byte
|
||||||
|
W(n): 729000000.00 flops
|
||||||
|
T(n): 563063780.00 cycles
|
||||||
|
P(n): 1.29 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=200 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 2898000.00 flops
|
||||||
|
Q(n) per iteration: 25712 bytes
|
||||||
|
I(n): 112.71 flops/byte
|
||||||
|
W(n): 2898000000.00 flops
|
||||||
|
T(n): 2268612980.00 cycles
|
||||||
|
P(n): 1.28 flops/cycle
|
||||||
|
|
||||||
|
=== N_P=500 N_ITER=1000 ===
|
||||||
|
W(n) per iteration: 18045000.00 flops
|
||||||
|
Q(n) per iteration: 64112 bytes
|
||||||
|
I(n): 281.46 flops/byte
|
||||||
|
W(n): 18045000000.00 flops
|
||||||
|
T(n): 15237244940.00 cycles
|
||||||
|
P(n): 1.18 flops/cycle
|
||||||
Reference in New Issue
Block a user