From 1ece193af25159b65a8f4e53abfe2c7389095a5c Mon Sep 17 00:00:00 2001 From: Daniel Mendler Date: Sun, 27 Oct 2019 22:48:53 +0100 Subject: [PATCH 1/7] replace gen.pl by cat, rename mpi.c to mp_all.c --- .gitignore | 4 ++-- gen.pl | 20 -------------------- makefile | 16 ++++++++-------- makefile_include.mk | 2 +- 4 files changed, 11 insertions(+), 31 deletions(-) delete mode 100644 gen.pl diff --git a/.gitignore b/.gitignore index f1c0a0562..a5a4aba3b 100644 --- a/.gitignore +++ b/.gitignore @@ -60,8 +60,8 @@ UpgradeLog*.htm perf.data perf.data.old -# ignore mpi.c generated by make -mpi.c +# ignore mp_all.c generated by make +mp_all.c # ignore file generated by make tune tuning_list diff --git a/gen.pl b/gen.pl deleted file mode 100644 index 4db24b547..000000000 --- a/gen.pl +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/perl -w -# -# Generates a "single file" you can use to quickly -# add the whole source without any makefile troubles -# -use strict; -use warnings; - -open(my $out, '>', 'mpi.c') or die "Couldn't open mpi.c for writing: $!"; -foreach my $filename (glob '*mp_*.c') { - open(my $src, '<', $filename) or die "Couldn't open $filename for reading: $!"; - print {$out} "/* Start: $filename */\n"; - print {$out} $_ while <$src>; - print {$out} "\n/* End: $filename */\n\n"; - close $src or die "Error closing $filename after reading: $!"; -} -print {$out} "\n/* EOF */\n"; -close $out or die "Error closing mpi.c after writing: $!"; - -system('perl -pli -e "s/\s*$//" mpi.c'); diff --git a/makefile b/makefile index b14976f6a..7889c5ab7 100644 --- a/makefile +++ b/makefile @@ -71,13 +71,13 @@ profiled: #make a single object profiled library profiled_single: - perl gen.pl - $(CC) $(LTM_CFLAGS) -fprofile-arcs -DTESTING -c mpi.c -o mpi.o - $(CC) $(LTM_CFLAGS) -DTESTING -DTIMER demo/timing.c mpi.o -lgcov -o timing + cat *mp_*.c > mp_all.c + $(CC) $(LTM_CFLAGS) -fprofile-arcs -DTESTING -c mp_all.c -o mp_all.o + $(CC) $(LTM_CFLAGS) -DTESTING -DTIMER demo/timing.c mp_all.o -lgcov -o timing ./timing rm -f *.o timing - $(CC) $(LTM_CFLAGS) -fbranch-probabilities -DTESTING -c mpi.c -o mpi.o - $(AR) $(ARFLAGS) $(LIBNAME) mpi.o + $(CC) $(LTM_CFLAGS) -fbranch-probabilities -DTESTING -c mp_all.c -o mp_all.o + $(AR) $(ARFLAGS) $(LIBNAME) mp_all.o ranlib $(LIBNAME) install: $(LIBNAME) @@ -121,9 +121,9 @@ docs manual: .PHONY: pre_gen pre_gen: mkdir -p pre_gen - perl gen.pl - sed -e 's/[[:blank:]]*$$//' mpi.c > pre_gen/mpi.c - rm mpi.c + cat *mp_*.c > mp_all.c + sed -e 's/[[:blank:]]*$$//' mp_all.c > pre_gen/mp_all.c + rm mp_all.c zipup: clean astyle new_file docs @# Update the index, so diff-index won't fail in case the pdf has been created. diff --git a/makefile_include.mk b/makefile_include.mk index 650b3e7e3..b7946902e 100644 --- a/makefile_include.mk +++ b/makefile_include.mk @@ -164,7 +164,7 @@ cleancov: cleancov-clean clean clean: rm -f *.gcda *.gcno *.gcov *.bat *.o *.a *.obj *.lib *.exe *.dll etclib/*.o \ demo/*.o test timing mtest_opponent mtest/mtest mtest/mtest.exe tuning_list \ - *.s mpi.c *.da *.dyn *.dpi tommath.tex `find . -type f | grep [~] | xargs` *.lo *.la + *.s mp_all.c *.da *.dyn *.dpi tommath.tex `find . -type f | grep [~] | xargs` *.lo *.la rm -rf .libs/ demo/.libs ${MAKE} -C etc/ clean MAKE=${MAKE} ${MAKE} -C doc/ clean MAKE=${MAKE} From 43804ed7321e0ee3ba214951221d944759c5a13b Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Mon, 28 Oct 2019 13:39:08 +0100 Subject: [PATCH 2/7] remove logs and generated PNG's this fixes #423 --- .gitignore | 3 ++ logs/add.log | 16 --------- logs/addsub.png | Bin 5921 -> 0 bytes logs/expt.log | 7 ---- logs/expt.png | Bin 7290 -> 0 bytes logs/expt_2k.log | 6 ---- logs/expt_2kl.log | 3 -- logs/expt_dr.log | 7 ---- logs/invmod.log | 8 ----- logs/invmod.png | Bin 6294 -> 0 bytes logs/mult.log | 84 --------------------------------------------- logs/mult.png | Bin 8308 -> 0 bytes logs/mult_kara.log | 84 --------------------------------------------- logs/sqr.log | 84 --------------------------------------------- logs/sqr_kara.log | 84 --------------------------------------------- logs/sub.log | 16 --------- 16 files changed, 3 insertions(+), 399 deletions(-) delete mode 100644 logs/add.log delete mode 100644 logs/addsub.png delete mode 100644 logs/expt.log delete mode 100644 logs/expt.png delete mode 100644 logs/expt_2k.log delete mode 100644 logs/expt_2kl.log delete mode 100644 logs/expt_dr.log delete mode 100644 logs/invmod.log delete mode 100644 logs/invmod.png delete mode 100644 logs/mult.log delete mode 100644 logs/mult.png delete mode 100644 logs/mult_kara.log delete mode 100644 logs/sqr.log delete mode 100644 logs/sqr_kara.log delete mode 100644 logs/sub.log diff --git a/.gitignore b/.gitignore index a5a4aba3b..c623fd05b 100644 --- a/.gitignore +++ b/.gitignore @@ -97,4 +97,7 @@ test_*.txt doc/pics/*.ps doc/*.bak* +logs/*.png +logs/*-*.dem + callgraph.txt diff --git a/logs/add.log b/logs/add.log deleted file mode 100644 index 0ed7b70d9..000000000 --- a/logs/add.log +++ /dev/null @@ -1,16 +0,0 @@ - 480 48 - 960 61 - 1440 82 - 1920 97 - 2400 106 - 2880 112 - 3360 127 - 3840 130 - 4320 146 - 4800 157 - 5280 174 - 5760 185 - 6240 200 - 6720 214 - 7200 230 - 7680 244 diff --git a/logs/addsub.png b/logs/addsub.png deleted file mode 100644 index b8ffef74b32056352e53c3e0fa25585fbf9cb658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5921 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 diff --git a/logs/expt.log b/logs/expt.log deleted file mode 100644 index 2e5ee308f..000000000 --- a/logs/expt.log +++ /dev/null @@ -1,7 +0,0 @@ - 513 446633 - 769 1110301 - 1025 2414927 - 2049 14870787 - 2561 26299761 - 3073 44323310 - 4097 98934292 diff --git a/logs/expt.png b/logs/expt.png deleted file mode 100644 index 27c53eecf1afe22f40ccdb638942365ef595df77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7290 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 Ts)ih83wHX1rRiH^V)*|9RE7^# diff --git a/logs/expt_2k.log b/logs/expt_2k.log deleted file mode 100644 index 140b92f2c..000000000 --- a/logs/expt_2k.log +++ /dev/null @@ -1,6 +0,0 @@ - 521 533515 - 607 675230 - 1279 2560713 - 2203 7468422 - 3217 17314246 - 4253 33899969 diff --git a/logs/expt_2kl.log b/logs/expt_2kl.log deleted file mode 100644 index 1dc495f9e..000000000 --- a/logs/expt_2kl.log +++ /dev/null @@ -1,3 +0,0 @@ - 1024 2210287 - 2048 7940364 - 4096 35903891 diff --git a/logs/expt_dr.log b/logs/expt_dr.log deleted file mode 100644 index 3752ea81a..000000000 --- a/logs/expt_dr.log +++ /dev/null @@ -1,7 +0,0 @@ - 532 642330 - 784 1138699 - 1036 1972796 - 1540 3912241 - 2072 7075836 - 3080 16420867 - 4116 32477173 diff --git a/logs/invmod.log b/logs/invmod.log deleted file mode 100644 index 7d22449ef..000000000 --- a/logs/invmod.log +++ /dev/null @@ -1,8 +0,0 @@ - 240 58197 - 480 86617 - 720 255279 - 960 399626 - 1200 533330 - 1440 470046 - 1680 906754 - 1920 1132009 diff --git a/logs/invmod.png b/logs/invmod.png deleted file mode 100644 index 5c09e9012ada8048ee3bcd686b361c40b110f9df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6294 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 NK-W~KO3V4>e*vgMc6k5* diff --git a/logs/mult_kara.log b/logs/mult_kara.log deleted file mode 100644 index 91b59cbfd..000000000 --- a/logs/mult_kara.log +++ /dev/null @@ -1,84 +0,0 @@ - 240 133 - 360 250 - 474 396 - 599 585 - 720 637 - 840 1045 - 960 1212 - 1080 1543 - 1196 1780 - 1320 2005 - 1436 2274 - 1560 2446 - 1680 1985 - 1800 2368 - 1920 2791 - 2038 3620 - 2160 3763 - 2278 3444 - 2400 4158 - 2516 5869 - 2640 6368 - 2753 5384 - 2876 7449 - 3000 6471 - 3114 8540 - 3240 7217 - 3360 9685 - 3476 6759 - 3599 8518 - 3714 8911 - 3840 12345 - 3960 9787 - 4079 11018 - 4196 12033 - 4319 12740 - 4440 12471 - 4558 15251 - 4678 13353 - 4798 15998 - 4920 13395 - 5040 13699 - 5160 14552 - 5280 14972 - 5400 15825 - 5520 16512 - 5639 17379 - 5757 17596 - 5879 18350 - 6000 18976 - 6115 19601 - 6240 20076 - 6354 20515 - 6480 21670 - 6600 22312 - 6716 22647 - 6839 23437 - 6960 24164 - 7080 24723 - 7199 25454 - 7320 26092 - 7440 26912 - 7557 27521 - 7677 28015 - 7800 28885 - 7919 29483 - 8040 30115 - 8160 31236 - 8280 31975 - 8400 30835 - 8520 31565 - 8639 32380 - 8760 32760 - 8879 33590 - 8996 34553 - 9119 35185 - 9239 36146 - 9358 36815 - 9480 39630 - 9596 43022 - 9720 41219 - 9840 41596 - 9960 42354 - 10080 43352 - 10200 43915 diff --git a/logs/sqr.log b/logs/sqr.log deleted file mode 100644 index 93234a145..000000000 --- a/logs/sqr.log +++ /dev/null @@ -1,84 +0,0 @@ - 240 114 - 359 174 - 478 241 - 600 311 - 720 399 - 840 494 - 960 599 - 1080 799 - 1200 931 - 1320 911 - 1440 1016 - 1560 1143 - 1680 1281 - 1800 1459 - 1918 1617 - 2039 1763 - 2159 1913 - 2279 2071 - 2399 2240 - 2518 2412 - 2640 2600 - 2760 2792 - 2877 3008 - 2999 3220 - 3119 3405 - 3239 3637 - 3359 3859 - 3480 4094 - 3600 4328 - 3717 4571 - 3838 4840 - 3960 5098 - 4080 5349 - 4200 5617 - 4320 5891 - 4440 6147 - 4560 6444 - 4680 6745 - 4800 7057 - 4918 7317 - 5039 7637 - 5160 12833 - 5280 10098 - 5397 8666 - 5520 8999 - 5639 9376 - 5758 9727 - 5880 9996 - 6000 10427 - 6118 10868 - 6240 12218 - 6359 14010 - 6478 14838 - 6593 16135 - 6719 16503 - 6840 13267 - 6960 13648 - 7080 14118 - 7199 14525 - 7320 14803 - 7439 15378 - 7558 15871 - 7680 57530 - 7800 59550 - 7916 61091 - 8039 63004 - 8160 61136 - 8279 62803 - 8398 68671 - 8520 71001 - 8638 71537 - 8759 74757 - 8880 77164 - 9000 78963 - 9119 80982 - 9239 83142 - 9357 85292 - 9480 88190 - 9600 90343 - 9718 86710 - 9840 88818 - 9954 91034 - 10079 93350 - 10197 95592 diff --git a/logs/sqr_kara.log b/logs/sqr_kara.log deleted file mode 100644 index da108973f..000000000 --- a/logs/sqr_kara.log +++ /dev/null @@ -1,84 +0,0 @@ - 240 115 - 360 175 - 480 241 - 600 312 - 719 397 - 839 494 - 960 597 - 1080 696 - 1200 794 - 1320 908 - 1439 1022 - 1560 1141 - 1678 1284 - 1797 1461 - 1918 1590 - 2040 1764 - 2160 1911 - 2278 2072 - 2399 2263 - 2516 2425 - 2640 2627 - 2756 2809 - 2880 3017 - 3000 3220 - 3119 3413 - 3239 3627 - 3359 3864 - 3479 4087 - 3600 4327 - 3720 4603 - 3840 4867 - 3957 5095 - 4079 5079 - 4200 5623 - 4319 5878 - 4439 6177 - 4560 6467 - 4679 6749 - 4800 7056 - 4920 7384 - 5039 7681 - 5159 8004 - 5280 8332 - 5399 8664 - 5520 8929 - 5638 9340 - 5760 9631 - 5879 10109 - 5999 10458 - 6118 10816 - 6240 11215 - 6359 11550 - 6478 11958 - 6600 12390 - 6718 12801 - 6838 13197 - 6959 13609 - 7079 14033 - 7199 16182 - 7320 16539 - 7440 16952 - 7559 16255 - 7679 17593 - 7800 17107 - 7920 17362 - 8037 17723 - 8159 18072 - 8280 19804 - 8399 18966 - 8519 19510 - 8640 19958 - 8760 20364 - 8878 20674 - 9000 21682 - 9120 21665 - 9237 21945 - 9359 22394 - 9480 23105 - 9598 23334 - 9718 25301 - 9840 26053 - 9960 26565 - 10079 26812 - 10200 27300 diff --git a/logs/sub.log b/logs/sub.log deleted file mode 100644 index 87c0160f8..000000000 --- a/logs/sub.log +++ /dev/null @@ -1,16 +0,0 @@ - 480 36 - 960 51 - 1440 64 - 1920 78 - 2400 90 - 2880 105 - 3360 118 - 3840 133 - 4320 146 - 4800 161 - 5280 182 - 5760 201 - 6240 201 - 6720 214 - 7200 228 - 7680 243 From 8e3a440464ebb9a54b121f765cbd500e928d051e Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Mon, 28 Oct 2019 13:41:30 +0100 Subject: [PATCH 3/7] use pre_gen/mp_all.c for profiled_single + clean-up defines --- makefile | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/makefile b/makefile index 7889c5ab7..8dd22ef8f 100644 --- a/makefile +++ b/makefile @@ -64,19 +64,18 @@ $(LIBNAME): $(OBJECTS) # # So far I've seen improvements in the MP math profiled: - make CFLAGS="$(CFLAGS) -fprofile-arcs -DTESTING" timing + make CFLAGS="$(CFLAGS) -fprofile-arcs" timing ./timing rm -f *.a *.o timing make CFLAGS="$(CFLAGS) -fbranch-probabilities" #make a single object profiled library -profiled_single: - cat *mp_*.c > mp_all.c - $(CC) $(LTM_CFLAGS) -fprofile-arcs -DTESTING -c mp_all.c -o mp_all.o - $(CC) $(LTM_CFLAGS) -DTESTING -DTIMER demo/timing.c mp_all.o -lgcov -o timing +profiled_single: pre_gen + $(CC) $(LTM_CFLAGS) -fprofile-arcs -c pre_gen/mp_all.c -o mp_all.o + $(CC) $(LTM_CFLAGS) demo/timing.c mp_all.o -lgcov -o timing ./timing rm -f *.o timing - $(CC) $(LTM_CFLAGS) -fbranch-probabilities -DTESTING -c mp_all.c -o mp_all.o + $(CC) $(LTM_CFLAGS) -fbranch-probabilities -c pre_gen/mp_all.c -o mp_all.o $(AR) $(ARFLAGS) $(LIBNAME) mp_all.o ranlib $(LIBNAME) @@ -103,8 +102,8 @@ $(foreach demo, $(strip $(DEMOS)), $(eval $(call DEMO_template,$(demo)))) mtest: cd mtest ; $(CC) $(LTM_CFLAGS) -O0 mtest.c $(LTM_LFLAGS) -o mtest -timing: $(LIBNAME) demo/timing.c - $(CC) $(LTM_CFLAGS) -DTIMER demo/timing.c $(LIBNAME) $(LTM_LFLAGS) -o timing +timing: demo/timing.c $(LIBNAME) + $(CC) $(LTM_CFLAGS) $^ $(LTM_LFLAGS) -o timing tune: $(LIBNAME) $(MAKE) -C etc tune CFLAGS="$(LTM_CFLAGS)" From 04ee1e75d7061b9a0c076b553c89be5b84d1f61e Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Mon, 28 Oct 2019 15:07:58 +0100 Subject: [PATCH 4/7] improve demo/timing a bit * less verbose output on console * allow changing name for logs * pre-heat caches before starting the timing --- demo/timing.c | 90 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 56 insertions(+), 34 deletions(-) diff --git a/demo/timing.c b/demo/timing.c index fa5669c72..854125095 100644 --- a/demo/timing.c +++ b/demo/timing.c @@ -20,6 +20,11 @@ #define LTM_TIMING_RAND_SEED 23 #endif +#ifndef MP_VERSION +#define MP_TIMING_VERSION +#else +#define MP_TIMING_VERSION "-" MP_VERSION +#endif static void ndraw(const mp_int *a, const char *name) { @@ -85,25 +90,28 @@ static uint64_t TIMFUNC(void) #endif } +#define DO2(x) x; x +#define DO4(x) DO2(x); DO2(x) +#define DO8(x) DO4(x); DO4(x) + #if 1 -#define DO(x) x; x; +#define DO(x) DO2(x) #else -#define DO2(x) x; x; -#define DO4(x) DO2(x); DO2(x); -#define DO8(x) DO4(x); DO4(x); -#define DO(x) DO8(x); DO8(x); +#define DO(x) DO8(x); DO8(x) #endif #ifdef TIMING_NO_LOGS -#define FOPEN(a, b) NULL +#define FOPEN(a, b) NULL #define FPRINTF(a,b,c,d) #define FFLUSH(a) -#define FCLOSE(a) (void)(a) +#define FCLOSE(a) (void)(a) +#define PRINTLN(fm,b,n,m) printf(fm "\n", b, n, m) #else -#define FOPEN(a,b) fopen(a,b) -#define FPRINTF(a,b,c,d) fprintf(a,b,c,d) -#define FFLUSH(a) fflush(a) -#define FCLOSE(a) fclose(a) +#define FOPEN(a,b) fopen(a,b) +#define FPRINTF(a,b,c,d) fprintf(a,b,c,d) +#define FFLUSH(a) fflush(a) +#define FCLOSE(a) fclose(a) +#define PRINTLN(fm,b,n,m) do { printf("\r" fm, b, n, m); fflush(stdout); }while(0) #endif static int should_test(const char *test, int argc, char **argv) @@ -178,19 +186,20 @@ int main(int argc, char **argv) return EXIT_FAILURE; } } while (++rr < 100u); - printf("Prime-check\t%s(%2d) => %9" PRIu64 "/sec, %9" PRIu64 " cycles\n", - name, cnt, CLK_PER_SEC / tt, tt); + PRINTLN("Prime-check\t%s(%2d) => %9" PRIu64 "/sec, %9" PRIu64 " cycles", + name, cnt, CLK_PER_SEC / tt, tt); } } } #endif if (should_test("add", argc, argv) != 0) { - log = FOPEN("logs/add.log", "w"); + log = FOPEN("logs/add" MP_TIMING_VERSION ".log", "w"); for (cnt = 8; cnt <= 128; cnt += 8) { SLEEP; mp_rand(&a, cnt); mp_rand(&b, cnt); + DO8(mp_add(&a, &b, &c)); rr = 0u; tt = UINT64_MAX; do { @@ -200,20 +209,22 @@ int main(int argc, char **argv) if (tt > gg) tt = gg; } while (++rr < 100000u); - printf("Adding\t\t%4d-bit => %9" PRIu64 "/sec, %9" PRIu64 " cycles\n", - mp_count_bits(&a), CLK_PER_SEC / tt, tt); + PRINTLN("Adding\t\t%4d-bit => %9" PRIu64 "/sec, %9" PRIu64 " cycles", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); FPRINTF(log, "%6d %9" PRIu64 "\n", cnt * MP_DIGIT_BIT, tt); FFLUSH(log); } FCLOSE(log); + printf("\n"); } if (should_test("sub", argc, argv) != 0) { - log = FOPEN("logs/sub.log", "w"); + log = FOPEN("logs/sub" MP_TIMING_VERSION ".log", "w"); for (cnt = 8; cnt <= 128; cnt += 8) { SLEEP; mp_rand(&a, cnt); mp_rand(&b, cnt); + DO8(mp_sub(&a, &b, &c)); rr = 0u; tt = UINT64_MAX; do { @@ -224,12 +235,13 @@ int main(int argc, char **argv) tt = gg; } while (++rr < 100000u); - printf("Subtracting\t\t%4d-bit => %9" PRIu64 "/sec, %9" PRIu64 " cycles\n", - mp_count_bits(&a), CLK_PER_SEC / tt, tt); + PRINTLN("Subtracting\t\t%4d-bit => %9" PRIu64 "/sec, %9" PRIu64 " cycles", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); FPRINTF(log, "%6d %9" PRIu64 "\n", cnt * MP_DIGIT_BIT, tt); FFLUSH(log); } FCLOSE(log); + printf("\n\n"); } if (should_test("mulsqr", argc, argv) != 0) { @@ -247,11 +259,13 @@ int main(int argc, char **argv) MP_TOOM_MUL_CUTOFF = (ix == 2) ? old_toom_m : 9999; MP_TOOM_SQR_CUTOFF = (ix == 2) ? old_toom_s : 9999; - log = FOPEN((ix == 0) ? "logs/mult.log" : (ix == 1) ? "logs/mult_kara.log" : "logs/mult_toom.log", "w"); + log = FOPEN((ix == 0) ? "logs/mult" MP_TIMING_VERSION ".log" : (ix == 1) ? "logs/mult_kara" MP_TIMING_VERSION ".log" : + "logs/mult_toom" MP_TIMING_VERSION ".log", "w"); for (cnt = 4; cnt <= (10240 / MP_DIGIT_BIT); cnt += 2) { SLEEP; mp_rand(&a, cnt); mp_rand(&b, cnt); + DO8(mp_mul(&a, &b, &c)); rr = 0u; tt = UINT64_MAX; do { @@ -261,17 +275,20 @@ int main(int argc, char **argv) if (tt > gg) tt = gg; } while (++rr < 100u); - printf("Multiplying\t%4d-bit => %9" PRIu64 "/sec, %9" PRIu64 " cycles\n", - mp_count_bits(&a), CLK_PER_SEC / tt, tt); + PRINTLN("Multiplying\t%4d-bit => %9" PRIu64 "/sec, %9" PRIu64 " cycles", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); FPRINTF(log, "%6d %9" PRIu64 "\n", mp_count_bits(&a), tt); FFLUSH(log); } FCLOSE(log); + printf("\n"); - log = FOPEN((ix == 0) ? "logs/sqr.log" : (ix == 1) ? "logs/sqr_kara.log" : "logs/sqr_toom.log", "w"); + log = FOPEN((ix == 0) ? "logs/sqr" MP_TIMING_VERSION ".log" : (ix == 1) ? "logs/sqr_kara" MP_TIMING_VERSION ".log" : + "logs/sqr_toom" MP_TIMING_VERSION ".log", "w"); for (cnt = 4; cnt <= (10240 / MP_DIGIT_BIT); cnt += 2) { SLEEP; mp_rand(&a, cnt); + DO8(mp_sqr(&a, &b)); rr = 0u; tt = UINT64_MAX; do { @@ -281,12 +298,13 @@ int main(int argc, char **argv) if (tt > gg) tt = gg; } while (++rr < 100u); - printf("Squaring\t%4d-bit => %9" PRIu64 "/sec, %9" PRIu64 " cycles\n", - mp_count_bits(&a), CLK_PER_SEC / tt, tt); + PRINTLN("Squaring\t%4d-bit => %9" PRIu64 "/sec, %9" PRIu64 " cycles", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); FPRINTF(log, "%6d %9" PRIu64 "\n", mp_count_bits(&a), tt); FFLUSH(log); } FCLOSE(log); + printf("\n\n"); } } @@ -324,10 +342,10 @@ int main(int argc, char **argv) "1214855636816562637502584060163403830270705000634713483015101384881871978446801224798536155406895823305035467591632531067547890948695117172076954220727075688048751022421198712032848890056357845974246560748347918630050853933697792254955890439720297560693579400297062396904306270145886830719309296352765295712183040773146419022875165382778007040109957609739589875590885701126197906063620133954893216612678838507540777138437797705602453719559017633986486649523611975865005712371194067612263330335590526176087004421363598470302731349138773205901447704682181517904064735636518462452242791676541725292378925568296858010151852326316777511935037531017413910506921922450666933202278489024521263798482237150056835746454842662048692127173834433089016107854491097456725016327709663199738238442164843147132789153725513257167915555162094970853584447993125488607696008169807374736711297007473812256272245489405898470297178738029484459690836250560495461579533254473316340608217876781986188705928270735695752830825527963838355419762516246028680280988020401914551825487349990306976304093109384451438813251211051597392127491464898797406789175453067960072008590614886532333015881171367104445044718144312416815712216611576221546455968770801413440778423979", NULL }; - log = FOPEN("logs/expt.log", "w"); - logb = FOPEN("logs/expt_dr.log", "w"); - logc = FOPEN("logs/expt_2k.log", "w"); - logd = FOPEN("logs/expt_2kl.log", "w"); + log = FOPEN("logs/expt" MP_TIMING_VERSION ".log", "w"); + logb = FOPEN("logs/expt_dr" MP_TIMING_VERSION ".log", "w"); + logc = FOPEN("logs/expt_2k" MP_TIMING_VERSION ".log", "w"); + logd = FOPEN("logs/expt_2kl" MP_TIMING_VERSION ".log", "w"); for (n = 0; primes[n] != NULL; n++) { SLEEP; mp_read_radix(&a, primes[n], 10); @@ -340,6 +358,7 @@ int main(int argc, char **argv) mp_sub_d(&a, 1uL, &c); mp_mod(&b, &c, &b); mp_set(&c, 3uL); + DO8(mp_exptmod(&c, &b, &a, &d)); rr = 0u; tt = UINT64_MAX; do { @@ -358,8 +377,8 @@ int main(int argc, char **argv) draw(&d); exit(0); } - printf("Exponentiating\t%4d-bit => %9" PRIu64 "/sec, %9" PRIu64 " cycles\n", - mp_count_bits(&a), CLK_PER_SEC / tt, tt); + PRINTLN("Exponentiating\t%4d-bit => %9" PRIu64 "/sec, %9" PRIu64 " cycles", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); FPRINTF((n < 3) ? logd : (n < 9) ? logc : (n < 16) ? logb : log, "%6d %9" PRIu64 "\n", mp_count_bits(&a), tt); } @@ -367,10 +386,11 @@ int main(int argc, char **argv) FCLOSE(logb); FCLOSE(logc); FCLOSE(logd); + printf("\n"); } if (should_test("invmod", argc, argv) != 0) { - log = FOPEN("logs/invmod.log", "w"); + log = FOPEN("logs/invmod" MP_TIMING_VERSION ".log", "w"); for (cnt = 4; cnt <= 32; cnt += 4) { SLEEP; mp_rand(&a, cnt); @@ -381,6 +401,7 @@ int main(int argc, char **argv) mp_gcd(&a, &b, &c); } while (mp_cmp_d(&c, 1uL) != MP_EQ); + DO2(mp_invmod(&b, &a, &c)); rr = 0u; tt = UINT64_MAX; do { @@ -395,11 +416,12 @@ int main(int argc, char **argv) printf("Failed to invert\n"); return 0; } - printf("Inverting mod\t%4d-bit => %9" PRIu64 "/sec, %9" PRIu64 " cycles\n", - mp_count_bits(&a), CLK_PER_SEC / tt, tt); + PRINTLN("Inverting mod\t%4d-bit => %9" PRIu64 "/sec, %9" PRIu64 " cycles", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); FPRINTF(log, "%6d %9" PRIu64 "\n", cnt * MP_DIGIT_BIT, tt); } FCLOSE(log); + printf("\n"); } return 0; From 02f4ee114ca2669a5e894702ba666ea7f0057b03 Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Mon, 28 Oct 2019 15:23:34 +0100 Subject: [PATCH 5/7] compare logs before and after single-object profiling --- logs/Makefile | 9 ++++++++- logs/before_after.dem | 36 ++++++++++++++++++++++++++++++++++++ logs/before_after.html | 28 ++++++++++++++++++++++++++++ logs/index.html | 3 --- makefile | 9 +++++++-- 5 files changed, 79 insertions(+), 6 deletions(-) create mode 100644 logs/before_after.dem create mode 100644 logs/before_after.html diff --git a/logs/Makefile b/logs/Makefile index c2ebaf754..59987e519 100644 --- a/logs/Makefile +++ b/logs/Makefile @@ -1,2 +1,9 @@ all: - gnuplot graphs.dem + sed -e 's@\.log@-$(VERSION)\.log@g' graphs.dem > graphs-$(VERSION).dem + gnuplot graphs-$(VERSION).dem + +cmp: + gnuplot before_after.dem + +clean: + rm -f *-*.log *.png graphs-*.dem diff --git a/logs/before_after.dem b/logs/before_after.dem new file mode 100644 index 000000000..edb59da49 --- /dev/null +++ b/logs/before_after.dem @@ -0,0 +1,36 @@ +set terminal png +set ylabel "Cycles per Operation" +set xlabel "Operand size (bits)" + +set output "addsub-ba.png" +plot 'add-before.log' smooth bezier title "Addition (before)", \ + 'add-after.log' smooth bezier title "Addition (after)", \ + 'sub-before.log' smooth bezier title "Subtraction (before)", \ + 'sub-after.log' smooth bezier title "Subtraction (after)" + +set output "mult-ba.png" +plot 'mult-before.log' smooth bezier title "Multiplication (without Karatsuba) (before)", \ + 'mult-after.log' smooth bezier title "Multiplication (without Karatsuba) (after)", \ + 'mult_kara-before.log' smooth bezier title "Multiplication (Karatsuba) (before)", \ + 'mult_kara-after.log' smooth bezier title "Multiplication (Karatsuba) (after)" + +set output "sqr-ba.png" +plot 'sqr-before.log' smooth bezier title "Squaring (without Karatsuba) (before)", \ + 'sqr-after.log' smooth bezier title "Squaring (without Karatsuba) (after)", \ + 'sqr_kara-before.log' smooth bezier title "Squaring (Karatsuba) (before)", \ + 'sqr_kara-after.log' smooth bezier title "Squaring (Karatsuba) (after)" + +set output "expt-ba.png" +plot 'expt-before.log' smooth bezier title "Exptmod (Montgomery) (before)", \ + 'expt-after.log' smooth bezier title "Exptmod (Montgomery) (after)", \ + 'expt_dr-before.log' smooth bezier title "Exptmod (Dimminished Radix) (before)", \ + 'expt_dr-after.log' smooth bezier title "Exptmod (Dimminished Radix) (after)", \ + 'expt_2k-before.log' smooth bezier title "Exptmod (2k Reduction) (before)", \ + 'expt_2k-after.log' smooth bezier title "Exptmod (2k Reduction) (after)", \ + 'expt_2kl-before.log' smooth bezier title "Exptmod (2k-l Reduction) (before)", \ + 'expt_2kl-after.log' smooth bezier title "Exptmod (2k-l Reduction) (after)" + +set output "invmod-ba.png" +plot 'invmod-before.log' smooth bezier title "Modular Inverse (before)", \ + 'invmod-after.log' smooth bezier title "Modular Inverse (after)" + diff --git a/logs/before_after.html b/logs/before_after.html new file mode 100644 index 000000000..bc866f240 --- /dev/null +++ b/logs/before_after.html @@ -0,0 +1,28 @@ + + +LibTomMath Log Plots + + + +

