Skip to content

Port Hornet's binning block memory allocator to cuGraph#5555

Merged
rapids-bot[bot] merged 6 commits into
rapidsai:mainfrom
seunghwak:fea_allocator
Jun 12, 2026
Merged

Port Hornet's binning block memory allocator to cuGraph#5555
rapids-bot[bot] merged 6 commits into
rapidsai:mainfrom
seunghwak:fea_allocator

Conversation

@seunghwak

Copy link
Copy Markdown
Contributor

This PR ports Hornet’s dynamic graph memory allocator into cuGraph under cugraph/cpp/include/cugraph/dynamic/memory_manager. This is a first task to support vertex/edge insertions/deletions in cuGraph.

The allocator has three layers:

bit_tree_t — Host-side Vec-Tree bitmap (from Hornet). Tracks which fixed-size blocks are free inside one block array. insert() returns a block index; remove(block_index) frees it back.

block_array_t — One GPU buffer (rmm::device_uvector for arithmetic types or cugraph::dataframe_buffer_t for cuda::std::tuple of arithmetic types) plus a bit_tree_t. The buffer holds the actual data; the bit tree hands out fixed-size blocks within it. insert()/remove() allocate and free blocks.

block_array_manager_t — Maintain separate block array pools based on the requested block size. Block size in different pools are power of 2 numbers (2^0, 2^1, 2^2, ... ). Given a requested block size, it finds a non-full block array in the matching pool or creates a new one. insert() returns block_access_data_t (block_array_key, block_index, num_elements_per_block); remove() uses that handle to free the block.

@seunghwak seunghwak requested review from a team as code owners June 10, 2026 00:23
@copy-pr-bot

copy-pr-bot Bot commented Jun 10, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@seunghwak seunghwak self-assigned this Jun 10, 2026
@seunghwak seunghwak added feature request New feature or request non-breaking Non-breaking change labels Jun 10, 2026
@seunghwak

Copy link
Copy Markdown
Contributor Author

/ok to test c1d7e35

@seunghwak

Copy link
Copy Markdown
Contributor Author

/ok to test 46aa306

@seunghwak

Copy link
Copy Markdown
Contributor Author

/ok to test 8e0e92f

@ChuckHastings

Copy link
Copy Markdown
Collaborator

/merge

@rapids-bot rapids-bot Bot merged commit c35cbac into rapidsai:main Jun 12, 2026
173 of 182 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature request New feature or request non-breaking Non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants