Graph500 benchmark rewritten in C++ using HPX. Initial version is forked from sithhell Graph500.
HPX is a general purpose C++ runtime system for parallel and distributed applications of any scale. The goal of HPX is to create a high quality, freely available, open source implementation of the ParalleX model for conventional systems.
Graph500 is the benchmark used to model important factors of many modern parallel analytical workloads. The current Graph500 benchmarks are implemented using OpenMP and MPI. See http://www.graph500.org/
for information on the present Graph500.
Porting Graph500 to HPX, which is well suited for the fine-grain and irregular workloads of graph applications.
The project replaces the inherent barrier synchronization with asynchronous communications of HPX.
The motivation is to produce a new benchmark for the HPC community as well as an addition to the HPX benchmark suite and compare HPX’s performance with reference implementations.
Before starting to build HPX_GRAPH500, please install HPX C++ runtime system.
You should follow the instruction on the HPX github website.
-
Clone the HPX_GRAPH500 master git repository:
git clone git://github.com/hengzhang/HPX_GRAPH500.git
-
Invoke CMake from your build directory.
cmake -DHPX_ROOT=/where_hpx_be_installed \ ...
-
Invoke GNU make.
-jN
flag to your make invocation, whereN
is the number of cores on your machine plus one:make -j5
-
To complete the build and install HPX_GRAPH500:
make install ldconfig
-
Run hpx_graph500 on the bin directory.
Source code in github about Breath First Search algorithm (BFS on my github), implemented using HPX, is referenced to this repository.