ACL 執行提供者
ACL 執行提供者透過 Arm Compute Library 在基於 Arm® 的 CPU 上實現效能加速。
構建
有關構建說明,請參閱構建頁面。
用法
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));
C API 詳情請參閱此處。
Python
import onnxruntime
providers = [("ACLExecutionProvider", {"enable_fast_math": "true"})]
sess = onnxruntime.InferenceSession("model.onnx", providers=providers)
效能調優
Arm Compute Library 具有快速數學模式,可以提高 MatMul 和 Conv 運算元的效能,但可能略微降低精度。此模式預設停用。
使用 onnxruntime_perf_test 時,使用標誌 -e acl 來啟用 ACL 執行提供者。您還可以使用 -i 'enable_fast_math|true' 來啟用快速數學模式。
透過執行提供者執行時,Arm Compute Library 使用 ONNX Runtime 運算元內執行緒池。您可以使用 -x 選項控制此執行緒池的大小。
支援的運算元
| 運算元 | 支援的型別 |
|---|---|
| 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 |