onnxruntime/docs/execution-providers/community-maintained/ACL-ExecutionProvider.md
Michael Tyler 7faa4b1eb4
Update documentation for Arm Compute Library (#22232)
### Description
This PR updates the documentation regarding the ACL execution provider
to reflect the changes made in #22032.
It also updates various references to Arm's trademarks in accordance
with the Arm trademark use guidelines.



### Motivation and Context
Ensures documentation is accurate following recent changes.

---------

Signed-off-by: Michael Tyler <michael.tyler@arm.com>
2024-09-30 18:56:27 -07:00

2.1 KiB

title description grand_parent parent nav_order redirect_from
Arm - ACL Instructions to execute ONNX Runtime with the ACL Execution Provider Execution Providers Community-maintained 2 /docs/reference/execution-providers/ACL-ExecutionProvider

ACL Execution Provider

{: .no_toc }

The ACL Execution Provider enables accelerated performance on Arm®-based CPUs through Arm Compute Library{:target="_blank"}.

Build

For build instructions, please see the build page.

Usage

C/C++

{: .no_toc }

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));

The C API details are here.

Python

{: .no_toc }

import onnxruntime

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

Performance Tuning

Arm Compute Library has a fast math mode that can increase performance with some potential decrease in accuracy for MatMul and Conv operators. It is disabled by default.

When using onnxruntime_perf_test{:target="_blank"}, use the flag -e acl to enable the ACL Execution Provider. You can additionally use -i 'enable_fast_math|true' to enable fast math.

Arm Compute Library uses the ONNX Runtime intra-operator thread pool when running via the execution provider. You can control the size of this thread pool using the -x option.

Supported Operators

Operator Supported types
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