Skip to content

Commit c042c2c

Browse files
authored
[API Compatibility] support device.func = place.func (PaddlePaddle#78350)
* device.func = place.func Author: fanxiangyu <fxyfxy777@163.com> Date: Wed Mar 18 17:22:11 2026 +0800 * device.func = place.func Author: fanxiangyu <fxyfxy777@163.com> Date: Wed Mar 18 17:22:11 2026 +0800 * fix ut error on mac
1 parent ef8f0fe commit c042c2c

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

python/paddle/device/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2206,6 +2206,9 @@ def __exit__(self, exc_type, exc_val, exc_tb):
22062206
previous_device = Device._DEFAULT_DEVICE_STACK.pop()
22072207
paddle.set_device(previous_device)
22082208

2209+
def __getattr__(self, name: str):
2210+
return getattr(self._to_place(), name)
2211+
22092212

22102213
class _DeviceModule(types.ModuleType):
22112214
"""A callable package module: paddle.device(...) -> Device(...)"""

test/legacy_test/test_paddle_device.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,24 @@ def test_invalid_type(self):
104104
with self.assertRaises(ValueError):
105105
Device("abc:0")
106106

107+
def test_getattr_forward_to_place(self):
108+
# Test that unknown attributes are forwarded to paddle.Place
109+
d_cpu = Device("cpu")
110+
self.assertTrue(d_cpu.is_cpu_place())
111+
self.assertFalse(d_cpu.is_gpu_place())
112+
self.assertFalse(d_cpu.is_xpu_place())
113+
114+
# Test CUDA device methods
115+
if paddle.device.is_available() and paddle.is_compiled_with_cuda():
116+
d_cuda = Device("cuda:0")
117+
self.assertFalse(d_cuda.is_cpu_place())
118+
self.assertTrue(d_cuda.is_gpu_place())
119+
self.assertEqual(d_cuda.gpu_device_id(), 0)
120+
121+
d_gpu = Device("gpu:0")
122+
self.assertTrue(d_gpu.is_gpu_place())
123+
self.assertEqual(d_gpu.gpu_device_id(), 0)
124+
107125

108126
if __name__ == "__main__":
109127
unittest.main()

0 commit comments

Comments
 (0)