RaftLib
Original author(s) | Jonathan Beard |
---|---|
Initial release | late 2014 (late 2014) |
Stable release | 0.9 / January 2020 (2020-01) |
Preview release | 1.0a / May 18, 2020; 4 years ago (2020-05-18) |
Written in | C++ |
Operating system | Linux, macOS, Windows |
Type | Data analytics, HPC, Signal Processing, Machine Learning, Algorithms, Big Data |
License | Apache License 2.0 |
Website | www |
RaftLib[1] is a portable parallel processing system that aims to provide extreme performance while increasing programmer productivity. It enables a programmer to assemble a massively parallel program (both local and distributed) using simple iostream-like operators. RaftLib handles threading, memory allocation, memory placement, and auto-parallelization of compute kernels.[2] It enables applications to be constructed from chains of compute kernels forming a task and pipeline parallel compute graph. Programs are authored in C++ (although other language bindings are planned).
Example
Here is a Hello World example for demonstration purposes:[3]
#include <raft> #include <raftio> #include <cstdlib> #include <string> class hi : public raft::kernel { public: hi() : raft::kernel() { output.addPort< std::string >( "0" ); } virtual raft::kstatus run() { output[ "0" ].push( std::string( "Hello World\n" ) ); return( raft::stop ); } }; int main( int argc, char **argv ) { /** instantiate print kernel **/ raft::print< std::string > p; /** instantiate hello world kernel **/ hi hello; /** make a map object **/ raft::map m; /** add kernels to map, both hello and p are executed concurrently **/ m += hello >> p; /** execute the map **/ m.exe(); return( EXIT_SUCCESS ); }
References
External links
- The RaftLib Project Page
- RaftLib User Wiki
- Project GitHub Repository
- CPPNow RaftLib Tutorial Session
- A Short Introduction to Stream Processing
- Parallel BZip2 Implementation Using RaftLib
- v
- t
- e
Parallel computing
- Distributed computing
- Parallel computing
- Massively parallel
- Cloud computing
- High-performance computing
- Multiprocessing
- Manycore processor
- GPGPU
- Computer network
- Systolic array
- Temporal
- Simultaneous (SMT)
- Simultaneous and heterogenous
- Speculative (SpMT)
- Preemptive
- Cooperative
- Clustered multi-thread (CMT)
- Hardware scout
- Process
- Thread
- Fiber
- Instruction window
- Array
- Multiprocessing
- Memory coherence
- Cache coherence
- Cache invalidation
- Barrier
- Synchronization
- Application checkpointing
- Category: Parallel computing