diff --git a/dsv4/layers/shared_expert.py b/dsv4/layers/shared_expert.py index 800889e4..15267541 100644 --- a/dsv4/layers/shared_expert.py +++ b/dsv4/layers/shared_expert.py @@ -377,12 +377,13 @@ class Nvfp4SharedExpert: # DEBUG: check gsa values before assignment try: gsa_first = gsa_l2_gpu[0].item() # DEBUG: read value - print(f" SE L2 gsa[0]={gsa_first:.6f} shape={tuple(gsa_l2_gpu.shape)} buf_shape={tuple(self._l2_gsa_buf.shape)}", flush=True) + print(f" SE L2 gsa[0]={gsa_first:.6f} shape={tuple(gsa_l2_gpu.shape)} dev={gsa_l2_gpu.device} buf_dev={self._l2_gsa_buf.device} buf_shape={tuple(self._l2_gsa_buf.shape)}", flush=True) + # Try copy_ instead of scalar assign + self._l2_gsa_buf.copy_(gsa_l2_gpu[:1].contiguous()) + print(f" SE L2 gsa copy_ succeeded", flush=True) except RuntimeError as e: - print(f" SE L2: gsa[0].item() FAILED: {e}", flush=True) + print(f" SE L2: gsa assignment FAILED: {e}", flush=True) raise - # Copy first element of gsa to pre-allocated buffer. - self._l2_gsa_buf[0] = gsa_l2_gpu[0] # scalar GPU → GPU, no sync, graph-capturable else: x_fp4, x_sf = quantize_activation_nvfp4( intermediate, self._l2_activation_global_scale