Skip to content
The RaftLib C++ library, streaming/dataflow concurrency via C++ iostream-like operators
C++ CMake
Branch: master
Clone or download

Latest commit

jonathan-beard Merge pull request #113 from RaftLib/fifoimprovements
finished back-porting parser-improvement fifo changes
Latest commit 512d63c May 27, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows Update main.yml May 10, 2020
cmake yet more updates, running one more check then will get back to reviewing May 9, 2020
examples Remove traces of Boost dependencies Sep 6, 2019
git-dep made guards more unique for issue #111, moved align helper code May 25, 2020
helpers Removed dependcy on boost Jan 30, 2018
raftinc updates May 27, 2020
src fixed bad cut/paste error May 27, 2020
testsuite
.gitignore updates ref comments from @anatolyborodin, deleted files, added .giti… Oct 27, 2016
.gitmodules working on incorporating modules into master branch, intiial commit, … Apr 29, 2020
CMakeLists.txt one test case failure still in nonTrivialAllocatorPopExternal_test May 11, 2020
Doxyfile Removed dependcy on boost Jan 30, 2018
LICENSE Initial commit Aug 19, 2014
README.md Update README.md May 20, 2020
raft updates to exceptions branch Sep 8, 2018
raftalgorithm added impl to search kernel, fixed a few bugs, added test case for se… Jul 17, 2016
raftio updates, almost rid of non-portable stuffs Dec 3, 2015
raftlib.pc fixed install with new sub-module construction, also auto-installs pc… May 9, 2020
raftlib.pc-qthreads fixed install with new sub-module construction, also auto-installs pc… May 9, 2020
raftmath updates, almost rid of non-portable stuffs Dec 3, 2015
raftrandom updates Jan 5, 2016
raftstat updates Jan 13, 2015
raftutility updates, almost rid of non-portable stuffs Dec 3, 2015

README.md

RaftLib is a C++ Library for enabling stream/data-flow parallel computation. Using simple right shift operators (just like the C++ streams that you would use for string manipulation), you can link parallel compute kernels together. With RaftLib, we do away with explicit use of pthreads, std::thread, OpenMP, or any other parallel "threading" library. These are often mis-used, creating non-deterministic behavior. RaftLib's model allows lock-free FIFO-like access to the communications channels connecting each compute kernel. The full system has many auto-parallelization, optimization, and convenience features that enable relatively simple authoring of performant applications. This project is currently in the alpha stage. The beta release will bring back multi-node support, along with (planned) container support for the remote machines. Feel free to give it a shot, if you have any issues, also feel free to send the authors an e-mail.

User Group / Mailing List: slack channel

=============

Build status

CI

Pre-requisites

OS X & Linux

Compiler: c++14 capable -> Clang, GNU GCC 5.0+, or Intel icc

Windows

  • Latest merge from pull request to main should enable compilation on VS on Win10.

Install

Make a build directory (for the instructions below, we'll write [build]). If you want to build the OpenCV example, then you'll need to add to your cmake invocation:

-DBUILD_WOPENCV=true 

To use the QThreads User space HPC threading library you will need to add the following (NOTE: The qthread library currently uses its own partitioner and does not work with Scotch, it also has issues with OpenCV, will fix in next release iteration):

-DUSEQTHREAD=1

Building the examples, benchmarks and tests can be disabled using:

-DBUILD_EXAMPLES=false
-DBUILD_BENCHMARKS=false
-DBUILD_TESTS=false

To build:

mkdir [build]
cd [build]
cmake ..
make && make test
sudo make install

NOTE: The default prefix in the makefile is:

PREFIX ?= /usr/local

Using

  • When building applications with RaftLib, on Linux it is best to use the pkg-config file, as an example, using the poc.cpp example,
g++ `pkg-config --cflags raftlib` poc.cpp -o poc `pkg-config --libs raftlib`

Feel free to substitute your favorite build tool. I use Ninja and make depending on which machine I'm on. To change out, use cmake to generate the appropriate build files with the -Gxxx flag.

Citation

If you use this framework for something that gets published, please cite it as:

@article{blc16,
  author = {Beard, Jonathan C and Li, Peng and Chamberlain, Roger D},
  title = {RaftLib: A C++ Template Library for High Performance Stream Parallel Processing},
  year = {2016},
  doi = {http://dx.doi.org/10.1177/1094342016672542},
  eprint = {http://hpc.sagepub.com/content/early/2016/10/18/1094342016672542.full.pdf+html},
  journal = {International Journal of High Performance Computing Applications}
}

Other Info Sources

You can’t perform that action at this time.