NVIDIA / NVIDIA/cuCollections

[FEA] New storage class concept

Open
#206 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

type: feature request
Dominant language
Cuda
Stars
667
Forks
120
Avg merge
7d 5h
Merged PRs (30d)
4

Description

Part of #110 (Refactor of open address data structures)

Development branch: NVIDIA/cuCollections/refactor

Synopsis

A conceptual list of <key,payload> elements that need not necessarily be contiguous in memory. For example, vector< pair<key,value> > or vector<key> and vector<value> (i.e., AoS vs SoA) could be valid implementations of storage.

TODOs
  • Implement classes cuco::storage::array_of_structs and cuco::storage::struct_of_arrays and (optionally) cuco::storage::array_of_structs_of_arrays (closes #103)
  • Own the mechanism of atomically updating a given slot using cuda::atomic_ref (closes #183)
  • It should provide some mechanism for loading an immutable "window" of slots. The intention is to provide a standard way of using vector load/store operations
  • Enable querying if concurrent insert/find operations are possible No longer desired due to operator mixins
References

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the refactor development branch and read the issue's Godbolt reference for the distinct ProbingScheme and Storage concepts. Define the scope of cuco::storage::array_of_structs and struct_of_arrays, and optionally array_of_structs_of_arrays, then verify that the resulting abstractions support the listed slot-update and immutable-window requirements.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.