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.
- bigdl_core_npu-2.5.0.dist-info/METADATA +35 -0
- bigdl_core_npu-2.5.0.dist-info/RECORD +223 -0
- bigdl_core_npu-2.5.0.dist-info/WHEEL +5 -0
- bigdl_core_npu-2.5.0.dist-info/top_level.txt +1 -0
- intel_npu_acceleration_library/__init__.py +24 -0
- intel_npu_acceleration_library/_version.py +6 -0
- intel_npu_acceleration_library/backend/__init__.py +37 -0
- intel_npu_acceleration_library/backend/base.py +215 -0
- intel_npu_acceleration_library/backend/bindings.py +279 -0
- intel_npu_acceleration_library/backend/compression.py +24 -0
- intel_npu_acceleration_library/backend/convolution.py +58 -0
- intel_npu_acceleration_library/backend/factory.py +944 -0
- intel_npu_acceleration_library/backend/linear.py +60 -0
- intel_npu_acceleration_library/backend/matmul.py +59 -0
- intel_npu_acceleration_library/backend/mlp.py +58 -0
- intel_npu_acceleration_library/backend/ops.py +141 -0
- intel_npu_acceleration_library/backend/qlinear.py +71 -0
- intel_npu_acceleration_library/backend/qmatmul.py +66 -0
- intel_npu_acceleration_library/backend/runtime.py +210 -0
- intel_npu_acceleration_library/backend/sdpa.py +107 -0
- intel_npu_acceleration_library/backend/tensor.py +1050 -0
- intel_npu_acceleration_library/backend/utils.py +70 -0
- intel_npu_acceleration_library/compiler.py +194 -0
- intel_npu_acceleration_library/device.py +230 -0
- intel_npu_acceleration_library/dtypes.py +122 -0
- intel_npu_acceleration_library/external/openvino/__init__.py +71 -0
- intel_npu_acceleration_library/external/openvino/_offline_transformations/__init__.py +20 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/__init__.py +34 -0
- intel_npu_acceleration_library/external/openvino/frontend/frontend.py +44 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/__init__.py +19 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/fx_decoder.py +352 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/gptq.py +139 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/module_extension.py +39 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/patch_model.py +98 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend.py +119 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend_utils.py +85 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/compile.py +141 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/decompositions.py +116 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/execute.py +189 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/op_support.py +289 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/partition.py +118 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/ts_decoder.py +536 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/utils.py +256 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/__init__.py +16 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/graph_iterator.py +116 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/node_decoder.py +219 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/utils.py +460 -0
- intel_npu_acceleration_library/external/openvino/helpers/__init__.py +6 -0
- intel_npu_acceleration_library/external/openvino/helpers/packing.py +87 -0
- intel_npu_acceleration_library/external/openvino/preprocess/README.md +60 -0
- intel_npu_acceleration_library/external/openvino/preprocess/__init__.py +26 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/preprocess_converter.py +47 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/requirements.txt +4 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/torchvision_preprocessing.py +347 -0
- intel_npu_acceleration_library/external/openvino/properties/__init__.py +21 -0
- intel_npu_acceleration_library/external/openvino/properties/_properties.py +55 -0
- intel_npu_acceleration_library/external/openvino/properties/device/__init__.py +14 -0
- intel_npu_acceleration_library/external/openvino/properties/hint/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_auto/__init__.py +12 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_cpu/__init__.py +8 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_gpu/__init__.py +12 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_gpu/hint/__init__.py +11 -0
- intel_npu_acceleration_library/external/openvino/properties/log/__init__.py +11 -0
- intel_npu_acceleration_library/external/openvino/properties/streams/__init__.py +11 -0
- intel_npu_acceleration_library/external/openvino/runtime/__init__.py +85 -0
- intel_npu_acceleration_library/external/openvino/runtime/exceptions.py +17 -0
- intel_npu_acceleration_library/external/openvino/runtime/ie_api.py +631 -0
- intel_npu_acceleration_library/external/openvino/runtime/op/__init__.py +18 -0
- intel_npu_acceleration_library/external/openvino/runtime/op/util/__init__.py +22 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset1/__init__.py +112 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset1/ops.py +3067 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset10/__init__.py +179 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset10/ops.py +173 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset11/__init__.py +179 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset11/ops.py +107 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset12/__init__.py +180 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset12/ops.py +120 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset13/__init__.py +188 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset13/ops.py +399 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset14/__init__.py +190 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset14/ops.py +171 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset15/__init__.py +10 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset15/ops.py +85 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset2/__init__.py +118 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset2/ops.py +216 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset3/__init__.py +134 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset3/ops.py +638 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset4/__init__.py +145 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset4/ops.py +464 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset5/__init__.py +152 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset5/ops.py +372 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset6/__init__.py +154 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset6/ops.py +189 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset7/__init__.py +158 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset7/ops.py +169 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset8/__init__.py +169 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset8/ops.py +783 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset9/__init__.py +175 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset9/ops.py +341 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset_utils.py +22 -0
- intel_npu_acceleration_library/external/openvino/runtime/passes/__init__.py +19 -0
- intel_npu_acceleration_library/external/openvino/runtime/passes/graph_rewrite.py +33 -0
- intel_npu_acceleration_library/external/openvino/runtime/passes/manager.py +26 -0
- intel_npu_acceleration_library/external/openvino/runtime/properties/__init__.py +38 -0
- intel_npu_acceleration_library/external/openvino/runtime/properties/hint/__init__.py +25 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/__init__.py +7 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/broadcasting.py +44 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/__init__.py +8 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/data_dispatcher.py +429 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/wrappers.py +148 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/decorators.py +70 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/input_validation.py +133 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/node_factory.py +127 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/reduction.py +25 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/types.py +175 -0
- intel_npu_acceleration_library/external/openvino/tools/__init__.py +4 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/__init__.py +3 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/benchmark.py +186 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/main.py +695 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/parameters.py +199 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/__init__.py +3 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/constants.py +26 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/inputs_filling.py +482 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/logging.py +8 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/statistics_report.py +296 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/utils.py +836 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/__init__.py +20 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/__main__.py +10 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/cli_parser.py +633 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/convert.py +102 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/convert_data_type.py +82 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/convert_impl.py +536 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/environment_setup_utils.py +50 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/error.py +49 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/get_ov_update_message.py +16 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/help.py +45 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/logger.py +91 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/main.py +35 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/__init__.py +2 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/analysis.py +46 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/check_config.py +57 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/extractor.py +447 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/layout_utils.py +73 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/moc_emit_ir.py +32 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/offline_transformations.py +107 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/paddle_frontend_utils.py +83 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pipeline.py +246 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/preprocessing.py +220 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pytorch_frontend_utils.py +205 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/shape_utils.py +109 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/type_utils.py +82 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/ovc.py +13 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_params.py +6 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_stub.py +28 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_utils.py +118 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/utils.py +109 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/version.py +80 -0
- intel_npu_acceleration_library/external/openvino/torch/__init__.py +5 -0
- intel_npu_acceleration_library/external/openvino/utils.py +98 -0
- intel_npu_acceleration_library/functional/__init__.py +8 -0
- intel_npu_acceleration_library/functional/scaled_dot_product_attention.py +47 -0
- intel_npu_acceleration_library/lib/Release/cache.json +113732 -0
- intel_npu_acceleration_library/lib/Release/intel_npu_acceleration_library.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_auto_batch_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_auto_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_c.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_hetero_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_intel_cpu_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_intel_gpu_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_intel_npu_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_ir_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_onnx_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_paddle_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_pytorch_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_tensorflow_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_tensorflow_lite_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbb12.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbb12_debug.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbbind_2_5.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbbind_2_5_debug.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc_debug.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy_debug.dll +0 -0
- intel_npu_acceleration_library/modelling.py +150 -0
- intel_npu_acceleration_library/nn/__init__.py +20 -0
- intel_npu_acceleration_library/nn/autograd.py +68 -0
- intel_npu_acceleration_library/nn/conv.py +257 -0
- intel_npu_acceleration_library/nn/functional.py +1207 -0
- intel_npu_acceleration_library/nn/linear.py +162 -0
- intel_npu_acceleration_library/nn/llm.py +417 -0
- intel_npu_acceleration_library/nn/module.py +393 -0
- intel_npu_acceleration_library/optimizations.py +157 -0
- 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()
|