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 |