All Projects → iterait → hipipe

iterait / hipipe

Licence: MIT, Unknown licenses found Licenses found MIT LICENSE.txt Unknown COPYRIGHT.md
Super fast C++17 data transformation pipeline (with Python interface).

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to hipipe

live-torrent-backend
The backend server for the live-torrent project
Stars: ✭ 38 (+137.5%)
Mutual labels:  stream
fridgefm-radio-core
Simple lightweight package for creating your own radio station via NodeJS heavily inspired by Shoutcast and Icecast.
Stars: ✭ 32 (+100%)
Mutual labels:  stream
node-stream-equal
Test that two readable streams are equal to each other.
Stars: ✭ 24 (+50%)
Mutual labels:  stream
multipart-read-stream
Read a multipart stream over HTTP
Stars: ✭ 13 (-18.75%)
Mutual labels:  stream
warewulf
Warewulf is a stateless and diskless container operating system provisioning system for large clusters of bare metal and/or virtual systems.
Stars: ✭ 90 (+462.5%)
Mutual labels:  hpc
wise-river
Object streaming the way it should be.
Stars: ✭ 33 (+106.25%)
Mutual labels:  stream
node-advanced
Node Advanced Courseware
Stars: ✭ 80 (+400%)
Mutual labels:  stream
exile
Alternative to ports for running external programs. It provides back-pressure, non-blocking io, and solves port related issues
Stars: ✭ 74 (+362.5%)
Mutual labels:  stream
rxjava2-http
Transmit RxJava2 Flowable over http with non-blocking backpressure
Stars: ✭ 19 (+18.75%)
Mutual labels:  stream
SHAD
Scalable High-performance Algorithms and Data-structures
Stars: ✭ 85 (+431.25%)
Mutual labels:  hpc
hyperqueue
Scheduler for sub-node tasks for HPC systems with batch scheduling
Stars: ✭ 48 (+200%)
Mutual labels:  hpc
pystella
A code generator for grid-based PDE solving on CPUs and GPUs
Stars: ✭ 18 (+12.5%)
Mutual labels:  hpc
irc-tts
Broadcast your IRC channel via a text-to-speech webserver
Stars: ✭ 14 (-12.5%)
Mutual labels:  stream
deep-action-detection
Multi-stream CNN architectures for action detection with actor-centric filtering
Stars: ✭ 24 (+50%)
Mutual labels:  stream
cruise
User space POSIX-like file system in main memory
Stars: ✭ 27 (+68.75%)
Mutual labels:  hpc
singularityware.github.io
base documentation site for Singularity software
Stars: ✭ 27 (+68.75%)
Mutual labels:  hpc
DCA
DCA++
Stars: ✭ 27 (+68.75%)
Mutual labels:  hpc
COBREXA.jl
Constraint-Based Reconstruction and EXascale Analysis
Stars: ✭ 21 (+31.25%)
Mutual labels:  hpc
node-jstream
Continuously reads in JSON and outputs Javascript objects.
Stars: ✭ 13 (-18.75%)
Mutual labels:  stream
react-webrtc-chat
React WebRTC chat
Stars: ✭ 39 (+143.75%)
Mutual labels:  stream

HiPipe

CircleCI MIT license Development Status Master Developer

HiPipe is a C++ library for efficient data processing. Its main purpose is to simplify and accelerate data preparation for deep learning models, but it is generic enough to be used in many other areas.

HiPipe lets the programmer build intuitive data streams that transform, combine and filter the data that pass through. Those streams are compiled, batched, and asynchronous, therefore maximizing the utilization of the provided hardware.

Example

std::vector<std::string> logins = {"marry", "ted", "anna", "josh"};
std::vector<int>           ages = {     24,    41,     16,     59};

auto stream = ranges::views::zip(logins, ages)

  // create a batched stream out of the raw data
  | hipipe::create<login, age>(2)

  // make everyone older by one year
  | hipipe::transform(from<age>, to<age>, [](int a) { return a + 1; })

  // increase each letter in the logins by one (i.e., a->b, e->f ...)
  | hipipe::transform(from<login>, to<login>, [](char c) { return c + 1; }, dim<2>)

  // increase the ages by the length of the login
  | hipipe::transform(from<login, age>, to<age>, [](std::string l, int a) {
        return a + l.length();
    })

  // probabilistically rename 50% of the people to "buzz"
  | hipipe::transform(from<login>, to<login>, 0.5, [](std::string) -> std::string {
        return "buzz";
    })

  // drop the login column from the stream
  | hipipe::drop<login>

  // introduce the login column back to the stream
  | hipipe::transform(from<age>, to<login>, [](int a) {
        return "person_" + std::to_string(a) + "_years_old";
    })

  // filter only people older than 30 years
  | hipipe::filter(from<login, age>, by<age>, [](int a) { return a > 30; })

  // asynchronously buffer the stream during iteration
  | hipipe::buffer(2);

// extract the ages from the stream to std::vector
ages = hipipe::unpack(stream, from<age>);
assert((ages == std::vector<int>{45, 64}));
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].