All Projects → ihhub → penguinV

ihhub / penguinV

Licence: other
Simple and fast C++ image processing library with focus on heterogeneous systems

Programming Languages

C++
36643 projects - #6 most used programming language
Cuda
1817 projects
CMake
9771 projects
Makefile
30231 projects
c
50402 projects - #5 most used programming language
SWIG
194 projects

Projects that are alternatives of or similar to penguinV

hpc
Learning and practice of high performance computing (CUDA, Vulkan, OpenCL, OpenMP, TBB, SSE/AVX, NEON, MPI, coroutines, etc. )
Stars: ✭ 39 (-64.55%)
Mutual labels:  opencl, avx, sse, simd
Libxsmm
Library for specialized dense and sparse matrix operations, and deep learning primitives.
Stars: ✭ 518 (+370.91%)
Mutual labels:  avx, sse, simd
Mipp
MIPP is a portable wrapper for SIMD instructions written in C++11. It supports NEON, SSE, AVX and AVX-512.
Stars: ✭ 253 (+130%)
Mutual labels:  avx, sse, simd
Quadray Engine
Realtime raytracer using SIMD on ARM, MIPS, PPC and x86
Stars: ✭ 13 (-88.18%)
Mutual labels:  avx, sse, simd
Boost.simd
Boost SIMD
Stars: ✭ 238 (+116.36%)
Mutual labels:  avx, sse, simd
Std Simd
std::experimental::simd for GCC [ISO/IEC TS 19570:2018]
Stars: ✭ 275 (+150%)
Mutual labels:  avx, sse, simd
Directxmath
DirectXMath is an all inline SIMD C++ linear algebra library for use in games and graphics apps
Stars: ✭ 859 (+680.91%)
Mutual labels:  avx, sse, simd
Cglm
📽 Highly Optimized Graphics Math (glm) for C
Stars: ✭ 887 (+706.36%)
Mutual labels:  avx, sse, simd
Vc
SIMD Vector Classes for C++
Stars: ✭ 985 (+795.45%)
Mutual labels:  avx, sse, simd
Simde
Implementations of SIMD instruction sets for systems which don't natively support them.
Stars: ✭ 1,012 (+820%)
Mutual labels:  avx, sse, simd
ternary-logic
Support for ternary logic in SSE, XOP, AVX2 and x86 programs
Stars: ✭ 21 (-80.91%)
Mutual labels:  avx, sse, simd
cpuwhat
Nim utilities for advanced CPU operations: CPU identification, ISA extension detection, bindings to assorted intrinsics
Stars: ✭ 25 (-77.27%)
Mutual labels:  avx, sse, simd
oversimple
A library for audio oversampling, which tries to offer a simple api while wrapping HIIR, by Laurent De Soras, for minimum phase antialiasing, and r8brain-free-src, by Aleksey Vaneev, for linear phase antialiasing.
Stars: ✭ 25 (-77.27%)
Mutual labels:  avx, sse, simd
Simd
C++ image processing and machine learning library with using of SIMD: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX-512, VMX(Altivec) and VSX(Power7), NEON for ARM.
Stars: ✭ 1,263 (+1048.18%)
Mutual labels:  avx, sse, simd
sse-avx-rasterization
Triangle rasterization routines accelerated by SSE and AVX
Stars: ✭ 53 (-51.82%)
Mutual labels:  avx, sse, simd
Xsimd
C++ wrappers for SIMD intrinsics and parallelized, optimized mathematical functions (SSE, AVX, NEON, AVX512)
Stars: ✭ 964 (+776.36%)
Mutual labels:  avx, sse, simd
Unisimd Assembler
SIMD macro assembler unified for ARM, MIPS, PPC and x86
Stars: ✭ 63 (-42.73%)
Mutual labels:  avx, sse, simd
Despacer
C library to remove white space from strings as fast as possible
Stars: ✭ 90 (-18.18%)
Mutual labels:  avx, sse, simd
Nsimd
Agenium Scale vectorization library for CPUs and GPUs
Stars: ✭ 138 (+25.45%)
Mutual labels:  avx, simd
Hlslpp
Math library using hlsl syntax with SSE/NEON support
Stars: ✭ 153 (+39.09%)
Mutual labels:  avx, sse

penguinV

PenguinV is a powerful image processing library with focus on heterogeneous systems. The library is designed with an idea to have common API for CPUs and GPUs simplifying developer's work on context switching between devices. Core features of the library:

  • heterogeneous system support (CPUs and GPUs)
  • CUDA, OpenCL and SIMD (SSE, AVX, NEON) support
  • Python support
  • multithreading support
  • cross-platform (Windows, Linux, MacOS)
  • compactness
  • ability to process separate parts of an image (ROI)
  • user-defined image types and more.

What can it do?

You can develop a software within minutes of your time to obtain high performance and accuracy. It is up to developer to decide which device (CPU or GPU) would execute the code or give such control to the library.

Example code for below images could look like this:

Image red = ExtractChannel( image, RED_CHANNEL );
Image binary = Threshold( red, // threshold
                          GetThreshold( // get weighted threshold
                              Histogram( red ) ) ) ); // get image histogram

BlobDetection detection;
...
detection.find( binary );
...
Image rgb = ConvertToRgb( binary );
rgb = BitwiseAnd( image, rgb );
...
rgb = BitwiseOr( image, rgb );

The trick behind the code is that you have a single interface for CPU as well as for GPU!

one two three four five six

Contribution

Actions Status Total alerts

We welcome and appreciate any help, even if it's a tiny text or code change. Please read contribution page before starting work on a pull request. Not sure what to start with? Feel free to refer to good first issue or help wanted tags.

Requirements

To compile the source code your compiler must support at least C++ 11 version.

How to install

The library is distributed in the form of source code. To use the library you need to include necessary files into your application project. That's it! No more extra moves!

How to compile an example

Open README.md file in any of example directories and follow instructions.

Multithreading support

The library contains it's own thread pool which creates multiple tasks to run image processing function for a given image via multiple threads. Such tenchnique gives a big boost on machines with major CPU usage.

GPU support

All source code and descriptions related to CUDA or OpenCL are located in separate src/cuda and src/opencl directories respectively. Read full description about CUDA or OpenCL support in README file in the directory.

License

This project is under 3-clause BSD License. Please refer to file LICENSE for more details.

API description

Directory doc contains latest and valid information and description of library's API.

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].