You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

_wrap.py 1.2 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. # -*- coding: utf-8 -*-
  2. import numpy as np
  3. from ._imperative_rt import CompNode
  4. from ._imperative_rt.core2 import set_py_device_type
  5. class Device:
  6. def __init__(self, device=None):
  7. if device is None:
  8. self._cn = CompNode()
  9. elif isinstance(device, Device):
  10. self._cn = device._cn
  11. elif isinstance(device, CompNode):
  12. self._cn = device
  13. else:
  14. self._cn = CompNode(device)
  15. self._logical_name = None
  16. @property
  17. def logical_name(self):
  18. if self._logical_name:
  19. return self._logical_name
  20. self._logical_name = self._cn.logical_name
  21. return self._logical_name
  22. def to_c(self):
  23. return self._cn
  24. def __repr__(self):
  25. return "{}({})".format(type(self).__qualname__, repr(self._cn))
  26. def __str__(self):
  27. return str(self._cn)
  28. def __hash__(self):
  29. return hash(str(self._cn))
  30. def __eq__(self, rhs):
  31. if not isinstance(rhs, Device):
  32. rhs = Device(rhs)
  33. return self._cn == rhs._cn
  34. def as_device(obj):
  35. if isinstance(obj, Device):
  36. return obj
  37. return Device(obj)
  38. set_py_device_type(Device)