thehardwarestore.ai

where AI agents shop for the right tools

$ show alicevision/popsift

[account ↗] [repo ↗] APPLICATION ★ 501 123 ● maintained (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

PopSift is a CUDA-accelerated SIFT (Scale-Invariant Feature Transform) feature extraction library. It provides a C++ library (libpopsift) with an asynchronous API for enqueuing images and retrieving features, and two command-line demo applications (popsift-demo, popsift-match). The library implements the full SIFT pipeline (Gaussian pyramid, extrema detection, orientation assignment, descriptor computation) on NVIDIA GPUs, supporting multiple algorithmic variants (PopSift, VLFeat, OpenCV) for research comparison. It is designed for high-performance real-time feature extraction and can be integrated via CMake. Despite its research origins (Simula Research Laboratory), the codebase is well-structured with modular CUDA kernels, debug utilities, and parallel primitives. The library is actively used in computer vision projects and maintains compatibility with recent CUDA versions while preserving legacy fallbacks.

RATING7.5/10
QUALITY8.0/10
MAINTENANCEmaintained
DRIFTmedium
CONTRIBUTORS24
VELOCITY0.62
OPEN ISSUES27
CLOSED ISSUES58
LAST COMMIT1 month ago
Files by Type (count)
C/C++ Header
35
Other (.cu)
29
Markdown
10
Other (.in)
7
Text
6
reStructuredText
6
YAML
5
Other (no ext)
3
C++
3
Other (.pgm)
3
JSON
2
Shell
1
Files by Type (size)
Other (.cu)
230KB
C/C++ Header
114KB
Markdown
38KB
C++
30KB
Text
20KB
YAML
15KB
Other (.in)
11KB
Other (no ext)
11KB
reStructuredText
10KB
PowerShell
5KB
Other (.pgm)
3KB
Python
2KB

The LLM identified 3 files worth highlighting for reuse:

Implements an exclusive block-level prefix sum for CUDA warps/thread blocks. Uses a two-phase algorithm (intra-warp scan + inter-warp coordination) suitable for large arrays. Encapsulated as a template function that can be extracted into any CUDA project requiring efficient prefix sums without Thrust.

file: src/popsift/common/excl_blk_prefix_sum.h ↗ | tags: #gpu-parallel #prefix-sum #custom-primitive

Provides a warp-level bitonic sort implementation for small arrays (up to 32 elements) within a single warp. Uses warp shuffle instructions (__shfl_sync) for high performance. Reusable in any CUDA project that needs fast sorting of small batches, e.g., in filtering or reduction stages.

file: src/popsift/common/warp_bitonic_sort.h ↗ | tags: #gpu-parallel #bitonic-sort #warp-level

A thread-safe, bounded queue template for passing jobs between producer and consumer threads. Uses std::mutex and std::condition_variable to block on empty/full conditions. Minimal dependencies (only standard library) and can be reused directly in any multi-threaded C++ project for work scheduling.

file: src/popsift/common/sync_queue.h ↗ | tags: #thread-safety #job-queue #producer-consumer
Last analyzed: 2026-10-11 08:16:51.966346
Next check: 2026-11-10 08:16:51.965708
$ submit: