bigdl-core-npu 2.5.0__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. bigdl_core_npu-2.5.0.dist-info/METADATA +35 -0
  2. bigdl_core_npu-2.5.0.dist-info/RECORD +223 -0
  3. bigdl_core_npu-2.5.0.dist-info/WHEEL +5 -0
  4. bigdl_core_npu-2.5.0.dist-info/top_level.txt +1 -0
  5. intel_npu_acceleration_library/__init__.py +24 -0
  6. intel_npu_acceleration_library/_version.py +6 -0
  7. intel_npu_acceleration_library/backend/__init__.py +37 -0
  8. intel_npu_acceleration_library/backend/base.py +215 -0
  9. intel_npu_acceleration_library/backend/bindings.py +279 -0
  10. intel_npu_acceleration_library/backend/compression.py +24 -0
  11. intel_npu_acceleration_library/backend/convolution.py +58 -0
  12. intel_npu_acceleration_library/backend/factory.py +944 -0
  13. intel_npu_acceleration_library/backend/linear.py +60 -0
  14. intel_npu_acceleration_library/backend/matmul.py +59 -0
  15. intel_npu_acceleration_library/backend/mlp.py +58 -0
  16. intel_npu_acceleration_library/backend/ops.py +141 -0
  17. intel_npu_acceleration_library/backend/qlinear.py +71 -0
  18. intel_npu_acceleration_library/backend/qmatmul.py +66 -0
  19. intel_npu_acceleration_library/backend/runtime.py +210 -0
  20. intel_npu_acceleration_library/backend/sdpa.py +107 -0
  21. intel_npu_acceleration_library/backend/tensor.py +1050 -0
  22. intel_npu_acceleration_library/backend/utils.py +70 -0
  23. intel_npu_acceleration_library/compiler.py +194 -0
  24. intel_npu_acceleration_library/device.py +230 -0
  25. intel_npu_acceleration_library/dtypes.py +122 -0
  26. intel_npu_acceleration_library/external/openvino/__init__.py +71 -0
  27. intel_npu_acceleration_library/external/openvino/_offline_transformations/__init__.py +20 -0
  28. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp310-win_amd64.pyd +0 -0
  29. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp311-win_amd64.pyd +0 -0
  30. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp312-win_amd64.pyd +0 -0
  31. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp38-win_amd64.pyd +0 -0
  32. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp39-win_amd64.pyd +0 -0
  33. intel_npu_acceleration_library/external/openvino/frontend/__init__.py +34 -0
  34. intel_npu_acceleration_library/external/openvino/frontend/frontend.py +44 -0
  35. intel_npu_acceleration_library/external/openvino/frontend/onnx/__init__.py +15 -0
  36. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp310-win_amd64.pyd +0 -0
  37. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp311-win_amd64.pyd +0 -0
  38. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp312-win_amd64.pyd +0 -0
  39. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp38-win_amd64.pyd +0 -0
  40. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp39-win_amd64.pyd +0 -0
  41. intel_npu_acceleration_library/external/openvino/frontend/paddle/__init__.py +15 -0
  42. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp310-win_amd64.pyd +0 -0
  43. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp311-win_amd64.pyd +0 -0
  44. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp312-win_amd64.pyd +0 -0
  45. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp38-win_amd64.pyd +0 -0
  46. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp39-win_amd64.pyd +0 -0
  47. intel_npu_acceleration_library/external/openvino/frontend/pytorch/__init__.py +19 -0
  48. intel_npu_acceleration_library/external/openvino/frontend/pytorch/fx_decoder.py +352 -0
  49. intel_npu_acceleration_library/external/openvino/frontend/pytorch/gptq.py +139 -0
  50. intel_npu_acceleration_library/external/openvino/frontend/pytorch/module_extension.py +39 -0
  51. intel_npu_acceleration_library/external/openvino/frontend/pytorch/patch_model.py +98 -0
  52. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp310-win_amd64.pyd +0 -0
  53. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp311-win_amd64.pyd +0 -0
  54. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp312-win_amd64.pyd +0 -0
  55. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp38-win_amd64.pyd +0 -0
  56. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp39-win_amd64.pyd +0 -0
  57. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend.py +119 -0
  58. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend_utils.py +85 -0
  59. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/compile.py +141 -0
  60. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/decompositions.py +116 -0
  61. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/execute.py +189 -0
  62. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/op_support.py +289 -0
  63. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/partition.py +118 -0
  64. intel_npu_acceleration_library/external/openvino/frontend/pytorch/ts_decoder.py +536 -0
  65. intel_npu_acceleration_library/external/openvino/frontend/pytorch/utils.py +256 -0
  66. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/__init__.py +16 -0
  67. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/graph_iterator.py +116 -0
  68. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/node_decoder.py +219 -0
  69. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp310-win_amd64.pyd +0 -0
  70. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp311-win_amd64.pyd +0 -0
  71. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp312-win_amd64.pyd +0 -0
  72. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp38-win_amd64.pyd +0 -0
  73. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp39-win_amd64.pyd +0 -0
  74. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/utils.py +460 -0
  75. intel_npu_acceleration_library/external/openvino/helpers/__init__.py +6 -0
  76. intel_npu_acceleration_library/external/openvino/helpers/packing.py +87 -0
  77. intel_npu_acceleration_library/external/openvino/preprocess/README.md +60 -0
  78. intel_npu_acceleration_library/external/openvino/preprocess/__init__.py +26 -0
  79. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/__init__.py +15 -0
  80. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/preprocess_converter.py +47 -0
  81. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/requirements.txt +4 -0
  82. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/torchvision_preprocessing.py +347 -0
  83. intel_npu_acceleration_library/external/openvino/properties/__init__.py +21 -0
  84. intel_npu_acceleration_library/external/openvino/properties/_properties.py +55 -0
  85. intel_npu_acceleration_library/external/openvino/properties/device/__init__.py +14 -0
  86. intel_npu_acceleration_library/external/openvino/properties/hint/__init__.py +15 -0
  87. intel_npu_acceleration_library/external/openvino/properties/intel_auto/__init__.py +12 -0
  88. intel_npu_acceleration_library/external/openvino/properties/intel_cpu/__init__.py +8 -0
  89. intel_npu_acceleration_library/external/openvino/properties/intel_gpu/__init__.py +12 -0
  90. intel_npu_acceleration_library/external/openvino/properties/intel_gpu/hint/__init__.py +11 -0
  91. intel_npu_acceleration_library/external/openvino/properties/log/__init__.py +11 -0
  92. intel_npu_acceleration_library/external/openvino/properties/streams/__init__.py +11 -0
  93. intel_npu_acceleration_library/external/openvino/runtime/__init__.py +85 -0
  94. intel_npu_acceleration_library/external/openvino/runtime/exceptions.py +17 -0
  95. intel_npu_acceleration_library/external/openvino/runtime/ie_api.py +631 -0
  96. intel_npu_acceleration_library/external/openvino/runtime/op/__init__.py +18 -0
  97. intel_npu_acceleration_library/external/openvino/runtime/op/util/__init__.py +22 -0
  98. intel_npu_acceleration_library/external/openvino/runtime/opset1/__init__.py +112 -0
  99. intel_npu_acceleration_library/external/openvino/runtime/opset1/ops.py +3067 -0
  100. intel_npu_acceleration_library/external/openvino/runtime/opset10/__init__.py +179 -0
  101. intel_npu_acceleration_library/external/openvino/runtime/opset10/ops.py +173 -0
  102. intel_npu_acceleration_library/external/openvino/runtime/opset11/__init__.py +179 -0
  103. intel_npu_acceleration_library/external/openvino/runtime/opset11/ops.py +107 -0
  104. intel_npu_acceleration_library/external/openvino/runtime/opset12/__init__.py +180 -0
  105. intel_npu_acceleration_library/external/openvino/runtime/opset12/ops.py +120 -0
  106. intel_npu_acceleration_library/external/openvino/runtime/opset13/__init__.py +188 -0
  107. intel_npu_acceleration_library/external/openvino/runtime/opset13/ops.py +399 -0
  108. intel_npu_acceleration_library/external/openvino/runtime/opset14/__init__.py +190 -0
  109. intel_npu_acceleration_library/external/openvino/runtime/opset14/ops.py +171 -0
  110. intel_npu_acceleration_library/external/openvino/runtime/opset15/__init__.py +10 -0
  111. intel_npu_acceleration_library/external/openvino/runtime/opset15/ops.py +85 -0
  112. intel_npu_acceleration_library/external/openvino/runtime/opset2/__init__.py +118 -0
  113. intel_npu_acceleration_library/external/openvino/runtime/opset2/ops.py +216 -0
  114. intel_npu_acceleration_library/external/openvino/runtime/opset3/__init__.py +134 -0
  115. intel_npu_acceleration_library/external/openvino/runtime/opset3/ops.py +638 -0
  116. intel_npu_acceleration_library/external/openvino/runtime/opset4/__init__.py +145 -0
  117. intel_npu_acceleration_library/external/openvino/runtime/opset4/ops.py +464 -0
  118. intel_npu_acceleration_library/external/openvino/runtime/opset5/__init__.py +152 -0
  119. intel_npu_acceleration_library/external/openvino/runtime/opset5/ops.py +372 -0
  120. intel_npu_acceleration_library/external/openvino/runtime/opset6/__init__.py +154 -0
  121. intel_npu_acceleration_library/external/openvino/runtime/opset6/ops.py +189 -0
  122. intel_npu_acceleration_library/external/openvino/runtime/opset7/__init__.py +158 -0
  123. intel_npu_acceleration_library/external/openvino/runtime/opset7/ops.py +169 -0
  124. intel_npu_acceleration_library/external/openvino/runtime/opset8/__init__.py +169 -0
  125. intel_npu_acceleration_library/external/openvino/runtime/opset8/ops.py +783 -0
  126. intel_npu_acceleration_library/external/openvino/runtime/opset9/__init__.py +175 -0
  127. intel_npu_acceleration_library/external/openvino/runtime/opset9/ops.py +341 -0
  128. intel_npu_acceleration_library/external/openvino/runtime/opset_utils.py +22 -0
  129. intel_npu_acceleration_library/external/openvino/runtime/passes/__init__.py +19 -0
  130. intel_npu_acceleration_library/external/openvino/runtime/passes/graph_rewrite.py +33 -0
  131. intel_npu_acceleration_library/external/openvino/runtime/passes/manager.py +26 -0
  132. intel_npu_acceleration_library/external/openvino/runtime/properties/__init__.py +38 -0
  133. intel_npu_acceleration_library/external/openvino/runtime/properties/hint/__init__.py +25 -0
  134. intel_npu_acceleration_library/external/openvino/runtime/utils/__init__.py +7 -0
  135. intel_npu_acceleration_library/external/openvino/runtime/utils/broadcasting.py +44 -0
  136. intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/__init__.py +8 -0
  137. intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/data_dispatcher.py +429 -0
  138. intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/wrappers.py +148 -0
  139. intel_npu_acceleration_library/external/openvino/runtime/utils/decorators.py +70 -0
  140. intel_npu_acceleration_library/external/openvino/runtime/utils/input_validation.py +133 -0
  141. intel_npu_acceleration_library/external/openvino/runtime/utils/node_factory.py +127 -0
  142. intel_npu_acceleration_library/external/openvino/runtime/utils/reduction.py +25 -0
  143. intel_npu_acceleration_library/external/openvino/runtime/utils/types.py +175 -0
  144. intel_npu_acceleration_library/external/openvino/tools/__init__.py +4 -0
  145. intel_npu_acceleration_library/external/openvino/tools/benchmark/__init__.py +3 -0
  146. intel_npu_acceleration_library/external/openvino/tools/benchmark/benchmark.py +186 -0
  147. intel_npu_acceleration_library/external/openvino/tools/benchmark/main.py +695 -0
  148. intel_npu_acceleration_library/external/openvino/tools/benchmark/parameters.py +199 -0
  149. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/__init__.py +3 -0
  150. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/constants.py +26 -0
  151. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/inputs_filling.py +482 -0
  152. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/logging.py +8 -0
  153. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/statistics_report.py +296 -0
  154. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/utils.py +836 -0
  155. intel_npu_acceleration_library/external/openvino/tools/ovc/__init__.py +20 -0
  156. intel_npu_acceleration_library/external/openvino/tools/ovc/__main__.py +10 -0
  157. intel_npu_acceleration_library/external/openvino/tools/ovc/cli_parser.py +633 -0
  158. intel_npu_acceleration_library/external/openvino/tools/ovc/convert.py +102 -0
  159. intel_npu_acceleration_library/external/openvino/tools/ovc/convert_data_type.py +82 -0
  160. intel_npu_acceleration_library/external/openvino/tools/ovc/convert_impl.py +536 -0
  161. intel_npu_acceleration_library/external/openvino/tools/ovc/environment_setup_utils.py +50 -0
  162. intel_npu_acceleration_library/external/openvino/tools/ovc/error.py +49 -0
  163. intel_npu_acceleration_library/external/openvino/tools/ovc/get_ov_update_message.py +16 -0
  164. intel_npu_acceleration_library/external/openvino/tools/ovc/help.py +45 -0
  165. intel_npu_acceleration_library/external/openvino/tools/ovc/logger.py +91 -0
  166. intel_npu_acceleration_library/external/openvino/tools/ovc/main.py +35 -0
  167. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/__init__.py +2 -0
  168. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/analysis.py +46 -0
  169. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/check_config.py +57 -0
  170. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/extractor.py +447 -0
  171. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/layout_utils.py +73 -0
  172. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/moc_emit_ir.py +32 -0
  173. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/offline_transformations.py +107 -0
  174. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/paddle_frontend_utils.py +83 -0
  175. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pipeline.py +246 -0
  176. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/preprocessing.py +220 -0
  177. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pytorch_frontend_utils.py +205 -0
  178. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/shape_utils.py +109 -0
  179. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/type_utils.py +82 -0
  180. intel_npu_acceleration_library/external/openvino/tools/ovc/ovc.py +13 -0
  181. intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_params.py +6 -0
  182. intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_stub.py +28 -0
  183. intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_utils.py +118 -0
  184. intel_npu_acceleration_library/external/openvino/tools/ovc/utils.py +109 -0
  185. intel_npu_acceleration_library/external/openvino/tools/ovc/version.py +80 -0
  186. intel_npu_acceleration_library/external/openvino/torch/__init__.py +5 -0
  187. intel_npu_acceleration_library/external/openvino/utils.py +98 -0
  188. intel_npu_acceleration_library/functional/__init__.py +8 -0
  189. intel_npu_acceleration_library/functional/scaled_dot_product_attention.py +47 -0
  190. intel_npu_acceleration_library/lib/Release/cache.json +113732 -0
  191. intel_npu_acceleration_library/lib/Release/intel_npu_acceleration_library.dll +0 -0
  192. intel_npu_acceleration_library/lib/Release/openvino.dll +0 -0
  193. intel_npu_acceleration_library/lib/Release/openvino_auto_batch_plugin.dll +0 -0
  194. intel_npu_acceleration_library/lib/Release/openvino_auto_plugin.dll +0 -0
  195. intel_npu_acceleration_library/lib/Release/openvino_c.dll +0 -0
  196. intel_npu_acceleration_library/lib/Release/openvino_hetero_plugin.dll +0 -0
  197. intel_npu_acceleration_library/lib/Release/openvino_intel_cpu_plugin.dll +0 -0
  198. intel_npu_acceleration_library/lib/Release/openvino_intel_gpu_plugin.dll +0 -0
  199. intel_npu_acceleration_library/lib/Release/openvino_intel_npu_plugin.dll +0 -0
  200. intel_npu_acceleration_library/lib/Release/openvino_ir_frontend.dll +0 -0
  201. intel_npu_acceleration_library/lib/Release/openvino_onnx_frontend.dll +0 -0
  202. intel_npu_acceleration_library/lib/Release/openvino_paddle_frontend.dll +0 -0
  203. intel_npu_acceleration_library/lib/Release/openvino_pytorch_frontend.dll +0 -0
  204. intel_npu_acceleration_library/lib/Release/openvino_tensorflow_frontend.dll +0 -0
  205. intel_npu_acceleration_library/lib/Release/openvino_tensorflow_lite_frontend.dll +0 -0
  206. intel_npu_acceleration_library/lib/Release/tbb12.dll +0 -0
  207. intel_npu_acceleration_library/lib/Release/tbb12_debug.dll +0 -0
  208. intel_npu_acceleration_library/lib/Release/tbbbind_2_5.dll +0 -0
  209. intel_npu_acceleration_library/lib/Release/tbbbind_2_5_debug.dll +0 -0
  210. intel_npu_acceleration_library/lib/Release/tbbmalloc.dll +0 -0
  211. intel_npu_acceleration_library/lib/Release/tbbmalloc_debug.dll +0 -0
  212. intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy.dll +0 -0
  213. intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy_debug.dll +0 -0
  214. intel_npu_acceleration_library/modelling.py +150 -0
  215. intel_npu_acceleration_library/nn/__init__.py +20 -0
  216. intel_npu_acceleration_library/nn/autograd.py +68 -0
  217. intel_npu_acceleration_library/nn/conv.py +257 -0
  218. intel_npu_acceleration_library/nn/functional.py +1207 -0
  219. intel_npu_acceleration_library/nn/linear.py +162 -0
  220. intel_npu_acceleration_library/nn/llm.py +417 -0
  221. intel_npu_acceleration_library/nn/module.py +393 -0
  222. intel_npu_acceleration_library/optimizations.py +157 -0
  223. intel_npu_acceleration_library/quantization.py +174 -0
@@ -0,0 +1,279 @@
1
+ #
2
+ # Copyright © 2024 Intel Corporation
3
+ # SPDX-License-Identifier: Apache 2.0
4
+ #
5
+
6
+ from intel_npu_acceleration_library.backend.ops import get_supported_ops
7
+ import numpy as np
8
+ import warnings
9
+ import ctypes
10
+ import sys
11
+ import os
12
+
13
+ handler = ctypes.POINTER(ctypes.c_char)
14
+ c_fp16_array = np.ctypeslib.ndpointer(dtype=np.float16, ndim=2, flags="C_CONTIGUOUS")
15
+ c_fp32_array = np.ctypeslib.ndpointer(dtype=np.float32, ndim=2, flags="C_CONTIGUOUS")
16
+ c_i8_array = np.ctypeslib.ndpointer(dtype=np.int8, ndim=2, flags="C_CONTIGUOUS")
17
+ c_u8_array = np.ctypeslib.ndpointer(dtype=np.uint8, ndim=2, flags="C_CONTIGUOUS")
18
+ c_u32_array = np.ctypeslib.ndpointer(dtype=np.uint32, ndim=1, flags="C_CONTIGUOUS")
19
+
20
+
21
+ def load_library() -> ctypes.CDLL:
22
+ """Load the Intel® NPU Acceleration Library runtime library.
23
+
24
+ Raises:
25
+ RuntimeError: an error is raised if the platform is not supported. Currently supported platforms are WIndows and Linux
26
+
27
+ Returns:
28
+ ctypes.CDLL: The loaded dynamic library
29
+ """
30
+ path = os.path.dirname(os.path.abspath(__file__))
31
+ if "openvino" in sys.modules:
32
+ warnings.warn(
33
+ "OpenVINO library is already loaded. It might interfere with NPU acceleration library if it uses an old version.",
34
+ stacklevel=2,
35
+ )
36
+
37
+ external_path = os.path.join(path, "..", "external")
38
+ sys.path.insert(0, external_path)
39
+
40
+ if sys.platform == "win32":
41
+ dll_path = os.path.join(path, "..", "lib", "Release")
42
+ os.environ["OPENVINO_LIB_PATHS"] = dll_path
43
+ os.add_dll_directory(os.path.abspath(dll_path))
44
+ # Load DLL into memory.
45
+ lib = ctypes.WinDLL(
46
+ os.path.join(dll_path, "intel_npu_acceleration_library.dll")
47
+ ) # , winmode=0)
48
+ elif sys.platform == "linux":
49
+ dll_path = os.path.join(path, "..", "lib")
50
+ sys.path.append(dll_path)
51
+ # In Linux it is required to explicitly load openvino lib
52
+ _ = ctypes.CDLL(os.path.join(dll_path, "libopenvino.so"))
53
+ lib = ctypes.CDLL(
54
+ os.path.join(dll_path, "libintel_npu_acceleration_library.so")
55
+ )
56
+ else:
57
+ raise RuntimeError(
58
+ f"Platform {sys.platform} is not supported for intel-npu-acceleration-library library"
59
+ )
60
+
61
+ return lib
62
+
63
+
64
+ def init_common(lib: ctypes.CDLL):
65
+ """Initialize common runtime bindings.
66
+
67
+ Args:
68
+ lib (ctypes.CDLL): Intel® NPU Acceleration Library runtime library
69
+ """
70
+ lib.saveModel.argtypes = [handler, ctypes.c_char_p]
71
+ lib.saveCompiledModel.argtypes = [handler, ctypes.c_char_p]
72
+
73
+ # Set input activations
74
+ lib.set_activation.argtypes = [handler, ctypes.c_void_p, ctypes.c_int]
75
+
76
+ # Set outputs activations
77
+ lib.set_output.argtypes = [handler, ctypes.c_void_p, ctypes.c_int]
78
+
79
+ # Run a linar layer
80
+ lib.run.argtypes = [handler]
81
+ lib.run.restype = ctypes.c_float
82
+
83
+ lib.run_decoders.argtypes = [ctypes.POINTER(handler), ctypes.POINTER(ctypes.c_void_p), ctypes.c_int, ctypes.c_int]
84
+ lib.run_decoders.restype = ctypes.c_float
85
+
86
+ # Common destructor
87
+ lib.destroyNNFactory.argtypes = [handler]
88
+
89
+ lib.isNPUAvailable.restype = ctypes.c_bool
90
+ lib.getNPUDriverVersion.restype = ctypes.c_int32
91
+
92
+ lib.compressToI4.argtypes = [c_i8_array, c_u8_array, ctypes.c_int]
93
+
94
+
95
+ def init_network_factory(lib: ctypes.CDLL):
96
+ """Initialize Netowrk factory bindings.
97
+
98
+ Args:
99
+ lib (ctypes.CDLL): Intel® NPU Acceleration Library runtime library
100
+ """
101
+ lib.createNNFactory.argtypes = [
102
+ ctypes.c_char_p,
103
+ ctypes.c_bool,
104
+ ]
105
+ lib.createNNFactory.restype = handler
106
+
107
+ lib.setNNFactoryWeights.argtypes = [handler, ctypes.c_int, handler, ctypes.c_bool]
108
+
109
+ lib.op_shape_size.argtypes = [handler]
110
+ lib.op_shape_size.restype = ctypes.c_int
111
+
112
+ lib.op_shape.argtypes = [handler, ctypes.c_int]
113
+ lib.op_shape.restype = ctypes.c_int
114
+
115
+ lib.op_dtype.argtypes = [handler]
116
+ lib.op_dtype.restype = ctypes.c_int
117
+
118
+ lib.parameter.argtypes = [handler, ctypes.c_int, c_u32_array, ctypes.c_char_p]
119
+ lib.parameter.restype = handler
120
+
121
+ lib.to.argtypes = [handler, handler, ctypes.c_char_p]
122
+ lib.to.restype = handler
123
+
124
+ lib.constant.argtypes = [
125
+ handler,
126
+ ctypes.c_int,
127
+ c_u32_array,
128
+ ctypes.c_char_p,
129
+ ctypes.c_void_p,
130
+ ]
131
+ lib.constant.restype = handler
132
+
133
+ lib.slice.argtypes = [
134
+ handler,
135
+ handler,
136
+ handler,
137
+ handler,
138
+ handler,
139
+ ctypes.c_int,
140
+ c_u32_array,
141
+ ctypes.c_int,
142
+ c_u32_array,
143
+ ]
144
+ lib.slice.restype = handler
145
+
146
+ lib.compile.argtypes = [handler]
147
+ lib.compile.restype = handler
148
+
149
+ lib.get_output_tensor_shape_size.argtypes = [handler, ctypes.c_int]
150
+ lib.get_output_tensor_shape_size.restype = ctypes.c_int
151
+
152
+ lib.get_output_tensor_shape.argtypes = [handler, ctypes.c_int, ctypes.c_int]
153
+ lib.get_output_tensor_shape.restype = ctypes.c_int
154
+
155
+ lib.linear.argtypes = [
156
+ handler,
157
+ handler,
158
+ ctypes.c_int,
159
+ ctypes.c_int,
160
+ ctypes.c_bool,
161
+ ctypes.c_char_p,
162
+ ctypes.c_char_p,
163
+ ]
164
+ lib.linear.restype = handler
165
+
166
+ lib.convolution.argtypes = [
167
+ handler,
168
+ handler,
169
+ handler,
170
+ handler,
171
+ ctypes.c_int,
172
+ c_u32_array,
173
+ ctypes.c_int,
174
+ c_u32_array,
175
+ ctypes.c_int,
176
+ c_u32_array,
177
+ ctypes.c_int,
178
+ c_u32_array,
179
+ ctypes.c_int,
180
+ ctypes.c_char_p,
181
+ ]
182
+ lib.convolution.restype = handler
183
+
184
+ lib.avg_pooling.argtypes = [
185
+ handler,
186
+ handler,
187
+ ctypes.c_int,
188
+ c_u32_array,
189
+ ctypes.c_int,
190
+ c_u32_array,
191
+ ctypes.c_int,
192
+ c_u32_array,
193
+ ctypes.c_int,
194
+ c_u32_array,
195
+ ctypes.c_bool,
196
+ ctypes.c_int,
197
+ ctypes.c_int,
198
+ ]
199
+ lib.avg_pooling.restype = handler
200
+
201
+ lib.max_pooling.argtypes = [
202
+ handler,
203
+ handler,
204
+ ctypes.c_int,
205
+ c_u32_array,
206
+ ctypes.c_int,
207
+ c_u32_array,
208
+ ctypes.c_int,
209
+ c_u32_array,
210
+ ctypes.c_int,
211
+ c_u32_array,
212
+ ctypes.c_int,
213
+ ctypes.c_int,
214
+ ]
215
+ lib.max_pooling.restype = handler
216
+
217
+ for op in get_supported_ops():
218
+ fn = getattr(lib, op.name)
219
+ fn.argtypes = [handler] * (op.inputs + 1) + list(op.parameters)
220
+ fn.restype = handler
221
+
222
+
223
+ def init_parameters(lib: ctypes.CDLL):
224
+ """Initialize Netowrk factory parameters.
225
+
226
+ Args:
227
+ lib (ctypes.CDLL): Intel® NPU Acceleration Library runtime library
228
+ """
229
+ lib.createParameters.argtypes = []
230
+ lib.createParameters.restype = handler
231
+
232
+ lib.destroyParameters.argtypes = [handler]
233
+
234
+ lib.addFloatParameter.argtypes = [handler, c_fp16_array, ctypes.c_int, ctypes.c_int]
235
+ lib.addIntParameter.argtypes = [
236
+ handler,
237
+ c_i8_array,
238
+ c_fp16_array,
239
+ ctypes.c_int,
240
+ ctypes.c_int,
241
+ ctypes.c_int,
242
+ ctypes.c_int,
243
+ ]
244
+
245
+ lib.addInt4Parameter.argtypes = [
246
+ handler,
247
+ c_u8_array,
248
+ c_fp16_array,
249
+ ctypes.c_int,
250
+ ctypes.c_int,
251
+ ctypes.c_int,
252
+ ctypes.c_int,
253
+ ]
254
+
255
+ lib.addIntParameterConversion.argtypes = [
256
+ handler,
257
+ c_i8_array,
258
+ c_fp32_array,
259
+ ctypes.c_int,
260
+ ctypes.c_int,
261
+ ]
262
+
263
+
264
+ def initialize_bindings() -> ctypes.CDLL:
265
+ """Load the Intel® NPU Acceleration Library runtime library, and initialize all c++ <-> python bindings.
266
+
267
+ Returns:
268
+ ctypes.CDLL: Initialize matmul bindings
269
+ """
270
+ lib = load_library()
271
+
272
+ init_common(lib)
273
+ init_network_factory(lib)
274
+ init_parameters(lib)
275
+
276
+ return lib
277
+
278
+
279
+ lib = initialize_bindings()
@@ -0,0 +1,24 @@
1
+ #
2
+ # Copyright © 2024 Intel Corporation
3
+ # SPDX-License-Identifier: Apache 2.0
4
+ #
5
+
6
+ from intel_npu_acceleration_library.backend.bindings import lib as backend_lib
7
+ import numpy as np
8
+
9
+
10
+ def compress_to_i4(weights: np.ndarray) -> np.ndarray:
11
+ """Compress a int8 array to int4.
12
+
13
+ Args:
14
+ weights (np.ndarray): input array
15
+
16
+ Returns:
17
+ np.ndarray: compressed array
18
+ """
19
+ compressed_weights = np.zeros(
20
+ (weights.shape[0], weights.shape[1] // 2), dtype=np.uint8
21
+ )
22
+
23
+ backend_lib.compressToI4(weights, compressed_weights, np.prod(weights.shape))
24
+ return compressed_weights
@@ -0,0 +1,58 @@
1
+ #
2
+ # Copyright © 2024 Intel Corporation
3
+ # SPDX-License-Identifier: Apache 2.0
4
+ #
5
+
6
+ from intel_npu_acceleration_library.backend.factory import NNFactory
7
+ from typing import Sequence, Union
8
+ import numpy as np
9
+
10
+
11
+ class Convolution(NNFactory):
12
+ """Linear class, computing a matrix matrix multiplication with weights prefetching."""
13
+
14
+ def __init__(
15
+ self,
16
+ input_shape: Sequence[int],
17
+ weights_shape: Sequence[int],
18
+ bias: bool = False,
19
+ strides: Union[int, Sequence[int]] = 1,
20
+ padding: Union[int, Sequence[int]] = 0,
21
+ dilation: Union[int, Sequence[int]] = 1,
22
+ groups: int = 1,
23
+ profile: bool = False,
24
+ device: str = "NPU",
25
+ ):
26
+ """Initialize the Linear class.
27
+
28
+ Args:
29
+ input_shape (Sequence[int]): input shape
30
+ weights_shape (Sequence[int]): weights shape
31
+ bias (bool): Enable/Disable bias. Defaults to False.
32
+ strides (Union[int, Sequence[int]], optional): Strides. Defaults to 1.
33
+ padding (Union[int, Sequence[int]], optional): Padding. Defaults to 0.
34
+ dilation (Union[int, Sequence[int]], optional): Dilation. Defaults to 1.
35
+ groups (int, optional): Groups. Defaults to 1.
36
+ profile (Optional[bool], optional): Enable/Disable profiling. Defaults to False.
37
+ device (str): Target device, default to "NPU".
38
+ """
39
+ super().__init__(profile, device)
40
+ input = self.parameter(input_shape)
41
+ weights = self.parameter(weights_shape)
42
+ if bias is not None:
43
+ bias_node = self.parameter((1, weights_shape[0], 1, 1))
44
+ else:
45
+ bias_node = None
46
+
47
+ _ = self.convolution(
48
+ input,
49
+ weights,
50
+ bias=bias_node,
51
+ strides=strides,
52
+ padding=padding,
53
+ dilation=dilation,
54
+ groups=groups,
55
+ act_dtype=np.float16,
56
+ )
57
+
58
+ self.compile()