GitHub – tdortman/cuckoo-filter: Filtro Cuckoo acelerado por GPU

PUBLICIDADE

GitHub - tdortman/cuckoo-filter: Filtro Cuckoo acelerado por GPU

Uma implementação CUDA de alto desempenho da estrutura de dados do Filtro Cuckoo, desenvolvida como parte da tese “Projeto e Avaliação de um Filtro Cuckoo Acelerado por GPU”.

Esta biblioteca fornece uma implementação de filtro Cuckoo acelerada por GPU otimizada para operações em lote de alto rendimento. Filtros Cuckoo são estruturas de dados probabilísticas com uso eficiente de espaço que suportam operações de inserção, pesquisa e exclusão com uma taxa de falsos positivos configurável.

  • Operações de inserção, pesquisa e exclusão em lote aceleradas por CUDA
  • Tamanho configurável da impressão digital e tamanho do balde
  • Múltiplas políticas de despejo (DFS, BFS)
  • Modo de inserção classificado para melhor coalescência de memória
  • Suporte multi-GPU via fofoca
  • Suporte IPC para compartilhamento de filtro entre processos
  • Design de biblioteca somente de cabeçalho

Benchmarks com fator de carga de 80% em um NVIDIA GH200 (H100 HBM3, 3,4 TB/s). O Filtro GPU Cuckoo é comparado com:

Residente L2 (4 milhões de itens, ~8 MiB)

ComparaçãoInserirConsultaExcluir
GPU vs CPU Cuco360× mais rápido973× mais rápidoN / D
Cuco vs TCF6× mais rápido42× mais rápido100× mais rápido
Cuco vs GQF585× mais rápido6× mais rápido273× mais rápido
Cuco vs Flor0,6× (mais lento)1,4× mais rápidoN / D

Residente em DRAM (268 milhões de itens, ~512 MiB)

ComparaçãoInserirConsultaExcluir
GPU vs CPU Cuco583× mais rápido1504× mais rápidoN / D
Cuco vs TCF1,9× mais rápido11,3× mais rápido35,3× mais rápido
Cuco vs GQF9,6× mais rápido2,6× mais rápido3,8× mais rápido
Cuco vs Flor0,7× (mais lento)1,0× (igual)N / D

Observação

Para uma avaliação mais abrangente, incluindo sistemas e análises adicionais, consulte a tese anexa.

  • Kit de ferramentas CUDA (>= 12,9)
  • Compilador compatível com C++20
  • Sistema de construção Meson (>= 1.3.0)
meson setup build
meson compile -C build

Benchmarks e testes são criados por padrão. Para desativá-los:

meson setup build -DBUILD_BENCHMARKS=false -DBUILD_TESTS=false
#include <CuckooFilter.cuh>

// Configure the filter: key type, fingerprint bits, max evictions, block size, bucket size
using Config = CuckooConfig<uint64_t, 16, 500, 256, 16>;

// Create a filter with the desired capacity
CuckooFilter filter(1 << 20);  // capacity for ~1M items

// Insert keys (d_keys is a device pointer)
filter.insertMany(d_keys, numKeys);

// Or use sorted insertion
filter.insertManySorted(d_keys, numKeys);

// Check membership
filter.containsMany(d_keys, d_results, numKeys);

// Delete keys
filter.deleteMany(d_keys, d_results, numKeys);

O CuckooConfig modelo aceita os seguintes parâmetros:

ParâmetroDescriçãoPadrão
TTipo de chave
bitsPerTagTamanho da impressão digital em bits (8, 16, 32)
maxEvictionsMáximo de tentativas de despejo antes do fracasso500
blockSizeTamanho do bloco CUDA256
bucketSizeSlots por bucket (deve ter potência de 2)16
AltBucketPolicyPolítica alternativa de cálculo de intervaloXorAltBucketPolicy
evictionPolicyEstratégia de despejo (DFS ou BFS)BFS
WordTypeTipo atômico (uint32_t ou uint64_t)uint64_t

Para cargas de trabalho que excedem a capacidade de uma única GPU:

#include <CuckooFilterMultiGPU.cuh>

CuckooFilterMultiGPU filter(numGPUs, totalCapacity);
filter.insertMany(h_keys, numKeys);
filter.containsMany(h_keys, h_results, numKeys);
include/           - Header files
  CuckooFilter.cuh           - Main filter implementation
  CuckooFilterMultiGPU.cuh   - Multi-GPU implementation
  CuckooFilterIPC.cuh        - IPC support
  bucket_policies.cuh        - Alternative bucket policies
  helpers.cuh                - Helper functions
src/               - Example applications
benchmark/         - benchmarks
tests/             - Unit tests
scripts/           - Scripts for running/plotting benchmarks

Fonte: theverge

Mais recentes

PUBLICIDADE

WP Twitter Auto Publish Powered By : XYZScripts.com