MCPcopy Create free account
hub / github.com/RaftLib/RaftLib

github.com/RaftLib/RaftLib @v2020.07.01

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2020.07.01 ↗ · + Follow
661 symbols 932 edges 171 files 48 documented · 7% updated 2y agov0.18.1 · 2024-01-02★ 99533 open issues

Browse by type

Functions 462 Types & classes 199
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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

Core symbols most depended-on inside this repo

Shape

Method 375
Class 185
Function 87
Enum 14

Languages

C++100%

Modules by API surface

raftinc/port.hpp22 symbols
examples/opencv/contours.cpp17 symbols
raftinc/kernel.hpp16 symbols
raftinc/fifo.hpp15 symbols
testsuite/allocateSendRandomPush.cpp13 symbols
testsuite/allocateSendPush.cpp13 symbols
testsuite/allocatePopPush.cpp13 symbols
testsuite/allocatePopExternal.cpp12 symbols
src/schedule.cpp11 symbols
src/map.cpp10 symbols
examples/simple/twoport.cpp10 symbols
examples/simple/sender.cpp10 symbols

For agents

$ claude mcp add RaftLib \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page