Skip to content

Commit

Permalink
updating the evaluation instructions based on Ajay's feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
yunmingzhang17 committed Nov 17, 2018
1 parent 445d166 commit 862dcb1
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions graphit_eval/GraphIt_Evaluation_Guide.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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.

Expand Down Expand Up @@ -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.**
Expand All @@ -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
Expand Down

0 comments on commit 862dcb1

Please sign in to comment.