https://github.com/alpha-unito/pico
A C++ framework for data analytics pipelines
https://github.com/alpha-unito/pico
data-analytics high-performance multi-core pipelines
Last synced: 5 months ago
JSON representation
A C++ framework for data analytics pipelines
- Host: GitHub
- URL: https://github.com/alpha-unito/pico
- Owner: alpha-unito
- License: lgpl-3.0
- Created: 2016-11-30T21:40:23.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-05-06T14:15:41.000Z (about 6 years ago)
- Last Synced: 2025-09-09T04:54:40.007Z (10 months ago)
- Topics: data-analytics, high-performance, multi-core, pipelines
- Language: C++
- Homepage:
- Size: 4.98 MB
- Stars: 26
- Watchers: 6
- Forks: 5
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
PiCo: High-Performance Data-Analytics Pipelines in C++
===============
[](https://travis-ci.org/alpha-unito/pico)
[](https://www.gnu.org/licenses/lgpl-3.0)
[](http://github.com/alpha-unito/pico/releases)
[](http://github.com/alpha-unito/pico/issues)
PiCo (**Pi**peline **Co**mposition) is an open-source C++11 header-only DSL for *high-performance data analytics*, featuring low latency, high throughput, and minimal memory footprint on multi-core platforms.
Take a look to the [word-count](examples/word-count/pico_wc.cpp) code to see how easy is writing a PiCo pipeline!
## Report bugs + get help
https://github.com/alpha-unito/pico/issues/new
## Build and run tests
The following steps require `cmake >=3.1` as build system.
Get PiCo:
```bash
git clone https://github.com/alpha-unito/pico.git
```
The current implementation is based on [FastFlow](https://github.com/fastflow/fastflow) as runtime system.
Get it and a link it:
```bash
cd pico
git clone https://github.com/fastflow/fastflow.git
ln -s fastflow/ff .
```
:rescue_worker_helmet: A better solution for including FastFlow as dependency is under development!
Build and run tests and examples: (from `pico` root directory)
```bash
mkdir build && cd build
cmake .. -DPICO_ENABLE_UNIT_TEST=ON
cmake --build .
ctest
```
## Use PiCo in your code
Good news! PiCo is header-only, you do not need to build/link any library to use it in your code.
Just include PiCo headers at the beginning of your source file:
```c++
#include "pico/pico.hpp"
```
and use good ol' compiler flags to include PiCo (and FastFlow) when compiling your `app`:
```bash
git clone https://github.com/alpha-unito/pico.git
cd pico
git clone https://github.com/fastflow/fastflow.git
ln -s fastflow/ff .
g++ -I/path/to/pico/include -Iff app.cc
```
:rescue_worker_helmet: A modern CMake-based solution for linking PiCo (with its dependencies) is under development!
## Examples
The [examples](examples) folder contains some proof-of-concept applications, showing the PiCo user experience:
- [word-count](examples/word-count): PiCo pipelines 101 + visualizing application graphs
- [stock-market](examples/stock-market): batch vs stream pipelines
- [page-rank](examples/page-rank): iterative pipelines
## PiCo Team
Maurizio Drocco (maintainer)
Claudia Misale (creator + co-maintainer)
Alberto Riccardo Martinelli (co-maintainer)
#### Contributors
Marco Aldinucci (boss)
Massimo Torquati (FastFlow maintainer)
Guy Tremblay (DSL wizard)
## How to cite PiCo
C. Misale, M. Drocco, G. Tremblay, A. R. Martinelli, and M. Aldinucci, "PiCo: High-Performance Data Analytics Pipelines in Modern C++," Future Generation Computer Systems, Volume 87, 2018.
[](https://doi.org/10.1016/j.future.2018.05.030)
[](https://dblp.uni-trier.de/rec/bibtex/journals/fgcs/MisaleDTMA18)
[](https://dblp.uni-trier.de/rec/bib2/journals/fgcs/MisaleDTMA18.bib)
[](https://dblp.uni-trier.de/rec/ris/journals/fgcs/MisaleDTMA18.ris)