arch: close open question §6.6 — events as default for cross-process sync
См. spike-v2 (commit ad54305) + arch review 2026-05-15.
cudaStreamSynchronize-only фактически работает на single-host single-GPU
(0 torn в 4 scenarios PoC), но NVIDIA Programming Guide §3.2.8 не даёт
contractual гарантии. Переключаемся на cudaIpcEventHandle_t как default,
stream-sync остаётся опциональным fallback.
Net: +20µs mean latency, -3× max latency (predictable tail), future-proof
для multi-GPU.
This commit is contained in:
+10
-3
@@ -371,9 +371,16 @@ encoding между процессами. cuframes делает это zero-copy
|
||||
5. **Multi-GPU.** Producer и consumer на разных CUDA devices — CUDA IPC
|
||||
ограничивает same device. В v1 — ограничение, документировать.
|
||||
|
||||
6. **Sync semantics.** `cudaStreamSynchronize` гарантирует correctness но
|
||||
serialize'ит producer. CUDA IPC events дают overlap, но complicate API.
|
||||
Default: stream sync. Advanced flag: events.
|
||||
6. **Sync semantics.** ✅ **РЕШЕНО** (architectural review 2026-05-15 + spike-v2):
|
||||
Default — **CUDA IPC events** (`cudaIpcEventHandle_t`). Rationale:
|
||||
- NVIDIA Programming Guide §3.2.8 явно требует cross-process sync на стороне
|
||||
application; `cudaStreamSynchronize` producer'а гарантий не даёт contractually.
|
||||
- Spike-v2 measurements (`docs/measurements/spike-v2/`) показали: на нашем
|
||||
single-host single-GPU setup stream-only sync **работает** (0 torn frames
|
||||
на 1500 frames × 4 scenarios), но это **happens-to-work**, не contract.
|
||||
- Events добавляют mean +20µs overhead но дают **predictable tail latency**
|
||||
(max 5.2ms vs 14.7ms для FHD@60fps) и future-proof для multi-GPU.
|
||||
- API option `--sync=stream` оставлен как fallback для legacy / debugging.
|
||||
|
||||
7. **Где хостить.** GitHub `<personal-org>/cuframes`. Возможно перенос в
|
||||
`frigate-community/cuframes` после adoption.
|
||||
|
||||
Reference in New Issue
Block a user