Skip to content

Commit

Permalink
Merge pull request #2 from graphbig/develop
Browse files Browse the repository at this point in the history
merging develop branch
  • Loading branch information
nailifeng committed Feb 11, 2016
2 parents 318744c + 7d48a4c commit 975da47
Show file tree
Hide file tree
Showing 142 changed files with 34,223 additions and 547 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ benchmark/bench_graphUpdate/graphupdate
benchmark/bench_graphConstruct/graphconstruct
benchmark/bench_TopoMorph/topomorph
benchmark/bench_gibbsInference/bayes_net
benchmark/bench_graphColoring/graphcoloring
benchmark/bench_pageRank/pagerank

benchmark/ubench_add/ubench_add
benchmark/ubench_delete/ubench_delete
Expand Down
19 changes: 19 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
sudo: false

language: cpp

compiler:
- g++

env:
global:
- OMP_NUM_THREADS=4
- TRAVIS=on

before_script: ls

script:
- make -C benchmark all
- make -C csr_bench all
- make travis-verify

7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## Version 3.2
- Add new CPU workloads: Page Rank, Graph Coloring
- Change makefile structure
- Add new make options: make verify, make help
- Add travis-ci support
- Multiple issue fixes

## Version 3.0
- Change benchmark argument interfaces
- Add CPU benchmarks using CSR data format
Expand Down
24 changes: 4 additions & 20 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,10 @@ SUBDIR=benchmark \
csr_bench \
gpu_bench

default: all
ROOT=./

all: pfm_cxx
@for d in ${SUBDIR}; do \
${MAKE} -C $$d all; \
done
TRAVIS_DIR=benchmark \
csr_bench

pfm_cxx:
${MAKE} -C tools all

clean:
@for d in ${SUBDIR}; do \
${MAKE} -C $$d clean; \
done
@rm -f output.log

run:
@rm -f output.log
@for d in ${SUBDIR}; do \
${MAKE} -C $$d run; \
cat $$d/output.log >> output.log; \
done
include ${ROOT}/gen.mk

14 changes: 6 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
</pre>

# GraphBIG
GraphBIG is a graph benchmarking effort initiated by Georgia Tech __HPArch__ and IBM __System G__. By supporting a wide selection of workloads from both __CPU__ and __GPU__ sides,
GraphBIG is a graph benchmarking effort initiated by Georgia Tech __HPArch__ and inspired by IBM __System G__. By supporting a wide selection of workloads from both __CPU__ and __GPU__ sides,
GraphBIG covers the broad spectrum of graph computing and fulfills multiple major requirements, including _framework_, _representativeness_, _coverage_, and graph _data support_.


Expand All @@ -21,7 +21,7 @@ use cases and summarized graph computing features by computation types and graph
GraphBIG workloads then cover all major computation types and data sources.

GraphBIG benchmarks were built on an open source graph framework
named "openG", which follows the same design methodology as IBM System G framework.
named "openG", which follows the similar design methodology as IBM System G framework.
It represents architectural/system behaviors of real-world graph computing practices.

