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.

xmethods.py 1.5 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import re
  2. import gdb
  3. import gdb.types
  4. import gdb.xmethod
  5. class SmallVectorImplWorker_at(gdb.xmethod.XMethodWorker):
  6. def __init__(self, t):
  7. self.t = t
  8. def get_arg_types(self):
  9. return gdb.lookup_type('int')
  10. def get_result_type(self, *args):
  11. return self.t
  12. def __call__(self, obj, i):
  13. return (obj['m_begin_ptr'].cast(self.t.pointer()) + i).dereference()
  14. class SmallVectorImplWorker_size(gdb.xmethod.XMethodWorker):
  15. def __init__(self, t):
  16. self.t = t
  17. def get_arg_types(self):
  18. return None
  19. def get_result_type(self, *args):
  20. return gdb.lookup_type('int')
  21. def __call__(self, obj):
  22. return obj['m_end_ptr'].cast(self.t.pointer()) - obj['m_begin_ptr'].cast(self.t.pointer())
  23. class SmallVectorImplMatcher(gdb.xmethod.XMethodMatcher):
  24. def __init__(self):
  25. super().__init__('SmallVectorImplMatcher')
  26. def match(self, class_type, method_name):
  27. if re.match('^megdnn::SmallVector(Impl)?<.*>',
  28. class_type.tag):
  29. if method_name == 'at':
  30. return SmallVectorImplWorker_at(class_type.template_argument(0))
  31. if method_name == 'operator[]':
  32. return SmallVectorImplWorker_at(class_type.template_argument(0))
  33. if method_name == 'size':
  34. return SmallVectorImplWorker_size(class_type.template_argument(0))
  35. gdb.xmethod.register_xmethod_matcher(None, SmallVectorImplMatcher())

MegEngine 安装包中集成了使用 GPU 运行代码所需的 CUDA 环境,不用区分 CPU 和 GPU 版。 如果想要运行 GPU 程序,请确保机器本身配有 GPU 硬件设备并安装好驱动。 如果你想体验在云端 GPU 算力平台进行深度学习开发的感觉,欢迎访问 MegStudio 平台