aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/0002_gendata_h48h0k2/gendata_h48h0k2.c21
-rw-r--r--tools/0004_gendata_h48h0k4/gendata_h48h0k4.c29
-rw-r--r--tools/000_gendata/gendata.c55
-rw-r--r--tools/0012_gendata_h48h1k2/gendata_h48h1k2.c21
-rw-r--r--tools/0022_gendata_h48h2k2/gendata_h48h2k2.c21
-rw-r--r--tools/0032_gendata_h48h3k2/gendata_h48h3k2.c21
-rw-r--r--tools/0042_gendata_h48h4k2/gendata_h48h4k2.c21
-rw-r--r--tools/0052_gendata_h48h5k2/gendata_h48h5k2.c21
-rw-r--r--tools/0062_gendata_h48h6k2/gendata_h48h6k2.c21
-rw-r--r--tools/0072_gendata_h48h7k2/gendata_h48h7k2.c21
-rw-r--r--tools/0082_gendata_h48h8k2/gendata_h48h8k2.c21
-rw-r--r--tools/0092_gendata_h48h9k2/gendata_h48h9k2.c21
-rw-r--r--tools/0102_gendata_h48h10k2/gendata_h48h10k2.c21
-rw-r--r--tools/0112_gendata_h48h11k2/gendata_h48h11k2.c21
-rw-r--r--tools/100_checkdata/checkdata.c52
-rw-r--r--tools/200_stats_tables_h48/stats_tables_h48.c (renamed from tools/100_stats_tables_h48/stats_tables_h48.c)0
-rw-r--r--tools/300_solve_small/solve_small.c (renamed from tools/200_solve_small/solve_small.c)0
-rw-r--r--tools/expected_distributions.h25
-rw-r--r--tools/nissy_extra.h1
-rwxr-xr-xtools/run_tool.sh5
-rw-r--r--tools/tool.h19
21 files changed, 151 insertions, 287 deletions
diff --git a/tools/0002_gendata_h48h0k2/gendata_h48h0k2.c b/tools/0002_gendata_h48h0k2/gendata_h48h0k2.c
deleted file mode 100644
index 14f99ee..0000000
--- a/tools/0002_gendata_h48h0k2/gendata_h48h0k2.c
+++ /dev/null
@@ -1,21 +0,0 @@
1#include "../tool.h"
2
3uint64_t expected[21] = {
4 /* Base value is 8 */
5 [0] = 5473562,
6 [1] = 34776317,
7 [2] = 68566704,
8 [3] = 8750867,
9};
10
11void run(void) {
12 gendata_run("h48", "0;2;20", "tables/h48h0k2", expected);
13}
14
15int main(void) {
16 nissy_setlogger(log_stderr);
17
18 timerun(run, "benchmark gendata_h48 h = 0, k = 2");
19
20 return 0;
21}
diff --git a/tools/0004_gendata_h48h0k4/gendata_h48h0k4.c b/tools/0004_gendata_h48h0k4/gendata_h48h0k4.c
deleted file mode 100644
index ff34bb9..0000000
--- a/tools/0004_gendata_h48h0k4/gendata_h48h0k4.c
+++ /dev/null
@@ -1,29 +0,0 @@
1#include "../tool.h"
2
3uint64_t expected[21] = {
4 [0] = 1,
5 [1] = 1,
6 [2] = 4,
7 [3] = 34,
8 [4] = 331,
9 [5] = 3612,
10 [6] = 41605,
11 [7] = 474128,
12 [8] = 4953846,
13 [9] = 34776317,
14 [10] = 68566704,
15 [11] = 8749194,
16 [12] = 1673,
17};
18
19void run(void) {
20 gendata_run("h48", "0;4;20", "tables/h48h0k4", expected);
21}
22
23int main(void) {
24 nissy_setlogger(log_stderr);
25
26 timerun(run, "benchmark gendata_h48 h = 0, k = 4");
27
28 return 0;
29}
diff --git a/tools/000_gendata/gendata.c b/tools/000_gendata/gendata.c
new file mode 100644
index 0000000..90166dd
--- /dev/null
+++ b/tools/000_gendata/gendata.c
@@ -0,0 +1,55 @@
1#include "../tool.h"
2#include "../expected_distributions.h"
3
4char *solver, *options;
5uint64_t *expected;
6
7static void
8run(void) {
9 int64_t size;
10 char *buf, filename[1024];
11
12 getfilename(solver, options, filename);
13 size = generatetable(solver, options, &buf);
14 switch (size) {
15 case -1:
16 return;
17 case -2:
18 goto gendata_run_finish;
19 default:
20 nissy_datainfo(buf, write_stdout);
21 printf("\n");
22 printf("Succesfully generated %" PRId64 " bytes. "
23 "See above for details on the tables.\n", size);
24
25 writetable(buf, size, filename);
26 break;
27 }
28
29gendata_run_finish:
30 free(buf);
31}
32
33int main(int argc, char **argv) {
34 uint8_t h, k;
35 char description[256];
36
37 if (argc < 3) {
38 fprintf(stderr, "Error: not enough arguments. "
39 "A solver and its options must be given.\n");
40 return 1;
41 }
42
43 solver = argv[1];
44 options = argv[2];
45 parse_h48_options(options, &h, &k, NULL);
46 expected = expected_h48[h][k];
47 sprintf(description, "benchmark gendata_h48 h = %" PRIu8
48 ", k = %" PRIu8 "", h, k);
49
50 nissy_setlogger(log_stderr);
51
52 timerun(run, description);
53
54 return 0;
55}
diff --git a/tools/0012_gendata_h48h1k2/gendata_h48h1k2.c b/tools/0012_gendata_h48h1k2/gendata_h48h1k2.c
deleted file mode 100644
index 0ebdcaa..0000000
--- a/tools/0012_gendata_h48h1k2/gendata_h48h1k2.c
+++ /dev/null
@@ -1,21 +0,0 @@
1#include "../tool.h"
2
3uint64_t expected[21] = {
4 /* Base value is 8 */
5 [0] = 0, /* Unknown */
6 [1] = 0, /* Unknown */
7 [2] = 0, /* Unknown */
8 [3] = 0, /* Unknown */
9};
10
11void run(void) {
12 gendata_run("h48", "1;2;20", "tables/h48h1k2", expected);
13}
14
15int main(void) {
16 nissy_setlogger(log_stderr);
17
18 timerun(run, "benchmark gendata_h48 h = 1, k = 2");
19
20 return 0;
21}
diff --git a/tools/0022_gendata_h48h2k2/gendata_h48h2k2.c b/tools/0022_gendata_h48h2k2/gendata_h48h2k2.c
deleted file mode 100644
index f437e98..0000000
--- a/tools/0022_gendata_h48h2k2/gendata_h48h2k2.c
+++ /dev/null
@@ -1,21 +0,0 @@
1#include "../tool.h"
2
3uint64_t expected[21] = {
4 /* Base value is 8 */
5 [0] = 0, /* Unknown */
6 [1] = 0, /* Unknown */
7 [2] = 0, /* Unknown */
8 [3] = 0, /* Unknown */
9};
10
11void run(void) {
12 gendata_run("h48", "2;2;20", "tables/h48h2k2", expected);
13}
14
15int main(void) {
16 nissy_setlogger(log_stderr);
17
18 timerun(run, "benchmark gendata_h48 h = 2, k = 2");
19
20 return 0;
21}
diff --git a/tools/0032_gendata_h48h3k2/gendata_h48h3k2.c b/tools/0032_gendata_h48h3k2/gendata_h48h3k2.c
deleted file mode 100644
index 2e0eab5..0000000
--- a/tools/0032_gendata_h48h3k2/gendata_h48h3k2.c
+++ /dev/null
@@ -1,21 +0,0 @@
1#include "../tool.h"
2
3uint64_t expected[21] = {
4 /* Base value is 8 */
5 [0] = 0, /* Unknown */
6 [1] = 0, /* Unknown */
7 [2] = 0, /* Unknown */
8 [3] = 0, /* Unknown */
9};
10
11void run(void) {
12 gendata_run("h48", "3;2;20", "tables/h48h3k2", expected);
13}
14
15int main(void) {
16 nissy_setlogger(log_stderr);
17
18 timerun(run, "benchmark gendata_h48 h = 3, k = 2");
19
20 return 0;
21}
diff --git a/tools/0042_gendata_h48h4k2/gendata_h48h4k2.c b/tools/0042_gendata_h48h4k2/gendata_h48h4k2.c
deleted file mode 100644
index 868c360..0000000
--- a/tools/0042_gendata_h48h4k2/gendata_h48h4k2.c
+++ /dev/null
@@ -1,21 +0,0 @@
1#include "../tool.h"
2
3uint64_t expected[21] = {
4 /* Base value is 8 */
5 [0] = 0, /* Unknown */
6 [1] = 0, /* Unknown */
7 [2] = 0, /* Unknown */
8 [3] = 0, /* Unknown */
9};
10
11void run(void) {
12 gendata_run("h48", "4;2;20", "tables/h48h4k2", expected);
13}
14
15int main(void) {
16 nissy_setlogger(log_stderr);
17
18 timerun(run, "benchmark gendata_h48 h = 4, k = 2");
19
20 return 0;
21}
diff --git a/tools/0052_gendata_h48h5k2/gendata_h48h5k2.c b/tools/0052_gendata_h48h5k2/gendata_h48h5k2.c
deleted file mode 100644
index d292d49..0000000
--- a/tools/0052_gendata_h48h5k2/gendata_h48h5k2.c
+++ /dev/null
@@ -1,21 +0,0 @@
1#include "../tool.h"
2
3uint64_t expected[21] = {
4 /* Base value is 8 */
5 [0] = 0, /* Unknown */
6 [1] = 0, /* Unknown */
7 [2] = 0, /* Unknown */
8 [3] = 0, /* Unknown */
9};
10
11void run(void) {
12 gendata_run("h48", "5;2;20", "tables/h48h5k2", expected);
13}
14
15int main(void) {
16 nissy_setlogger(log_stderr);
17
18 timerun(run, "benchmark gendata_h48 h = 5, k = 2");
19
20 return 0;
21}
diff --git a/tools/0062_gendata_h48h6k2/gendata_h48h6k2.c b/tools/0062_gendata_h48h6k2/gendata_h48h6k2.c
deleted file mode 100644
index 910d514..0000000
--- a/tools/0062_gendata_h48h6k2/gendata_h48h6k2.c
+++ /dev/null
@@ -1,21 +0,0 @@
1#include "../tool.h"
2
3uint64_t expected[21] = {
4 /* Base value is 8 */
5 [0] = 0, /* Unknown */
6 [1] = 0, /* Unknown */
7 [2] = 0, /* Unknown */
8 [3] = 0, /* Unknown */
9};
10
11void run(void) {
12 gendata_run("h48", "6;2;20", "tables/h48h6k2", expected);
13}
14
15int main(void) {
16 nissy_setlogger(log_stderr);
17
18 timerun(run, "benchmark gendata_h48 h = 6, k = 2");
19
20 return 0;
21}
diff --git a/tools/0072_gendata_h48h7k2/gendata_h48h7k2.c b/tools/0072_gendata_h48h7k2/gendata_h48h7k2.c
deleted file mode 100644
index b803328..0000000
--- a/tools/0072_gendata_h48h7k2/gendata_h48h7k2.c
+++ /dev/null
@@ -1,21 +0,0 @@
1#include "../tool.h"
2
3uint64_t expected[21] = {
4 /* Base value is 8 */
5 [0] = 0, /* Unknown */
6 [1] = 0, /* Unknown */
7 [2] = 0, /* Unknown */
8 [3] = 0, /* Unknown */
9};
10
11void run(void) {
12 gendata_run("h48", "7;2;20", "tables/h48h7k2", expected);
13}
14
15int main(void) {
16 nissy_setlogger(log_stderr);
17
18 timerun(run, "benchmark gendata_h48 h = 7, k = 2");
19
20 return 0;
21}
diff --git a/tools/0082_gendata_h48h8k2/gendata_h48h8k2.c b/tools/0082_gendata_h48h8k2/gendata_h48h8k2.c
deleted file mode 100644
index 52c377a..0000000
--- a/tools/0082_gendata_h48h8k2/gendata_h48h8k2.c
+++ /dev/null
@@ -1,21 +0,0 @@
1#include "../tool.h"
2
3uint64_t expected[21] = {
4 /* Base value is 8 */
5 [0] = 0, /* Unknown */
6 [1] = 0, /* Unknown */
7 [2] = 0, /* Unknown */
8 [3] = 0, /* Unknown */
9};
10
11void run(void) {
12 gendata_run("h48", "8;2;20", "tables/h48h8k2", expected);
13}
14
15int main(void) {
16 nissy_setlogger(log_stderr);
17
18 timerun(run, "benchmark gendata_h48 h = 8, k = 2");
19
20 return 0;
21}
diff --git a/tools/0092_gendata_h48h9k2/gendata_h48h9k2.c b/tools/0092_gendata_h48h9k2/gendata_h48h9k2.c
deleted file mode 100644
index 5d3e34a..0000000
--- a/tools/0092_gendata_h48h9k2/gendata_h48h9k2.c
+++ /dev/null
@@ -1,21 +0,0 @@
1#include "../tool.h"
2
3uint64_t expected[21] = {
4 /* Base value is 8 */
5 [0] = 0, /* Unknown */
6 [1] = 0, /* Unknown */
7 [2] = 0, /* Unknown */
8 [3] = 0, /* Unknown */
9};
10
11void run(void) {
12 gendata_run("h48", "9;2;20", "tables/h48h9k2", expected);
13}
14
15int main(void) {
16 nissy_setlogger(log_stderr);
17
18 timerun(run, "benchmark gendata_h48 h = 9, k = 2");
19
20 return 0;
21}
diff --git a/tools/0102_gendata_h48h10k2/gendata_h48h10k2.c b/tools/0102_gendata_h48h10k2/gendata_h48h10k2.c
deleted file mode 100644
index 5e8fbb0..0000000
--- a/tools/0102_gendata_h48h10k2/gendata_h48h10k2.c
+++ /dev/null
@@ -1,21 +0,0 @@
1#include "../tool.h"
2
3uint64_t expected[21] = {
4 /* Base value is 8 */
5 [0] = 0, /* Unknown */
6 [1] = 0, /* Unknown */
7 [2] = 0, /* Unknown */
8 [3] = 0, /* Unknown */
9};
10
11void run(void) {
12 gendata_run("h48", "10;2;20", "tables/h48h10k2", expected);
13}
14
15int main(void) {
16 nissy_setlogger(log_stderr);
17
18 timerun(run, "benchmark gendata_h48 h = 10, k = 2");
19
20 return 0;
21}
diff --git a/tools/0112_gendata_h48h11k2/gendata_h48h11k2.c b/tools/0112_gendata_h48h11k2/gendata_h48h11k2.c
deleted file mode 100644
index 00c0747..0000000
--- a/tools/0112_gendata_h48h11k2/gendata_h48h11k2.c
+++ /dev/null
@@ -1,21 +0,0 @@
1#include "../tool.h"
2
3uint64_t expected[21] = {
4 /* Base value is 8 */
5 [0] = 0, /* Unknown */
6 [1] = 0, /* Unknown */
7 [2] = 0, /* Unknown */
8 [3] = 0, /* Unknown */
9};
10
11void run(void) {
12 gendata_run("h48", "11;2;20", "tables/h48h11k2", expected);
13}
14
15int main(void) {
16 nissy_setlogger(log_stderr);
17
18 timerun(run, "benchmark gendata_h48 h = 11, k = 2");
19
20 return 0;
21}
diff --git a/tools/100_checkdata/checkdata.c b/tools/100_checkdata/checkdata.c
new file mode 100644
index 0000000..05961c1
--- /dev/null
+++ b/tools/100_checkdata/checkdata.c
@@ -0,0 +1,52 @@
1#include "../tool.h"
2#include "../expected_distributions.h"
3
4char *solver, *options, *filename;
5
6static void
7run(void) {
8 int64_t size;
9 char *buf;
10 FILE *f;
11
12 size = nissy_datasize(solver, options);
13
14 if (size <= 0) {
15 fprintf(stderr, "Error in datasize\n");
16 return;
17 }
18
19 if ((f = fopen(filename, "rb")) == NULL) {
20 fprintf(stderr, "Error reading file %s\n", filename);
21 return;
22 }
23
24 buf = malloc(size);
25 fread(buf, size, 1, f);
26 fclose(f);
27 nissy_checkdata(solver, options, buf);
28 free(buf);
29
30 /* TODO: cross-check with expected distributions? */
31}
32
33int main(int argc, char **argv) {
34 char description[256];
35
36 if (argc < 4) {
37 fprintf(stderr, "Error: not enough arguments. "
38 "A solver, its options and a file name must be given.\n");
39 return 1;
40 }
41
42 solver = argv[1];
43 options = argv[2];
44 filename = argv[3];
45 sprintf(description, "checking data for solver %s"
46 "with options %s from file %s", solver, options, filename);
47 nissy_setlogger(log_stderr);
48
49 timerun(run, description);
50
51 return 0;
52}
diff --git a/tools/100_stats_tables_h48/stats_tables_h48.c b/tools/200_stats_tables_h48/stats_tables_h48.c
index adac8fa..adac8fa 100644
--- a/tools/100_stats_tables_h48/stats_tables_h48.c
+++ b/tools/200_stats_tables_h48/stats_tables_h48.c
diff --git a/tools/200_solve_small/solve_small.c b/tools/300_solve_small/solve_small.c
index 4d07728..4d07728 100644
--- a/tools/200_solve_small/solve_small.c
+++ b/tools/300_solve_small/solve_small.c
diff --git a/tools/expected_distributions.h b/tools/expected_distributions.h
new file mode 100644
index 0000000..27bd64a
--- /dev/null
+++ b/tools/expected_distributions.h
@@ -0,0 +1,25 @@
1uint64_t expected_h48[12][9][21] = {
2 [0] = {
3 [2] = {
4 [0] = 5473562,
5 [1] = 34776317,
6 [2] = 68566704,
7 [3] = 8750867,
8 },
9 [4] = {
10 [0] = 1,
11 [1] = 1,
12 [2] = 4,
13 [3] = 34,
14 [4] = 331,
15 [5] = 3612,
16 [6] = 41605,
17 [7] = 474128,
18 [8] = 4953846,
19 [9] = 34776317,
20 [10] = 68566704,
21 [11] = 8749194,
22 [12] = 1673,
23 },
24 },
25};
diff --git a/tools/nissy_extra.h b/tools/nissy_extra.h
index 4294c24..1e714a7 100644
--- a/tools/nissy_extra.h
+++ b/tools/nissy_extra.h
@@ -4,3 +4,4 @@ for testing purposes only.
4*/ 4*/
5 5
6size_t gendata_h48_derive(uint8_t, const void *, void *); 6size_t gendata_h48_derive(uint8_t, const void *, void *);
7int parse_h48_options(const char *, uint8_t *, uint8_t *, uint8_t *);
diff --git a/tools/run_tool.sh b/tools/run_tool.sh
index 7e09684..2216a66 100755
--- a/tools/run_tool.sh
+++ b/tools/run_tool.sh
@@ -5,7 +5,7 @@ if [ -z "$TOOL" ]; then
5 exit 1 5 exit 1
6fi 6fi
7 7
8CC="$CC -D_POSIX_C_SOURCE=199309L" 8CC="$CC -D_POSIX_C_SOURCE=199309L" # For timer
9 9
10BIN="tools/run" 10BIN="tools/run"
11d="$(date +'%Y-%m-%d-%H-%M-%S')" 11d="$(date +'%Y-%m-%d-%H-%M-%S')"
@@ -16,7 +16,8 @@ for t in tools/*; do
16 fi 16 fi
17 toolname="$(basename "$t" .c)" 17 toolname="$(basename "$t" .c)"
18 $CC -o $BIN "$t"/*.c "$CUBEOBJ" || exit 1; 18 $CC -o $BIN "$t"/*.c "$CUBEOBJ" || exit 1;
19 $BIN | tee "tools/results/$toolname-$d.txt" "tools/results/last.out" 19 $BIN $TOOLARGS \
20 | tee "tools/results/$toolname-$d.txt" "tools/results/last.out"
20 break 21 break
21done 22done
22 23
diff --git a/tools/tool.h b/tools/tool.h
index 59407b6..5eec318 100644
--- a/tools/tool.h
+++ b/tools/tool.h
@@ -11,11 +11,12 @@
11static void log_stderr(const char *, ...); 11static void log_stderr(const char *, ...);
12static void log_stdout(const char *, ...); 12static void log_stdout(const char *, ...);
13static double timerun(void (*)(void), const char *); 13static double timerun(void (*)(void), const char *);
14static void getfilename(const char *, const char *, char *);
14static void writetable(const char *, int64_t, const char *); 15static void writetable(const char *, int64_t, const char *);
15static int64_t generatetable(const char *, const char *, char **); 16static int64_t generatetable(const char *, const char *, char **);
16static int64_t derivetable(uint8_t, char **); 17static int64_t derivetable(uint8_t, char **);
17static int getdata(const char *, const char *, char **, const char *); 18static int getdata(const char *, const char *, char **, const char *);
18static void gendata_run(const char *, const char *, const char *, uint64_t[static 21]); 19static void gendata_run(const char *, const char *, uint64_t[static 21]);
19static void derivedata_run(uint8_t, const char *, uint64_t[static 21]); 20static void derivedata_run(uint8_t, const char *, uint64_t[static 21]);
20 21
21static void 22static void
@@ -73,6 +74,17 @@ timerun(void (*run)(void), const char *name)
73} 74}
74 75
75static void 76static void
77getfilename(const char *solver, const char *options, char *filename)
78{
79 uint8_t h, k;
80
81 /* Only h48 supported for now */
82 parse_h48_options(options, &h, &k, NULL);
83
84 sprintf(filename, "tables/%sh%dk%d", solver, h, k);
85}
86
87static void
76writetable(const char *buf, int64_t size, const char *filename) 88writetable(const char *buf, int64_t size, const char *filename)
77{ 89{
78 FILE *f; 90 FILE *f;
@@ -193,13 +205,12 @@ static void
193gendata_run( 205gendata_run(
194 const char *solver, 206 const char *solver,
195 const char *options, 207 const char *options,
196 const char *filename, /* TODO: remove filename, use solver name */
197 uint64_t expected[static 21] 208 uint64_t expected[static 21]
198) { 209) {
199 int64_t size; 210 int64_t size;
200 char *buf; 211 char *buf, filename[1024];
201 212
202 213 getfilename(solver, options, filename);
203 size = generatetable(solver, options, &buf); 214 size = generatetable(solver, options, &buf);
204 switch (size) { 215 switch (size) {
205 case -1: 216 case -1:

Generated with cgit - Back to sebastiano.tronto.net