From 2e1c170af6a764ffc5e2557d8e7e9f2ba0fd681f Mon Sep 17 00:00:00 2001 From: Apostolof Date: Sat, 15 Sep 2018 12:13:11 +0300 Subject: [PATCH] Fix serial implementation Add extension to executable filename so git ignore can catch it Fix matrix transpose function --- .gitignore | 3 + datasets/smallset | 5 + datasets/toronto_death_penalty_refined_adj | 2 +- serial/Makefile | 5 +- serial/pagerank | Bin 25344 -> 0 bytes serial/serial_gs_pagerank.c | 4 +- serial/serial_gs_pagerank_functions.c | 427 +++++++++++++-------- serial/serial_gs_pagerank_functions.h | 52 ++- 8 files changed, 304 insertions(+), 194 deletions(-) create mode 100644 datasets/smallset delete mode 100644 serial/pagerank diff --git a/.gitignore b/.gitignore index c6127b3..25734a9 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,6 @@ modules.order Module.symvers Mkfile.old dkms.conf + +#Output files +*_output \ No newline at end of file diff --git a/datasets/smallset b/datasets/smallset new file mode 100644 index 0000000..0fd3edd --- /dev/null +++ b/datasets/smallset @@ -0,0 +1,5 @@ +0 0 0 0 0 +1 0 1 0 0 +1 1 0 1 1 +0 0 0 0 1 +0 0 0 1 0 \ No newline at end of file diff --git a/datasets/toronto_death_penalty_refined_adj b/datasets/toronto_death_penalty_refined_adj index 3b4fc82..e38c650 100644 --- a/datasets/toronto_death_penalty_refined_adj +++ b/datasets/toronto_death_penalty_refined_adj @@ -1797,4 +1797,4 @@ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \ No newline at end of file diff --git a/serial/Makefile b/serial/Makefile index d6b3229..78d2e2e 100644 --- a/serial/Makefile +++ b/serial/Makefile @@ -5,14 +5,15 @@ SHELL := /bin/bash CC = gcc RM = rm -f -CFLAGS=-O0 -g -I. +CFLAGS_DEBUG=-O0 -g -I. +CFLAGS=-O3 -I. OBJ=serial_gs_pagerank.o serial_gs_pagerank_functions.o DEPS=serial_gs_pagerank_functions.h # ========================================== # TARGETS -EXECUTABLES = pagerank +EXECUTABLES = pagerank.out .PHONY: all clean diff --git a/serial/pagerank b/serial/pagerank deleted file mode 100644 index 94f5af26eacb5ef9679323f48b26c29b3d3bfa33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25344 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 lFRE63FF3@t4#&DEJ@+yCSAb?R{`WR\ - \n-c convergence\ - \n\tthe convergence criterion\ - \n-m max_iterations\ - \n\tmaximum number of iterations to perform\ - \n-a alpha\ - \n\tthe damping factor\ - \n-v enable verbal output\ - \n", programName); - exit(EXIT_FAILURE); +// ==================== PAGERANK ==================== + +int pagerank(double ***transitionMatrix, double **pagerankVector, Parameters parameters) { + int iterations = 0; + double delta, + *vectorDifference = (double *) malloc(parameters.numberOfPages * sizeof(double)), + *previousPagerankVector = (double *) malloc(parameters.numberOfPages * sizeof(double)); + + if (parameters.verbose) { + printf("\n----- Starting iterations -----\n"); + } + + do { + memcpy(previousPagerankVector, *pagerankVector, parameters.numberOfPages * sizeof(double)); + + matrixVectorMultiplication(transitionMatrix, previousPagerankVector, + pagerankVector, parameters.numberOfPages, parameters.dampingFactor); + + if (parameters.history) { + savePagerankToFile(parameters.outputFilename, iterations != 0, + *pagerankVector, parameters.numberOfPages); + } + + for (int i=0; i parameters.convergenceCriterion && + (parameters.maxIterations == 0 || iterations < parameters.maxIterations)); + + if (!parameters.history) { + savePagerankToFile(parameters.outputFilename, false, *pagerankVector, + parameters.numberOfPages); + } + + return iterations; } -int checkIncrement(int previousIndex, int maxIndex, char *programName) { - if (previousIndex == maxIndex) { - validUsage(programName); - exit(EXIT_FAILURE); +// ==================== INITIALIZATION ==================== + +/* + * initialize allocates required memory for arrays, reads the web graph from the + * from the file and creates the initial transition probability distribution + * matrix. +*/ +void initialize(int ***directedWebGraph, double ***transitionMatrix, + double **pagerankVector, Parameters *parameters) { + + // Reads web graph from file + if ((*parameters).verbose) { + printf("----- Reading graph from file -----\n"); } - return ++previousIndex; + readGraphFromFile(directedWebGraph, parameters); + + // Outputs the algorithm parameters to the console + if ((*parameters).verbose) { + printf("\n----- Running with parameters -----\ + \nNumber of pages: %d", (*parameters).numberOfPages); + if (!(*parameters).maxIterations) { + printf("\nMaximum number of iterations: inf"); + } else { + printf("\nMaximum number of iterations: %d", (*parameters).maxIterations); + } + printf("\nConvergence criterion: %f\ + \nDamping factor: %f\ + \nGraph filename: %s\n", (*parameters).convergenceCriterion, + (*parameters).dampingFactor, (*parameters).graphFilename); + } + + // Allocates memory for the pagerank vector + (*pagerankVector) = (double *) malloc((*parameters).numberOfPages * sizeof(double)); + double webUniformProbability = 1. / (*parameters).numberOfPages; + for (int i=0; i<(*parameters).numberOfPages; ++i) { + (*pagerankVector)[i] = webUniformProbability; + } + + // Generates the initial transition matrix (matrix P). + generateNormalizedTransitionMatrix(transitionMatrix, *directedWebGraph, *parameters); + // Transposes the transition matrix (P^T). + transposeMatrix(transitionMatrix, (*parameters).numberOfPages, (*parameters).numberOfPages); +} + +/* + * generateNormalizedTransitionMatrix generates the normalized transition matrix + * from the graph data (matrix P'). +*/ +void generateNormalizedTransitionMatrix(double ***transitionMatrix, + int **directedWebGraph, Parameters parameters) { + // Allocates memory for the transitionMatrix rows + (*transitionMatrix) = (double **) malloc(parameters.numberOfPages * sizeof(double *)); + + for (int i=0; i 10) { validUsage(argumentVector[0]); @@ -37,12 +215,14 @@ void parseArguments(int argumentCount, char **argumentVector, Parameters *parame (*parameters).convergenceCriterion = 1; (*parameters).dampingFactor = 0.85; (*parameters).verbose = false; + (*parameters).history = false; + (*parameters).outputFilename = DEFAULT_OUTPUT_FILENAME; char *endPointer; int argumentIndex = 1; while (argumentIndex < argumentCount) { - if (!strcmp(argumentVector[argumentIndex], CONVERGENCE_ARGUMENT)) { + if (!strcmp(argumentVector[argumentIndex], ARGUMENT_CONVERGENCE_TOLERANCE)) { argumentIndex = checkIncrement(argumentIndex, argumentCount, argumentVector[0]); double convergenceInput = strtod(argumentVector[argumentIndex], &endPointer); @@ -51,7 +231,7 @@ void parseArguments(int argumentCount, char **argumentVector, Parameters *parame exit(EXIT_FAILURE); } (*parameters).convergenceCriterion = convergenceInput; - } else if (!strcmp(argumentVector[argumentIndex], MAX_ITERATIONS_ARGUMENT)) { + } else if (!strcmp(argumentVector[argumentIndex], ARGUMENT_MAX_ITERATIONS)) { argumentIndex = checkIncrement(argumentIndex, argumentCount, argumentVector[0]); size_t iterationsInput = strtol(argumentVector[argumentIndex], &endPointer, NUMERICAL_BASE); @@ -60,7 +240,7 @@ void parseArguments(int argumentCount, char **argumentVector, Parameters *parame exit(EXIT_FAILURE); } (*parameters).maxIterations = iterationsInput; - } else if (!strcmp(argumentVector[argumentIndex], DAMPING_FACTOR_ARGUMENT)) { + } else if (!strcmp(argumentVector[argumentIndex], ARGUMENT_DAMPING_FACTOR)) { argumentIndex = checkIncrement(argumentIndex, argumentCount, argumentVector[0]); double alphaInput = strtod(argumentVector[argumentIndex], &endPointer); @@ -69,8 +249,18 @@ void parseArguments(int argumentCount, char **argumentVector, Parameters *parame exit(EXIT_FAILURE); } (*parameters).dampingFactor = alphaInput; - } else if (!strcmp(argumentVector[argumentIndex], VERBAL_OUTPUT_ARGUMENT)) { + } else if (!strcmp(argumentVector[argumentIndex], ARGUMENT_VERBAL_OUTPUT)) { (*parameters).verbose = true; + } else if (!strcmp(argumentVector[argumentIndex], ARGUMENT_OUTPUT_HISTORY)) { + (*parameters).history = true; + } else if (!strcmp(argumentVector[argumentIndex], ARGUMENT_OUTPUT_FILENAME)) { + argumentIndex = checkIncrement(argumentIndex, argumentCount, argumentVector[0]); + + if (fopen(argumentVector[argumentIndex], "w") == NULL) { + printf("Invalid output filename. Reverting to default.\n"); + continue; + } + (*parameters).outputFilename = argumentVector[argumentIndex]; } else if (argumentIndex == argumentCount - 1) { (*parameters).graphFilename = argumentVector[argumentIndex]; } else { @@ -81,6 +271,10 @@ void parseArguments(int argumentCount, char **argumentVector, Parameters *parame } } +/* + * readGraphFromFile loads the file supplied in the command line arguments to an + * array (directedWebGraph) that represents the graph. +*/ void readGraphFromFile(int ***directedWebGraph, Parameters *parameters) { FILE *graphFile; @@ -103,11 +297,11 @@ void readGraphFromFile(int ***directedWebGraph, Parameters *parameters) { } if ((*parameters).verbose) { - printf("Line count of file is %d \n", numberOfLines); + printf("Line count of file is %d \n", numberOfLines + 1); } // Each line of the file represents one page of the graph - (*parameters).numberOfPages = numberOfLines; + (*parameters).numberOfPages = numberOfLines + 1; rewind(graphFile); // Allocates memory and loads values into directedWebGraph (matrix A) @@ -122,165 +316,62 @@ void readGraphFromFile(int ***directedWebGraph, Parameters *parameters) { if (!fscanf(graphFile, "%d ", &(*directedWebGraph)[i][j])) { break; } - //printf("directedWebGraph[%d][%d] = %d", i , j, (*directedWebGraph)[i][j]); } } fclose(graphFile); } -void generateNormalizedTransitionMatrix(double ***transitionMatrix, - int **directedWebGraph, Parameters parameters) { - // Allocates memory for the transitionMatrix rows - (*transitionMatrix) = (double **) malloc(parameters.numberOfPages * sizeof(double *)); - - for (int i=0; i\ + \n-c convergence_criterion\ + \n\tthe convergence tolerance criterion\ + \n-m max_iterations\ + \n\tmaximum number of iterations to perform\ + \n-a alpha\ + \n\tthe damping factor\ + \n-v enable verbal output\ + \n-h enable history output to file\ + \n-o output_filename\ + \n\tfilename and path for the output\ + \n", programName); + exit(EXIT_FAILURE); } -void makeIrreducible(double ***transitionMatrix, Parameters parameters) { - // Manipulates the values of transitionMatrix to make it irreducible. A - // uniform probability (1/number_of_pages) and no personalization are used - // here. - - // Introduces teleportation (P'' = cP' + (1 - c)E) - for (int i=0; i parameters.convergenceCriterion && - (parameters.maxIterations != 0 || iterations < parameters.maxIterations)); - - return iterations; + fclose(outputFile); } \ No newline at end of file diff --git a/serial/serial_gs_pagerank_functions.h b/serial/serial_gs_pagerank_functions.h index 9eea0e1..0166f33 100644 --- a/serial/serial_gs_pagerank_functions.h +++ b/serial/serial_gs_pagerank_functions.h @@ -5,25 +5,30 @@ #include #include #include +#include /* * Constant strings that store the command line options available. */ -extern const char *CONVERGENCE_ARGUMENT; -extern const char *MAX_ITERATIONS_ARGUMENT; -extern const char *DAMPING_FACTOR_ARGUMENT; -extern const char *VERBAL_OUTPUT_ARGUMENT; +extern const char *ARGUMENT_CONVERGENCE_TOLERANCE; +extern const char *ARGUMENT_MAX_ITERATIONS; +extern const char *ARGUMENT_DAMPING_FACTOR; +extern const char *ARGUMENT_VERBAL_OUTPUT; +extern const char *ARGUMENT_OUTPUT_HISTORY; +extern const char *ARGUMENT_OUTPUT_FILENAME; // This is the numerical base used when parsing the numerical command line // arguments. extern const int NUMERICAL_BASE; +// Default filename used for the output. +extern char *DEFAULT_OUTPUT_FILENAME; -// Declares a data structure to conveniently hold the algorithm's parameters +// Declares a data structure to conveniently hold the algorithm's parameters. typedef struct parameters { int numberOfPages, maxIterations; double convergenceCriterion, dampingFactor; - bool verbose; - char* graphFilename; + bool verbose, history; + char *outputFilename, *graphFilename; } Parameters; // Function validUsage outputs the correct way to use the program with command @@ -37,19 +42,21 @@ int checkIncrement(int previousIndex, int maxIndex, char *programName); // Function parseArguments parses command line arguments. void parseArguments(int argumentCount, char **argumentVector, Parameters *parameters); -// Function readGraphFromFile loads the graph stored in the file provided in the -// command line arguments to the array directedWebGraph. +// Function readGraphFromFile loads adjacency matrix, that represents the web +// graph, stored in the file provided in the command line arguments to the array +// directedWebGraph. void readGraphFromFile(int ***directedWebGraph, Parameters *parameters); -// Function generateNormalizedTransitionMatrix generates the normalized transition -// matrix from the graph data. +// Function savePagerankToFile appends or overwrites the pagerank vector +// "pagerankVector" to the file with the filename supplied in the arguments +void savePagerankToFile(char *filename, bool append, double *pagerankVector, + int vectorSize); + +// Function generateNormalizedTransitionMatrix generates the normalized +// transition matrix from the web graph data. void generateNormalizedTransitionMatrix(double ***transitionMatrix, int **directedWebGraph, Parameters parameters); -// Function makeIrreducible introduces teleportation to the transition matrix, -// making it irreducible. -void makeIrreducible(double ***transitionMatrix, Parameters parameters); - // Function transposeMatrix transposes a matrix. void transposeMatrix(double ***matrix, int rows, int columns); @@ -62,14 +69,17 @@ void initialize( Parameters *parameters ); -// Function vectorFirstNorm calculates the first norm of a vector. -double vectorFirstNorm(double *vector, int vectorSize); +// Function vectorNorm calculates the first norm of a vector. +double vectorNorm(double *vector, int vectorSize); -// Function nextProbabilityDistribution calculates the product of the transition -// matrix and the pagerank vector. -void nextProbabilityDistribution(double ***transitionMatrix, double *previousPagerankVector, - double **newPagerankVector, Parameters parameters); +// Function matrixVectorMultiplication calculates the product of the +// multiplication between a matrix and the a vector. +void matrixVectorMultiplication(double ***matrix, double *vector, + double **product, int vectorSize, double dampingFactor); +// Function pagerank iteratively calculates the pagerank of each page until +// either the convergence criterion is met or the maximum number of iterations +// is reached. int pagerank(double ***transitionMatrix, double **pagerankVector, Parameters parameters); #endif // SERIAL_GS_PAGERANK_FUNCTIONS_H \ No newline at end of file