SIMDCompressionAndIntersection

A C++ library to compress and intersect sorted lists of integers using SIMD instructions

Github星跟蹤圖

SIMDCompressionAndIntersection

Build Status
Code Quality: Cpp

As the name suggests, this is a C/C++ library for fast
compression and intersection of lists of sorted integers using
SIMD instructions. The library focuses on innovative techniques
and very fast schemes, with particular attention to differential
coding. It introduces new SIMD intersections schemes such as
SIMD Galloping.

This library can decode at least 4 billions of compressed integers per second on most
desktop or laptop processors. That is, it can decompress data at a rate of 15 GB/s.
This is significantly faster than generic codecs like gzip, LZO, Snappy or LZ4.

Authors: Leonid Boystov, Nathan Kurz, Daniel Lemire,
Owen Kaser, Andrew Consroe, Shlomi Vaknin, Christoph Rupp, Bradley Grainger, and others.

Documentation

This work has also inspired other work such as...

Simple demo

Check out example.cpp

You can run it like so:

make example
./example

Usage

make
./unit

To run tests, you can do

./testcodecs

(follow the instructions)

For a simple C library

This library is a C++ research library. For something simpler,
written in C, see:

https://github.com/lemire/simdcomp

Comparison with the FastPFOR C++ library

The FastPFOR C++ Library available at https://github.com/lemire/FastPFor
implements some of the same compression schemes except that
it is not optimized for the compression of sorted lists of integers.

Licensing

Apache License, Version 2.0

As far as the authors know, this work is patent-free.

Requirements

A CPU (AMD or Intel) with support for SSE2 (Pentium 4 or better) is required
while a CPU with SSE 4.1* (Penryn [2007] processors or better) is recommended.

A recent GCC (4.7 or better), Clang, Intel or Visual C++ compiler.

A processor support AVX (Intel or AMD).

Tested on Linux, MacOS and Windows. It should be portable to other platforms.

*- The default makefile might assume AVX support, but AVX is not required. For GCC
compilers you might need the -msse2 flag, but you will not need the -mavx flag.

For advanced benchmarking, please see

advancedbenchmarking/README.md

where there is additional information as well as links to real data sets.

Acknowledgement

Thanks to Kelly Sommers for useful feedback.

This work was supported by NSERC grant number 26143.

主要指標

概覽
名稱與所有者fast-pack/SIMDCompressionAndIntersection
主編程語言C++
編程語言Shell (語言數: 4)
平台
許可證Apache License 2.0
所有者活动
創建於2013-12-16 18:51:31
推送於2023-07-13 18:31:57
最后一次提交2023-07-13 14:31:57
發布數2
最新版本名稱v0.1.1 (發布於 2014-01-20 18:01:37)
第一版名稱0.1.0 (發布於 2014-01-17 15:16:12)
用户参与
星數434
關注者數29
派生數59
提交數268
已啟用問題?
問題數14
打開的問題數4
拉請求數17
打開的拉請求數0
關閉的拉請求數3
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?