(For commercial packages of the IBM System G, please visit [IBM System G])
Expand All @@ -43,10 +43,8 @@ Lifeng Nai, Yinglong Xia, Ilie G. Tanase, Hyesoon Kim, and Ching-Yung Lin. [Grap
### Tutorial
[The World is Big and Linked: Whole Spectrum Industry Solutions towards Big Graphs](http://cci.drexel.edu/bigdata/bigdata2015/tutorials.html), _IEEE BigData 2015, Oct. 2015_

### Upcoming
v3.0-beta is released. It includes a redesigned argument interface, multiple issue fixes, and a set of new benchmarks for architectural simulation purposes. We're still working on its testing and expecting to release a stable v3.0 soon. Since v3.0 is still at beta stage, issues may exist. Please feel to free to contact us if you notice an issue.

GraphBIG-Doc, a separate repository for documents, is under contruction and will be ready soon.
### Updates
v3.2 is released. It includes a few new workloads, multiple issue fixes, simulation annotations, and a new compile/test structure. Please feel to free to contact us if you notice an issue.

### Compile/Run

Expand Down Expand Up @@ -74,7 +72,7 @@ $ cat output.log

### Documents

Documents can be found in the [GraphBIG-Doc](https://github.com/graphbig/GraphBIG-Doc) repository under the same graphbig organization.
Documents can be found in the [GraphBIG-Doc](https://github.com/graphbig/GraphBIG-Doc) repository in the same graphbig organization.

### Datasets
To cover the diverse features of graph data, GraphBIG present two types of graph data sets, real-world data and synthetic data. The real-world data sets can illustrate real graph data features, while the synthetic data can help workload characterizations because of its flexible data size.
Expand All @@ -100,7 +98,7 @@ feel free to contact us.
BSD license

### Version
3.0-beta
3.2

### Contact us
Lifeng Nai (lnai3 _at_ gatech.edu / nailifeng _at_ gmail.com)
Expand Down
25 changes: 4 additions & 21 deletions benchmark/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,31 +9,14 @@ SUBDIR=bench_BFS \
bench_graphUpdate \
bench_graphConstruct \
bench_TopoMorph \
bench_pageRank \
bench_graphColoring \
ubench_add \
ubench_find \
ubench_delete \
ubench_traverse

default: all
ROOT=../

all: pfm_cxx
@for d in ${SUBDIR}; do \
${MAKE} -C $$d all; \
done

pfm_cxx:
${MAKE} -C ../tools all

clean:
@for d in ${SUBDIR}; do \
${MAKE} -C $$d clean; \
done
@rm -f output.log

run:
@rm -f output.log
@for d in ${SUBDIR}; do \
${MAKE} -C $$d run; \
cat $$d/output.log >> output.log; \
done
include ${ROOT}/gen.mk

25 changes: 0 additions & 25 deletions benchmark/README.txt

This file was deleted.

2 changes: 1 addition & 1 deletion benchmark/bench_BFS/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ ROOT=../..
TARGET=bfs
OBJS=bfs.o

RUN_ARGS=--threadnum 1 --dataset $(ROOT)/dataset/small --root 31
RUN_ARGS=--threadnum 2 --dataset $(ROOT)/dataset/small --root 31
PERF_ARGS=--perf-event PERF_COUNT_HW_CPU_CYCLES PERF_COUNT_HW_INSTRUCTIONS PERF_COUNT_HW_BRANCH_INSTRUCTIONS PERF_COUNT_HW_BRANCH_MISSES PERF_COUNT_HW_CACHE_L1D_READ_ACCESS PERF_COUNT_HW_CACHE_L1D_READ_MISS

EXTRA_CXX_FLAGS+=-fopenmp
Expand Down
43 changes: 35 additions & 8 deletions benchmark/bench_BFS/bfs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,15 @@
#include "SIM.h"
#endif

#ifdef HMC
#include "HMC.h"
#endif

using namespace std;

#define MY_INFINITY 0xffffff00
#define MY_INFINITY 0xfff0
size_t beginiter = 0;
size_t enditer = 0;

class vertex_property
{
Expand All @@ -27,7 +33,7 @@ class vertex_property

uint8_t color;
uint64_t order;
uint64_t level;
uint16_t level;
};
class edge_property
{
Expand Down Expand Up @@ -92,31 +98,45 @@ void parallel_bfs(graph_t& g, size_t root, unsigned threadnum, gBenchPerf_multi
vector<uint64_t> & input_tasks = global_input_tasks[tid];

perf.open(tid, perf_group);
perf.start(tid, perf_group);
perf.start(tid, perf_group);
#ifdef SIM
unsigned iter = 0;
#endif
while(!stop)
{
#pragma omp barrier
// process local queue
stop = true;

#ifdef SIM
SIM_BEGIN(iter==beginiter);
iter++;
#endif

for (unsigned i=0;i<input_tasks.size();i++)
{
uint64_t vid=input_tasks[i];
vertex_iterator vit = g.find_vertex(vid);
uint32_t curr_level = vit->property().level;
uint16_t curr_level = vit->property().level;

for (edge_iterator eit=vit->edges_begin();eit!=vit->edges_end();eit++)
{
uint64_t dest_vid = eit->target();
vertex_iterator destvit = g.find_vertex(dest_vid);
#ifdef HMC
if (HMC_CAS_equal_16B(&(destvit->property().level),
MY_INFINITY,curr_level+1) == MY_INFINITY)
#else
if (__sync_bool_compare_and_swap(&(destvit->property().level),
MY_INFINITY,curr_level+1))
#endif
{
global_output_tasks[vertex_distributor(dest_vid,threadnum)+tid*threadnum].push_back(dest_vid);
}
}
}
#ifdef SIM
SIM_END(iter==enditer);
#endif
#pragma omp barrier
input_tasks.clear();
for (unsigned i=0;i<threadnum;i++)
Expand All @@ -131,8 +151,10 @@ void parallel_bfs(graph_t& g, size_t root, unsigned threadnum, gBenchPerf_multi
}
}
#pragma omp barrier

}
#ifdef SIM
SIM_END(enditer==0);
#endif
perf.stop(tid, perf_group);
}

Expand Down Expand Up @@ -248,7 +270,12 @@ int main(int argc, char * argv[])
size_t root,threadnum;
arg.get_value("root",root);
arg.get_value("threadnum",threadnum);

#ifdef SIM
arg.get_value("beginiter",beginiter);
arg.get_value("enditer",enditer);
#endif


graph_t graph;
double t1, t2;

Expand All @@ -263,7 +290,7 @@ int main(int argc, char * argv[])
if (graph.load_csv_edges(efile, true, separator, 0, 1) == -1)
return -1;
#else
if (graph.load_csv_edges(path, true, separator, 0, 1) == -1)
if (graph.load_csv_edges(efile, true, separator, 0, 1) == -1)
return -1;
#endif

Expand Down
Loading

0 comments on commit 975da47

Please sign in to comment.