From 4a16da26dacdb37b9ef8d3d11e10ecb94b0cf396 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Wed, 3 Jul 2024 15:05:10 +0200 Subject: renamed benchmarks to tools --- .../benchmark_gendata_h48/benchmark_gendata_h48.c | 47 ++++++++++++++++++++++ tools/run_tool.sh | 27 +++++++++++++ tools/timerun.h | 39 ++++++++++++++++++ 3 files changed, 113 insertions(+) create mode 100644 tools/benchmark_gendata_h48/benchmark_gendata_h48.c create mode 100755 tools/run_tool.sh create mode 100644 tools/timerun.h (limited to 'tools') diff --git a/tools/benchmark_gendata_h48/benchmark_gendata_h48.c b/tools/benchmark_gendata_h48/benchmark_gendata_h48.c new file mode 100644 index 0000000..efb6f6f --- /dev/null +++ b/tools/benchmark_gendata_h48/benchmark_gendata_h48.c @@ -0,0 +1,47 @@ +#include "../timerun.h" +#include "../../src/cube.h" + +#define MAXDEPTH 10 +#define HVALUE 2 +#define OPTIONS "2;10" +#define LONGOPTIONS "h = 2, max depth = 10" + +#define COCSEPSIZE 1119792 +#define ETABLESIZE(h) (((3393 * 495 * 70) >> 1) << (size_t)(h)) + +char *buf; + +void run(void) { + uint32_t *h48info; + int i; + int64_t s; + + s = nissy_gendata("H48", OPTIONS, buf); + + if (s == -1) { + printf("Error generating table\n"); + } else { + printf("Succesfully generated %" PRId64 " bytes. Table:\n", s); + h48info = (uint32_t *)buf + (ETABLESIZE(HVALUE) + COCSEPSIZE) / 4; + for (i = 0; i < MAXDEPTH+1; i++) + printf("%d:\t%" PRIu32 "\n", i, h48info[i+1]); + } +} + +int main() { + int64_t size; + + size = nissy_datasize("H48", OPTIONS); + if (size == -1) { + printf("gendata_h48 benchmark: error in datasize\n"); + return 1; + } + + buf = malloc(size); + + timerun(run, "benchmark gendata_h48 " LONGOPTIONS); + + free(buf); + + return 0; +} diff --git a/tools/run_tool.sh b/tools/run_tool.sh new file mode 100755 index 0000000..21b6ce9 --- /dev/null +++ b/tools/run_tool.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +if [ -z "$TOOL" ]; then + echo "No tool selected (TOOL variable must be set)" + exit 1 +fi + +CC="cc -std=c99 -pedantic -Wall -Wextra \ + -Wno-unused-parameter -Wno-unused-function -O3 -D$CUBETYPE \ + -D_POSIX_C_SOURCE=199309L" + +[ "$CUBETYPE" = "CUBE_AVX2" ] && CC="$CC -mavx2" + +BIN="tools/run" +CUBEOBJ="cube.o" +d="$(date +'%Y-%m-%d-%H-%M-%S')" + +for t in tools/*; do + if [ ! -d "$t" ] || [ -z "$(echo "$t" | grep "$TOOL")" ]; then + continue + fi + $CC -o $BIN $t/*.c $CUBEOBJ || exit 1; + $BIN + break +done + +rm -rf $BIN $CUBEOBJ diff --git a/tools/timerun.h b/tools/timerun.h new file mode 100644 index 0000000..dabfde0 --- /dev/null +++ b/tools/timerun.h @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include + +double +timerun(void (*run)(void), char *name) +{ + struct timespec start, end; + double tdiff, tdsec, tdnano; + + printf("\n"); + fflush(stdout); + + if (run == NULL) { + printf("> %s: nothing to run!\n", name); + fflush(stdout); + return -1.0; + } + + printf("Running tool: %s\n", name); + printf("==========\n"); + fflush(stdout); + + clock_gettime(CLOCK_MONOTONIC, &start); + run(); + clock_gettime(CLOCK_MONOTONIC, &end); + + tdsec = end.tv_sec - start.tv_sec; + tdnano = end.tv_nsec - start.tv_nsec; + tdiff = tdsec + 1e-9 * tdnano; + + printf("==========\n"); + printf("\nTotal time: %.4fs\n", tdiff); + fflush(stdout); + + return tdiff; +} -- cgit v1.3