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.

custom.py 1.1 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. # -*- coding: utf-8 -*-
  2. # MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
  3. #
  4. # Copyright (c) 2014-2021 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. import os
  10. from .._imperative_rt.ops._custom import (
  11. _get_custom_op_list,
  12. _install,
  13. _make_custom_op,
  14. _uninstall,
  15. get_custom_op_abi_tag,
  16. )
  17. __all__ = ["load"]
  18. def _gen_custom_op_maker(custom_op_name):
  19. def op_maker(**kwargs):
  20. return _make_custom_op(custom_op_name, kwargs)
  21. return op_maker
  22. def load(lib_path):
  23. lib_path = os.path.abspath(lib_path)
  24. lib_name = os.path.splitext(lib_path)[0]
  25. op_in_this_lib = _install(lib_name, lib_path)
  26. for op in op_in_this_lib:
  27. op_maker = _gen_custom_op_maker(op)
  28. globals()[op] = op_maker
  29. __all__.append(op)
  30. def unload(lib_path):
  31. lib_path = os.path.abspath(lib_path)
  32. lib_name = os.path.splitext(lib_path)[0]
  33. _uninstall(lib_name)