All Projects → CountOnes → hamming_weight

CountOnes / hamming_weight

Licence: Apache-2.0 license
C library to compute the Hamming weight of arrays

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to hamming weight

Despacer
C library to remove white space from strings as fast as possible
Stars: ✭ 90 (+114.29%)
Mutual labels:  avx
Boost.simd
Boost SIMD
Stars: ✭ 238 (+466.67%)
Mutual labels:  avx
dilithium
No description or website provided.
Stars: ✭ 166 (+295.24%)
Mutual labels:  avx
Corrfunc
⚡️⚡️⚡️Blazing fast correlation functions on the CPU.
Stars: ✭ 114 (+171.43%)
Mutual labels:  avx
Osaca
Open Source Architecture Code Analyzer
Stars: ✭ 162 (+285.71%)
Mutual labels:  avx
ternary-logic
Support for ternary logic in SSE, XOP, AVX2 and x86 programs
Stars: ✭ 21 (-50%)
Mutual labels:  avx
Umesimd
UME::SIMD A library for explicit simd vectorization.
Stars: ✭ 66 (+57.14%)
Mutual labels:  avx
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 (-40.48%)
Mutual labels:  avx
Hybridizer Basic Samples
Examples of C# code compiled to GPU by hybridizer
Stars: ✭ 186 (+342.86%)
Mutual labels:  avx
penguinV
Simple and fast C++ image processing library with focus on heterogeneous systems
Stars: ✭ 110 (+161.9%)
Mutual labels:  avx
Nsimd
Agenium Scale vectorization library for CPUs and GPUs
Stars: ✭ 138 (+228.57%)
Mutual labels:  avx
Hlslpp
Math library using hlsl syntax with SSE/NEON support
Stars: ✭ 153 (+264.29%)
Mutual labels:  avx
Guided Missile Simulation
Guided Missile, Radar and Infrared EOS Simulation Framework written in Fortran.
Stars: ✭ 33 (-21.43%)
Mutual labels:  avx
Packettracer
The SIMD-accelereted ray tracing in C# powered by Intel hardware intrinsic of .NET Core.
Stars: ✭ 109 (+159.52%)
Mutual labels:  avx
Chromium Clang
Chromium browser compiled with the Clang/LLVM compiler.
Stars: ✭ 77 (+83.33%)
Mutual labels:  avx
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 (+2907.14%)
Mutual labels:  avx
Mipp
MIPP is a portable wrapper for SIMD instructions written in C++11. It supports NEON, SSE, AVX and AVX-512.
Stars: ✭ 253 (+502.38%)
Mutual labels:  avx
cpuwhat
Nim utilities for advanced CPU operations: CPU identification, ISA extension detection, bindings to assorted intrinsics
Stars: ✭ 25 (-40.48%)
Mutual labels:  avx
sse-avx-rasterization
Triangle rasterization routines accelerated by SSE and AVX
Stars: ✭ 53 (+26.19%)
Mutual labels:  avx
hpc
Learning and practice of high performance computing (CUDA, Vulkan, OpenCL, OpenMP, TBB, SSE/AVX, NEON, MPI, coroutines, etc. )
Stars: ✭ 39 (-7.14%)
Mutual labels:  avx

hamming_weight

C library to compute the Hamming weight of arrays. The Hamming weight is the number of ones in a stream of bits. Computing this count quickly has important applications in indexing, machine learning, cryptography and so forth.

Library has several highly optimized implementations, which use popcnt, SSE, AVX2, and AVX512 instructions.

Please note that an AVX512F variant is under development, AVX512BW is just a proof of concept (no hardware support yet), and AVX512CD was written to show it's feasible.

Paper

Faster Population Counts using AVX2 Instructions

Related library

Usage

make
./unit
./basic_benchmark

Building

It's assumed that target CPU supports both AVX2 and popcnt.

  • If a CPU doesn't support AVX2 define SSE.
  • If a CPU doesn't support popcnt instruction then define NOPOPCNT.
  • If you want to build AVX512 variants, define AVX512F or AVX512BW or AVX512CD.
  • If you want to build for AMD XOP, define XOP.

For example:

export SSE=1 NOPOPCNT=1; make
./basic_benchmark

export AVX512F=1; make
./basic_benchmark
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].