mirror of
https://github.com/luxfi/zap.git
synced 2026-10-30 15:04:16 +00:00
Three orthogonal additions, one wire format. v2 package — generic ad-hoc schema dispatch (~/work/lux/zap/v2): - README + IMPOSSIBILITY + BENCH_RESULTS document the v1↔v2 split. - builder/field/iter/list/pool/registry/schema/view + codegen package emit v1-equivalent fast paths from declarative .zap sources. - _compile_fail_test/ + examples/ cover negative and positive cases. - v2_test.go exercises the generic dispatch path. - doc.go in v1 marks v1 deprecated for *new* schema authoring; existing v1 buffers stay parseable by both v1 and v2. bufpool — pooled read slabs (bufpool.go + bufpool_test.go): - Message gains optional *bufRef; Release() returns the slab to its pool when sourced from the pooled read path, GC-managed otherwise. - ParseHeader returns (data, rootOffset) without allocating *Message, used by zapv2 to avoid two allocations per parse. - bench_read_test.go + node_quic_stream_test.go cover both paths. Transport allocator + UMA/RDMA cgo (transport/*): - Transport.Caps()/Buffer interface: capability + slab-typed buffer contract. Bytes() vs DevicePtr() decoupled so UMA and GPUDirect can share the same call surface. - DPDK PMD + GPUDirect RDMA + CUDA UMA real cgo backends gated behind build tags; stub paths remain default on darwin / non-Linux. - transport_test.go covers Caps reporting + Buffer lifecycle on the default transport. LLM.md + go.mod follow the additions.
31 lines
1.5 KiB
Go
31 lines
1.5 KiB
Go
// Copyright (C) 2025-2026, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package transport
|
|
|
|
// gpudirect.go is the cross-platform doc comment for the NVIDIA
|
|
// GPUDirect RDMA transport. The factory lives in:
|
|
//
|
|
// gpudirect_linux_real.go — //go:build cgo && linux && gpudirect && cuda
|
|
// Real ibverbs + nvidia-peermem probe, DMA-buf MR registration.
|
|
// gpudirect_linux.go — //go:build cgo && linux && !(gpudirect && cuda)
|
|
// Clean "not available" when the tags aren't set.
|
|
// gpudirect_other.go — //go:build !cgo || !linux
|
|
// Clean "not available" off-Linux or without cgo.
|
|
//
|
|
// Hardware prerequisites (probed at construction; missing prereqs cause
|
|
// a clean fall-through to the next-best transport):
|
|
//
|
|
// - NVIDIA GPU with GPUDirect RDMA support (Hopper, Ada, Ampere; GB10
|
|
// does NOT have GPUDirect RDMA — falls through to UMA, which is fine
|
|
// because GB10 has UMA at the chip level via NVLink-C2C).
|
|
// - Mellanox / NVIDIA ConnectX-6+ HCA. Required for IBV_DEVICE_RAW_
|
|
// PACKET, which is the gate for putting the NIC into raw mode.
|
|
// - Linux kernel with nvidia_peermem module loaded (`modprobe
|
|
// nvidia-peermem`). Without this, ibv_reg_dmabuf_mr will fail.
|
|
// - libibverbs userspace (`apt install libibverbs-dev` on Ubuntu).
|
|
//
|
|
// Reference architecture: NVIDIA DOCA GPUNetIO + Holoscan transport.
|
|
// Packets DMA from NIC into VRAM, GPU kernel parses ZAP header in place,
|
|
// CPU is never touched on the receive path.
|