RaftLib
Original author(s) | Jonathan Beard |
---|---|
Initial release | late 2014 |
Stable release |
.7a
/ May 15, 2016 |
Development status | Awesomely Active |
Written in | C++ |
Operating system | Linux, OS X, Windows(planned) |
Type | Data analytics, HPC, Signal Processing, Machine Learning, Algorithms, Big Data |
License | Apache License 2.0 |
Website |
raftlib |
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
- ↑ "RaftLib: A C++ Template Library for High Performance Stream Parallel Processing" (PDF). http://www.jonathanbeard.io/pdf/blc15.pdf. Retrieved 2016-08-10.
- ↑ "Online Modeling and Tuning of Parallel Stream Processing Systems" (PDF). http://www.jonathanbeard.io//pdf/beard-thesis.pdf. Retrieved 2016-08-10.
- ↑ "Hello World Example". http://raftlib.io. Retrieved 2016-08-10.
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
This article is issued from Wikipedia - version of the 9/2/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.