gx
|
604cffb5e5
|
spike(phase0): minimal CUDA IPC ping-pong producer/consumer
PoC для validation концепта перед инвестированием в Phase 1.
Структура:
- tools/spike/common.h — типы SharedHeader / SlotDescriptor / NV12 meta
- tools/spike/pingpong_producer.cu — аллоцирует CUDA pool, экспортирует IPC handles
в /dev/shm/cuframes-spike-<key>, имитирует publish frames с monotonic pattern
- tools/spike/pingpong_consumer.cu — открывает handles, читает frames,
verify содержимого (no torn frames), измеряет latency, печатает summary
- tools/spike/CMakeLists.txt — sm_75/86/89/90/120 для RTX 5090
- tools/spike/bench.sh — basic / multi-consumer / stress scenarios
- tools/spike/README.md — what / how / acceptance
Намеренные упрощения PoC (не идём в Phase 1 пока без validation):
- 2-slot ring (Phase 1 будет N)
- POSIX shared memory + atomic seq (без Unix socket handshake)
- cudaStreamSynchronize sync (Phase 0 spike проверит будет ли достаточно;
альтернатива cudaIpcEventHandle_t — отложена)
- NV12 hardcoded (других форматов в Phase 1)
- Drop-oldest backpressure (без ACK protocol)
Acceptance Phase 0:
- p99 latency на RTX 5090 для FullHD < 5 ms
- throughput ≥ 1 GB/s
- multi-consumer (3) с сопоставимой latency
- cross-container работает
- 1-hour stress без VRAM/RAM leak
Если acceptance fail → дизайн пересмотр (sync через CUDA IPC events).
|
2026-05-14 21:20:39 +01:00 |
|