Quick Start
Get up and running with Mini-ImagePipe in under 5 minutes.
Minimal Example
cpp
#include "pipeline.h"
#include "operators/gaussian_blur.h"
int main() {
using namespace mini_image_pipe;
// Create pipeline
Pipeline pipeline;
// Add operator
auto blur = std::make_shared<GaussianBlurOperator>(GaussianKernelSize::KERNEL_5x5);
int node = pipeline.addOperator("Blur", blur);
// Execute (assuming you have input data)
// pipeline.setInput(node, d_input, width, height, channels);
// pipeline.execute();
// void* output = pipeline.getOutput(node);
return 0;
}Complete Pipeline Example
cpp
#include "pipeline.h"
#include "operators/resize.h"
#include "operators/color_convert.h"
#include "operators/gaussian_blur.h"
#include "operators/sobel.h"
#include <iostream>
using namespace mini_image_pipe;
int main() {
// 1. Configure pipeline
PipelineConfig config;
config.numStreams = 4;
Pipeline pipeline(config);
// 2. Create operators
auto resize = std::make_shared<ResizeOperator>(320, 240);
auto gray = std::make_shared<ColorConvertOperator>(ColorConversionType::RGB_TO_GRAY);
auto blur = std::make_shared<GaussianBlurOperator>(GaussianKernelSize::KERNEL_5x5);
auto sobel = std::make_shared<SobelOperator>();
// 3. Build DAG
int n1 = pipeline.addOperator("Resize", resize);
int n2 = pipeline.addOperator("Gray", gray);
int n3 = pipeline.addOperator("Blur", blur);
int n4 = pipeline.addOperator("Sobel", sobel);
pipeline.connect(n1, n2); // Resize → Gray
pipeline.connect(n2, n3); // Gray → Blur
pipeline.connect(n3, n4); // Blur → Sobel
// 4. Prepare input (example: allocate device memory)
int width = 1920, height = 1080, channels = 3;
size_t inputSize = width * height * channels * sizeof(uint8_t);
void* d_input;
cudaMalloc(&d_input, inputSize);
// 5. Execute
pipeline.setInput(n1, d_input, width, height, channels);
cudaError_t err = pipeline.execute();
if (err != cudaSuccess) {
std::cerr << "Pipeline failed: " << cudaGetErrorString(err) << std::endl;
return 1;
}
// 6. Get output
void* output = pipeline.getOutput(n4);
std::cout << "Pipeline executed successfully!" << std::endl;
// Cleanup
cudaFree(d_input);
return 0;
}Build and Run
bash
# Build
cmake --preset release
cmake --build --preset release
# Run your program
./build/your_programNext Steps
- Usage Examples — More usage patterns
- API Reference — Full API documentation
- Architecture — Understand the design