elijahsk / EverythingGraph

A platform to evaluate techniques used in multicore graph processing.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Multicore In-Memory BFS on Labeled Graphs

README

This repository contains code for CS6284 Final Project on Multicore In-Memory BFS on Labeled Graphs

Requirement

The code needs to be compiled and run on Linux platform with gcc version of 5.0 and above.

The gcc compiler needs to support Cilk Plus. As gcc have full support for Cilk Plus since version 5.0, this should not be an issue.

Compilation

To compile the code, enter the repository and run command make .

Input Generation

The input file is a graph dataset encoded as a binary file.

The input file can be generated in the following steps:

  1. Enter repository

  2. Enter command dataGen/PaRMAT/Release/PaRMAT -nVertices [no. of vertices] -nEdges [no. of edges], where [no. of vertices] and [no. of edges] are integer values to be filled in. This command generates a text file named out.txt with the specified number of vertices and number of labels.

  3. Enter command python dataGen/addnLabelsByProbability.py out.txt [no. of labels] [p1] [p2] ..., where [no. of labels] is an integer value indicating the number of labels to be put in the graph, and [p1], [p2], ..., [pn], are float values indicating the probability of having the 1st, 2nd, ..., nth label. This command generates a text file named out with edge data from out.txt and additional labeled data.

  4. Enter command dataGen/writeBinary out. This command generates a binary file named out.bin in the current directory based on the out file.

Running the code

To run the code you need to call the corresponding algorithm binary with a number of required options:

./algorithm_binary –n [no. of vertices] –f [path to binary graph data] -l [labelSet] [other optional commands]

[labelSet] is an integer value between 1 and 255. This value is interpreted as a binary value e.g. entering value 7 gives a labelSet of 00000111, indicating that the labelSet contains the 1st, 2nd and 3rd label.

Help message on other optional commands will be displayed when the algorithm_binary is not run with the essential commands.

The available algorithm_binary are bfs_simple, bfsgrid_cilk, and bfs_numa.

About

A platform to evaluate techniques used in multicore graph processing.


Languages

Language:C 62.7%Language:C++ 33.4%Language:Makefile 2.2%Language:Python 1.7%