Addition and Subtraction

+
+
+ +

Multiplication

+
+
+ +

Squaring

+
+
+ +

Exptmod

+
+
+ +

Modular Inverse

+
+
+ + + diff --git a/logs/index.html b/logs/index.html index 4b68c25a5..8c1ed9d88 100644 --- a/logs/index.html +++ b/logs/index.html @@ -22,6 +22,3 @@

Modular Inverse

-/* $Source: /cvs/libtom/libtommath/logs/index.html,v $ */ -/* $Revision: 1.2 $ */ -/* $Date: 2005/05/05 14:38:47 $ */ diff --git a/makefile b/makefile index 8dd22ef8f..9a2b36150 100644 --- a/makefile +++ b/makefile @@ -72,7 +72,7 @@ profiled: #make a single object profiled library profiled_single: pre_gen $(CC) $(LTM_CFLAGS) -fprofile-arcs -c pre_gen/mp_all.c -o mp_all.o - $(CC) $(LTM_CFLAGS) demo/timing.c mp_all.o -lgcov -o timing + $(CC) $(LTM_CFLAGS) -DMP_VERSION=\"before\" demo/timing.c mp_all.o -lgcov -o timing ./timing rm -f *.o timing $(CC) $(LTM_CFLAGS) -fbranch-probabilities -c pre_gen/mp_all.c -o mp_all.o @@ -117,13 +117,18 @@ coveralls: lcov docs manual: $(MAKE) -C doc/ $@ V=$(V) -.PHONY: pre_gen +.PHONY: pre_gen cmp pre_gen: mkdir -p pre_gen cat *mp_*.c > mp_all.c sed -e 's/[[:blank:]]*$$//' mp_all.c > pre_gen/mp_all.c rm mp_all.c +cmp: profiled_single + $(CC) $(LTM_CFLAGS) -DMP_VERSION=\"after\" demo/timing.c $(LIBNAME) -lgcov -o timing + ./timing + $(MAKE) -C logs/ cmp + zipup: clean astyle new_file docs @# Update the index, so diff-index won't fail in case the pdf has been created. @# As the pdf creation modifies the tex files, git sometimes detects the From a598e61b9031db85049706b0f56a3003dbd6fc2c Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Mon, 28 Oct 2019 15:42:23 +0100 Subject: [PATCH 6/7] rename to tommath_amalgam.c --- makefile | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/makefile b/makefile index 9a2b36150..cb7ba210b 100644 --- a/makefile +++ b/makefile @@ -71,12 +71,12 @@ profiled: #make a single object profiled library profiled_single: pre_gen - $(CC) $(LTM_CFLAGS) -fprofile-arcs -c pre_gen/mp_all.c -o mp_all.o - $(CC) $(LTM_CFLAGS) -DMP_VERSION=\"before\" demo/timing.c mp_all.o -lgcov -o timing + $(CC) $(LTM_CFLAGS) -fprofile-arcs -c pre_gen/tommath_amalgam.c -o tommath_amalgam.o + $(CC) $(LTM_CFLAGS) -DMP_VERSION=\"before\" demo/timing.c tommath_amalgam.o -lgcov -o timing ./timing rm -f *.o timing - $(CC) $(LTM_CFLAGS) -fbranch-probabilities -c pre_gen/mp_all.c -o mp_all.o - $(AR) $(ARFLAGS) $(LIBNAME) mp_all.o + $(CC) $(LTM_CFLAGS) -fbranch-probabilities -c pre_gen/tommath_amalgam.c -o tommath_amalgam.o + $(AR) $(ARFLAGS) $(LIBNAME) tommath_amalgam.o ranlib $(LIBNAME) install: $(LIBNAME) @@ -120,9 +120,7 @@ docs manual: .PHONY: pre_gen cmp pre_gen: mkdir -p pre_gen - cat *mp_*.c > mp_all.c - sed -e 's/[[:blank:]]*$$//' mp_all.c > pre_gen/mp_all.c - rm mp_all.c + cat *mp_*.c > pre_gen/tommath_amalgam.c cmp: profiled_single $(CC) $(LTM_CFLAGS) -DMP_VERSION=\"after\" demo/timing.c $(LIBNAME) -lgcov -o timing From d800071e81a27714fc8d890cc28a112cc528361a Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Mon, 28 Oct 2019 16:36:40 +0100 Subject: [PATCH 7/7] ignore&clean tommath_amalgam.c [skip ci] --- .gitignore | 4 ++-- makefile_include.mk | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index c623fd05b..61495ec6f 100644 --- a/.gitignore +++ b/.gitignore @@ -60,8 +60,8 @@ UpgradeLog*.htm perf.data perf.data.old -# ignore mp_all.c generated by make -mp_all.c +# ignore tommath_amalgam.c generated by make +tommath_amalgam.c # ignore file generated by make tune tuning_list diff --git a/makefile_include.mk b/makefile_include.mk index b7946902e..4b5961c28 100644 --- a/makefile_include.mk +++ b/makefile_include.mk @@ -164,7 +164,8 @@ cleancov: cleancov-clean clean clean: rm -f *.gcda *.gcno *.gcov *.bat *.o *.a *.obj *.lib *.exe *.dll etclib/*.o \ demo/*.o test timing mtest_opponent mtest/mtest mtest/mtest.exe tuning_list \ - *.s mp_all.c *.da *.dyn *.dpi tommath.tex `find . -type f | grep [~] | xargs` *.lo *.la + *.s tommath_amalgam.c pre_gen/tommath_amalgam.c *.da *.dyn *.dpi tommath.tex \ + `find . -type f | grep [~] | xargs` *.lo *.la rm -rf .libs/ demo/.libs ${MAKE} -C etc/ clean MAKE=${MAKE} ${MAKE} -C doc/ clean MAKE=${MAKE}