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 |