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.

external.py 2.3 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # -*- coding: utf-8 -*-
  2. # MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
  3. #
  4. # Copyright (c) 2014-2020 Megvii Inc. All rights reserved.
  5. #
  6. # Unless required by applicable law or agreed to in writing,
  7. # software distributed under the License is distributed on an
  8. # "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  9. # pylint: disable=too-many-lines
  10. from typing import List
  11. import megengine._internal as mgb
  12. from ..core import Tensor, wrap_io_tensor
  13. @wrap_io_tensor
  14. def cambricon_subgraph(
  15. inputs: List[Tensor], data: bytes, symbol: str, tensor_dim_mutable: bool,
  16. ) -> List[Tensor]:
  17. """Load a serialized Cambricon subgraph (i.e. cnrtModel_t) and
  18. execute the operations defined in the subgraph.
  19. :param inputs: List of input tensors of the subgraph.
  20. :param data: The serialized subgraph.
  21. :param symbol: The name of the function in the subgraph.
  22. The function is corresponding to a cnmlFusionOp
  23. which is added to the cnmlModel_t/cnrtModel_t.
  24. :param tensor_dim_mutable: Whether the input tensors' shapes are mutalbe
  25. in cnrtModel_t
  26. """
  27. return mgb.opr.cambricon_runtime(
  28. data, symbol, tuple(map(lambda x: x._symvar, inputs)), tensor_dim_mutable
  29. )
  30. @wrap_io_tensor
  31. def atlas_subgraph(inputs: List[Tensor], data: bytes) -> List[Tensor]:
  32. """Load a serialized Atlas subgraph (i.e. om model) and
  33. execute the operations defined in the subgraph.
  34. :param inputs: List of input tensors of the subgraph.
  35. :param data: The serialized subgraph.
  36. """
  37. return mgb.opr.atlas_runtime(tuple(map(lambda x: x._symvar, inputs)), data)
  38. @wrap_io_tensor
  39. def extern_opr_subgraph(
  40. inputs, output_shapes: List[tuple], dump_name: str, dump_data: bytes,
  41. ) -> List[Tensor]:
  42. """Load a serialized extern opr subgraph and fake execute the operator
  43. :param inputs: Tensor or list of input tensors.
  44. :param output_shapes: The output shapes.
  45. :param dump_name: The serialized subgraph name.
  46. :param dump_data: The serialized subgraph.
  47. :return: List of tensors
  48. """
  49. if not isinstance(inputs, list):
  50. inputs = [inputs]
  51. return mgb.opr.extern_c_opr_placeholder(
  52. inputs, output_shapes, dump_name=dump_name, dump_data=dump_data,
  53. )

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