From 8a20062652472190c7150b4022bd83048cb491d6 Mon Sep 17 00:00:00 2001 From: iridiumine <42236072+iridiumine@users.noreply.github.com> Date: Tue, 15 Sep 2026 14:59:31 +0800 Subject: [PATCH] [NPU][Bugfix] Disable pinned memory to fix DeepSeek-V2 DP-attention hang (#39423) --- python/sglang/srt/platforms/npu.py | 4 +--- .../registered/unit/platforms/test_platform_interface.py | 9 ++++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/python/sglang/srt/platforms/npu.py b/python/sglang/srt/platforms/npu.py index c1382ff76..d01220efb 100644 --- a/python/sglang/srt/platforms/npu.py +++ b/python/sglang/srt/platforms/npu.py @@ -56,9 +56,7 @@ class NPUDeviceMixin(DeviceMixin): return torch.npu.mem_get_info(device_id) def is_pin_memory_available(self, device=None) -> bool: - if device is not None and str(device) == "cpu": - return False - return True + return False @classmethod def seed_everything(cls, seed: int | None = None) -> None: diff --git a/test/registered/unit/platforms/test_platform_interface.py b/test/registered/unit/platforms/test_platform_interface.py index 5614dd7f0..cd9548672 100644 --- a/test/registered/unit/platforms/test_platform_interface.py +++ b/test/registered/unit/platforms/test_platform_interface.py @@ -381,10 +381,13 @@ class TestNpuDeviceMixin(CustomTestCase): mock_npu.synchronize.assert_called_once() def test_pin_memory_available_for_npu_targets(self): + # Pinned memory stays disabled on NPU: torch_npu's pinned-memory + + # non_blocking H2D path is not verified against CANN (see + # NPUSRTPlatform.is_pin_memory_available). base = NPUSRTPlatform() - self.assertTrue(base.is_pin_memory_available()) - self.assertTrue(base.is_pin_memory_available(device="npu")) - self.assertTrue(base.is_pin_memory_available(device=torch.device("npu", 0))) + self.assertFalse(base.is_pin_memory_available()) + self.assertFalse(base.is_pin_memory_available(device="npu")) + self.assertFalse(base.is_pin_memory_available(device=torch.device("npu", 0))) self.assertFalse(base.is_pin_memory_available(device="cpu")) self.assertFalse(base.is_pin_memory_available(device=torch.device("cpu")))