ACL Execution Provider

Der ACL Execution Provider ermöglicht beschleunigte Leistung auf Arm®-basierten CPUs durch die Arm Compute Library.

Build

Für Build-Anweisungen siehe die Build-Seite.

Verwendung

C/C++

Ort::Env env = Ort::Env{ORT_LOGGING_LEVEL_ERROR, "Default"};
Ort::SessionOptions sf;
bool enable_fast_math = true;
Ort::ThrowOnError(OrtSessionOptionsAppendExecutionProvider_ACL(sf, enable_fast_math));

Details zur C-API finden Sie hier.

Python

import onnxruntime

providers = [("ACLExecutionProvider", {"enable_fast_math": "true"})]
sess = onnxruntime.InferenceSession("model.onnx", providers=providers)

Performance-Tuning

Die Arm Compute Library verfügt über einen Fast-Math-Modus, der die Leistung mit einem potenziellen Genauigkeitsverlust für MatMul- und Conv-Operatoren erhöhen kann. Dieser ist standardmäßig deaktiviert.

Wenn Sie onnxruntime_perf_test verwenden, nutzen Sie das Flag -e acl, um den ACL Execution Provider zu aktivieren. Sie können zusätzlich -i 'enable_fast_math|true' verwenden, um Fast Math zu aktivieren.

Die Arm Compute Library verwendet den Thread-Pool für interne Operatoren von ONNX Runtime, wenn sie über den Execution Provider ausgeführt wird. Sie können die Größe dieses Thread-Pools mit der Option -x steuern.

Unterstützte Operatoren

Operator Unterstützte Typen
AveragePool float
BatchNormalization float
Concat float
Conv float, float16
FusedConv float
FusedMatMul float, float16
Gemm float
GlobalAveragePool float
GlobalMaxPool float
MatMul float, float16
MatMulIntegerToFloat uint8, int8, uint8+int8
MaxPool float
NhwcConv float
Relu float
QLinearConv uint8, int8, uint8+int8