Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[FEA] Refactor of open address data structures

Đang mở
#110 8 bình luận 2 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
20/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Công nghệ
cpp
Lĩnh vực
backend

Hướng nghiên cứu

Không có tệp hoặc kiểm thử nào được nêu. Hãy bắt đầu bằng việc khảo sát các triển khai của static_map, static_multimap và static_reduction_map, sau đó đánh giá abstraction open_address_impl được đề xuất dựa trên các yêu cầu đã liệt kê về atomic, AoS/SoA, chèn, view, stream, sizing và rehashing. Công việc chỉ được xem là hoàn tất khi có một backend dùng chung hỗ trợ các cấu hình được yêu cầu và các phần mở rộng của static_set/static_multiset.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

helps: rapids topic: performance type: feature request

Is your feature request related to a problem? Please describe.

There is a significant amount of redundancy among the static_map/static_multimap/static_reduction_map classes. This is a large maintenance overhead and means optimizations made to one data structure do not translate to the others.

Furthermore, there are several configuration options we'd like to enable, like using AoS vs SOA, scalar vs. CG operations, etc.

I'd also like to enable adding a static_set and static_multiset classes that could share the same backend.

Describe the solution you'd like

List of things I'd like to address:

  • Use atomic_ref when possible (4B/8B key/value types) #183
  • Falls back on atomic when necessary (<4B, >8B key/value types)
    • For <4B, we should probably just widen them ourselves and still use atomic_ref instead of atomic.
  • Eliminates redundancy among static_map/reduction_map/multimap
  • Enables AoS vs SoA layout (#103)
  • Enables statically sized device views
    • We should use a pattern like std::span with std::dynamic_extent to support both dynamic and statically sized capacities.
  • Enables adding static_set and static_multiset
  • Supports the various insert schemes: packed/back2back/cas+dependent write
  • Switch between scalar/CG operations
  • Stream support everywhere (https://github.com/NVIDIA/cuCollections/issues/65)
  • Consistent use of bitwise_equal
  • Asynchronous size computation (#102, #237 )
  • rehashing (https://github.com/NVIDIA/cuCollections/issues/21)

My current thinking is to create an open_address_impl class that provides an abstraction for a logical array of "slots" and exposes operations on those slots. All the core logic and switching for things like AoS/SoA, atomic_ref/atomic can/should be implemented in this common impl class.

Ngôn ngữ chính
Cuda
Star
671
Fork
122
Merge trung bình
4 ngày 19 giờ
Pull request đã merge (30 ngày)
10

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của NVIDIA/cuCollections

Tất cả issue của NVIDIA/cuCollections

Issue tương tự

Thêm issue về Backend & API Design

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.