ACL (32bit) Execution Provider fails on gemm node #7255
Open
Description
Describe the bug
When executing a model with a raspberry pi 4B and ACL the execution stops on the last fully connected layer.
onnxruntime.capi.onnxruntime_pybind11_state.RuntimeException: [ONNXRuntimeError] : 6 : RUNTIME_EXCEPTION : Non-zero status code returned while running Gemm node. Name:'Gemm_148' Status Message: /home/pi/dev/ort1.7/include/onnxruntime/core/framework/op_kernel.h:113 const T* onnxruntime::OpKernelContext::Input(int) const [with T = onnxruntime::Tensor] Missing Input: fc.weight
This does however not happen if I constrain the use to only CPUExecutionProvider.
Urgency
None
System information
- OS Platform and Distribution: Raspbian GNU/Linux 10 (buster)
- ONNX Runtime installed from: build from source with ACL
- ONNX Runtime /ACL version: 1.7.0 / 20.02
- Python version: 3.7.3
- GCC/Compiler version: 8.3
To Reproduce
import numpy as np
import onnxruntime as rt
path = '/home/pi/pfld-sim.onnx'
sess = rt.InferenceSession(path)
input_name = sess.get_inputs()[0].name
#sess.set_providers(['CPUExecutionProvider']) <- works when this line is not commented out
x = np.random.random(sess.get_inputs()[0].shape).astype(np.float32)
sess.run(None, {input_name: x})
here is the model I used. It's a landmark model generated from this repo. The model is working flawlessly on Linux/Windows with CPU and CUDA.