From 1cb9c3ac8af854aa7108ae40ee314b51130a07cd Mon Sep 17 00:00:00 2001 From: giles Date: Wed, 4 Feb 2026 02:06:19 +0000 Subject: [PATCH] Add DLPack debug logging to diagnose zero-copy Co-Authored-By: Claude Opus 4.5 --- sexp_effects/primitive_libs/streaming_gpu.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sexp_effects/primitive_libs/streaming_gpu.py b/sexp_effects/primitive_libs/streaming_gpu.py index 3e76b34..8760a6d 100644 --- a/sexp_effects/primitive_libs/streaming_gpu.py +++ b/sexp_effects/primitive_libs/streaming_gpu.py @@ -336,9 +336,16 @@ class GPUVideoSource: # This keeps the frame on GPU without any CPU transfer try: gpu_frame = cp.from_dlpack(frame_tensor) + # Log success once per source + if not getattr(self, '_dlpack_logged', False): + print(f"[GPUVideoSource] DLPack zero-copy SUCCESS - frames stay on GPU", file=sys.stderr) + self._dlpack_logged = True return GPUFrame(gpu_frame, on_gpu=True) - except Exception: + except Exception as dlpack_err: # Fallback: convert via numpy (involves CPU copy) + if not getattr(self, '_dlpack_fail_logged', False): + print(f"[GPUVideoSource] DLPack FAILED ({dlpack_err}), using CPU copy fallback", file=sys.stderr) + self._dlpack_fail_logged = True frame_np = frame_tensor.asnumpy() return GPUFrame(frame_np, on_gpu=True) else: