cuda.core: support "3D copies with attributes" (follow-on to issue #2365)
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
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- python
- Lĩnh vực
- backend-api-design
Hướng nghiên cứu
Bắt đầu bằng cách đọc phần triển khai từ #2636 và phần plumbing _memory.copy_enums hiện có, sau đó xem xét StridedMemoryView và texture.Array/MipmappedArray. Hãy giải quyết trước khi triển khai các câu hỏi thiết kế về các kiểu toán hạng được hỗ trợ, cách suy ra pitch và extent, cũng như hành vi theo phiên bản/khi có lỗi. Được xem là hoàn tất khi đã xác định API cho các phép sao chép 3D mang thuộc tính, cùng với gating CUDA 13.2 tương ứng và các kiểm tra an toàn.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
#2365 tracked two CUDA 13.2 attribute-carrying copy entry points together. #2636 implemented the flat 1D case (cuMemcpyWithAttributesAsync, exposed via Buffer.copy_to/Buffer.copy_from's new options keyword). This issue splits off the remaining, unimplemented half:
cuMemcpy3DWithAttributesAsync(CUDA_MEMCPY3D_BATCH_OP* op, unsigned long long flags, CUstream)— executes a single 3D copy operation described by aCUDA_MEMCPY3D_BATCH_OP, reusing theCUmemcpySrcAccessOrder/CUmemcpyFlagsmachinery already introduced forcuMemcpyBatchAsync(12.8) and consumed by#2636'sCopyOptions.
cuda.core has no API for 3D/strided copies with attributes today.
Underlying C API
cuMemcpy3DWithAttributesAsync (CUDA 13.2). Takes a single CUDA_MEMCPY3D_BATCH_OP:
src,dst:CUmemcpy3DOperand, each either a raw pointer operand (base pointer + row/depth pitch, matching a strided/3D buffer layout) or a CUDA array operand (CUarray/CUmipmappedArray+ subresource).extent:CUextent3D(width/height/depth), all three components must be nonzero.srcAccessOrder:CUmemcpySrcAccessOrder— the same three-way hint (STREAM/DURING_API_CALL/ANY) as the 1D and batched entry points.flags:CUmemcpyFlags(e.g.CU_MEMCPY_FLAG_PREFER_OVERLAP_WITH_COMPUTE), same as the other attribute-carrying copies.
Relation to #2636
Should reuse as much of #2636's plumbing as possible rather than duplicating it:
MemcpySrcAccessOrder/MemcpyOverlapMode(cuda.core._memory._copy_enums) — same enums, no new ones needed for those two fields.- The
DURING_API_CALLfallback hazard and its guard,_reject_unsupported_during_api_call— the pointer-operand fallback (if any) would have the same correctness hazard as the 1D/batched paths and needs the same treatment, not a silently-downgraded copy. - The
_with_attributes_available()-style CUDA 13.2 version gate, and the graph-capture /LEGACY_DEFAULT_STREAMrejection pattern established there.
Design sketch (draft — needs design-meeting review)
[!IMPORTANT]
Starting point only, not a settled design.
cuda.core already has StridedMemoryView with copy_to/copy_from, and separately texture.Array/texture.MipmappedArray for CUDA-array-backed storage. The pointer-operand case maps naturally onto a strided/3D buffer view; the array-operand case maps onto the existing texture array types. Open questions for the meeting:
- Does this become
StridedMemoryView.copy_to/copy_fromgaining anoptionskeyword (pointer operands), a new API for the array-operand case, or both under one entry point? - How do row/depth pitch and extent get derived: from
StridedMemoryView's shape/strides directly, or does the caller supply them explicitly? - Should mixed operand kinds be supported in one call (e.g. array → pointer), or should the initial version only cover the common pointer-to-pointer case?
- Version gating (CUDA 13.2+) and error behavior, matching the pattern established in #2636.
- Separate PR from any future
cuMemcpy3DBatchAsync(multiple 3D ops per call) work, if that ever gets tracked.
References
- Driver docs: https://docs.nvidia.com/cuda/cuda-driver-api/
- Parent issue: #2365
- Implements the 1D half: #2636
- Ngôn ngữ chính
- Cython
- Star
- 3.4k
- Fork
- 329
- Merge trung bình
- 1 ngày 21 giờ
- Pull request đã merge (30 ngày)
- 113
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của NVIDIA/cuda-python
-
bug cuda.core
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
NVIDIA/cuda-python#2886 · 1 bình luận ·
-
triage
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
NVIDIA/cuda-python#2717 ·
-
triage
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 90/100
NVIDIA/cuda-python#2712 ·
-
[BUG]: LocatedHeaderDir is mutable, so callers can poison the cached header-directory lookup Đang mởtriage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
NVIDIA/cuda-python#2646 · 1 reaction ·
-
cuda.core triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
NVIDIA/cuda-python#2435 · 1 bình luận ·
Tất cả issue của NVIDIA/cuda-python
Issue tương tự
-
area/sessions comp/cron comp/gateway P2 sweeper:risk-message-delivery sweeper:risk-session-state type/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
NousResearch/hermes-agent#118863 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
use-agent-os/agent-os#3312 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
-
needs-acceptance wg/data-plane-networking
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
vllm-project/semantic-router#4024 · 1 bình luận ·