All Projects → RaftLib → Raftlib

RaftLib / Raftlib

Licence: apache-2.0
The RaftLib C++ library, streaming/dataflow concurrency via C++ iostream-like operators

Programming Languages

dsl
153 projects

Projects that are alternatives of or similar to Raftlib

Easylambda
distributed dataflows with functional list operations for data processing with C++14
Stars: ✭ 475 (-33.75%)
Mutual labels:  parallel, dataflow-programming, hpc
Core
parallel finite element unstructured meshes
Stars: ✭ 124 (-82.71%)
Mutual labels:  cmake, parallel, hpc
Corium
Corium is a modern scripting language which combines simple, safe and efficient programming.
Stars: ✭ 18 (-97.49%)
Mutual labels:  runtime, parallel
DFiant
DFiant: A Dataflow Hardware Descripition Language
Stars: ✭ 21 (-97.07%)
Mutual labels:  dataflow, dataflow-programming
Cmake Templates
Some CMake Templates (examples). Qt, Boost, OpenCV, C++11, etc 一些栗子
Stars: ✭ 368 (-48.68%)
Mutual labels:  cmake, opencv
dspatch
The Refreshingly Simple Cross-Platform C++ Dataflow / Pipelining / Stream Processing / Reactive Programming Framework
Stars: ✭ 124 (-82.71%)
Mutual labels:  dataflow, dataflow-programming
act
ACT hardware description language and core tools.
Stars: ✭ 53 (-92.61%)
Mutual labels:  dataflow, dataflow-programming
Charm4py
Parallel Programming with Python and Charm++
Stars: ✭ 259 (-63.88%)
Mutual labels:  runtime, hpc
ParallelUtilities.jl
Fast and easy parallel mapreduce on HPC clusters
Stars: ✭ 28 (-96.09%)
Mutual labels:  hpc, parallel
Tensorflow Cmake
TensorFlow examples in C, C++, Go and Python without bazel but with cmake and FindTensorFlow.cmake
Stars: ✭ 418 (-41.7%)
Mutual labels:  cmake, opencv
Coherent Line Drawing
🖼✨Automatically generates line drawing from a photograph
Stars: ✭ 461 (-35.7%)
Mutual labels:  cmake, opencv
cruise
User space POSIX-like file system in main memory
Stars: ✭ 27 (-96.23%)
Mutual labels:  hpc, parallel
go-worker-thread-pool
A visual working example of a Thread Pool pattern, based on a known blog article.
Stars: ✭ 24 (-96.65%)
Mutual labels:  thread, parallel
future.batchtools
🚀 R package future.batchtools: A Future API for Parallel and Distributed Processing using batchtools
Stars: ✭ 77 (-89.26%)
Mutual labels:  hpc, parallel
parallel
PARALLEL: Stata module for parallel computing
Stars: ✭ 97 (-86.47%)
Mutual labels:  hpc, parallel
flowd
An inter-language runtime for flow-based programming (FBP)
Stars: ✭ 18 (-97.49%)
Mutual labels:  dataflow, dataflow-programming
Streaming Readings
Streaming System 相关的论文读物
Stars: ✭ 554 (-22.73%)
Mutual labels:  dataflow, streaming
rTRNG
R package providing access and examples to TRNG C++ library
Stars: ✭ 17 (-97.63%)
Mutual labels:  hpc, parallel
pennylane-lightning
The PennyLane-Lightning plugin provides a fast state-vector simulator written in C++ for use with PennyLane
Stars: ✭ 28 (-96.09%)
Mutual labels:  hpc, parallel
Opencv Mingw Build
👀 MinGW 32bit and 64bit version of OpenCV compiled on Windows. Including OpenCV 3.3.1, 3.4.1, 3.4.1-x64, 3.4.5, 3.4.6, 3.4.7, 3.4.8-x64, 3.4.9, 4.0.0-alpha-x64, 4.0.0-rc-x64, 4.0.1-x64, 4.1.0, 4.1.0-x64, 4.1.1-x64, 4.5.0-with-contrib
Stars: ✭ 401 (-44.07%)
Mutual labels:  cmake, opencv

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. Feel free to give it a shot, if you have any issues, please create an issue request. Minor issues, the Slack group is the best way to resolve. We take pull requests!! For benchmarking, feel free to send the authors an email. We've started a benchmark collection, however, it's far from complete. We'd love to add your code!!

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 use the version with the RaftLib org and follow the RaftLib specific readme. This QThreads version has patches for hwloc2.x applied and fixes for test cases. To compile RaftLib with QThreads linked, add the following (assumes the QThreads library is in your path):

-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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].