From 862dcb18a93620a496e9dad04af431673764197d Mon Sep 17 00:00:00 2001 From: Yunming Zhang Date: Sat, 17 Nov 2018 15:04:10 -0500 Subject: [PATCH] updating the evaluation instructions based on Ajay's feedback --- graphit_eval/GraphIt_Evaluation_Guide.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/graphit_eval/GraphIt_Evaluation_Guide.md b/graphit_eval/GraphIt_Evaluation_Guide.md index ac8e9dbc..1ba231dd 100644 --- a/graphit_eval/GraphIt_Evaluation_Guide.md +++ b/graphit_eval/GraphIt_Evaluation_Guide.md @@ -1,12 +1,10 @@ # GraphIt Code Generation and Performance Evaluation Guide -The following overview consists of a Step by Step Instructions explaining how to reproduce Figure 6 (PageRankDelta with different schedules) and Table 8 (GraphIt performance on our 2-socket machine) in the paper. We refer users to the [Getting Started Guide](https://github.com/GraphIt-DSL/graphit/blob/master/README.md ) for instructions to set up GraphIt. **NOTE:** the schedules we used here are almost certainly **NOT** the fastest schedules for your machine. **Please only use the instructions here as examples for writing and compiling different schedules, and tune schedules to best fit your machine's features, such as cache size, number of sockets, and number of cores.** +**This instruction assumes that the users have followed the [Getting Started Guide](https://github.com/GraphIt-DSL/graphit/blob/master/README.md ) to set up GraphIt.** The following overview consists of a Step by Step Instructions explaining how to reproduce Figure 6 (PageRankDelta with different schedules) and Table 8 (GraphIt performance on our 2-socket machine) in the paper. **NOTE:** the schedules we used here are almost certainly **NOT** the fastest schedules for your machine. **Please only use the instructions here as examples for writing and compiling different schedules, and tune schedules to best fit your machine's features, such as cache size, number of sockets, and number of cores.** ## Reproducing PageRankDelta with different schedules -Figure 6 in the paper shows the different C++ code generated by applying different schedules to PageRankDelta. We have build a script to generate the code for PageRankDelta with different schedules and make sure the generated C++ code compiles successfully. - -**This script might run for 4-5 minutes as compiling GraphIt code currently is a bit slow. Please wait for a few minutes for the compilation process to finish.** +Figure 6 in the paper shows the different C++ code generated by applying different schedules to PageRankDelta. We have built a script to generate the code for PageRankDelta with different schedules and make sure the generated C++ code compiles successfully. ``` #start from graphit root directory @@ -51,7 +49,7 @@ make graphit_files ``` -Here we show the abbreviated output of the script below. These are essentially the commands we used to compiler the graphit files using schedules in the test directory. The output cpp files are stored in graphit/graphit_eval/eval/table7/cpps. You can look at the schedules files here to figure out the schedules we used to get high performance for our machines. +Here we show the abbreviated output of the script below. These are essentially the commands we used to compile the graphit files using schedules in the test directory. The output cpp files are stored in graphit/graphit_eval/eval/table7/cpps. You can look at the schedules files here to figure out the schedules we used to get high performance for our machines. ``` yunming:table7$ make graphit_files @@ -98,7 +96,7 @@ These runs should complete very quickly. ### Testing on larger graphs -We have provided a few slightly larger graphs for testing. In the folder we have socLive.sg (unweighted binary Live Journal graph), socLive.wsg (weighted binary Live Journal graph). Outside of the compressed file, we have road graph and Twitter graph in the [`additional_graphit_graphs`](https://www.dropbox.com/sh/1vm9guw2oudb37x/AADzVnBQ6dFnCaPOiwa_FnRNa?dl=0) link. Running the experiments on Twitter graph can potentially take a significant amount of time if your machine does not have a 100 GB memory and many cores. Running these other graphs with serial C++ implementations are very slow. **Please try to use the parallel implementations if possible (instructions given in later sections).** +We have provided a few slightly larger graphs for testing in the Dropbox folder [`additional_graphit_graphs`](https://www.dropbox.com/sh/1vm9guw2oudb37x/AADzVnBQ6dFnCaPOiwa_FnRNa?dl=0). In the folder we have socLive.sg (unweighted binary Live Journal graph), socLive.wsg (weighted binary Live Journal graph), road graph (binary unweighted and weighted), and Twitter graph (binary unweighted and weighted). The weights are currently just set to 1. Running the experiments on Twitter graph can potentially take a significant amount of time if your machine does not have a 100 GB memory and many cores. Running these other graphs with serial C++ implementations are very slow. **Please try to use the parallel implementations if possible (instructions given in later sections).** Below we first show the instructions for running the socLive (Live Journal) graph. @@ -149,7 +147,7 @@ python table7_graphit.py --graph road-usad twitter ``` -### Running parallel versions and replicating performance on our machine +### Running parallel versions and replicating performance on a machine similar to our configuration Here we list the instructions for compiling the generated C++ files using icpc or gcc with Cilk and OpenMP. The user mostly need to define a few variables for the Makefile. **We used CILK for most of the files because the work-stealing performs bettern than untuned OPENMP schedule dynamic. For sssp_push_slq.cpp and bfs_push_slq.cpp, we had to use OPENMP for compilation as we needed features specific to OPENMP. The user can look at the Makefile, or the output of the Makefile to figure out the exact commands to compile each individual cpp file.** @@ -158,6 +156,9 @@ Here we list the instructions for compiling the generated C++ files using icpc o #start from graphit root directory cd graphit_eval/eval/table7 +#remove previously compiled binaries +make clean + #compile with icpc if you installed the intel compiler make ICPC_PAR=1 cpps