EXPERIMENTAL_RUY_FEATURE flag is introduced in #3446.
This flag works well on arm32 linux, but it is not working on arm64 android.
I'll investigate the reason of this error.
/cc @YongseopKim
dynamic_cast in FullyConnectedLayer.cc produces nullptr for correct casting
https://github.com/Samsung/ONE/blob/60dd70837f2331c8f69555ed7b8dd7e03becbce4/runtime/onert/backend/cpu/ops/FullyConnectedLayer.cc#L135
dynamic_cast works correctly on arm32 linuxI found some pages explain about dynamic_cast in Android
Problem: Exceptions are not being caught when thrown across shared library boundaries, or dynamic_cast is failing.
Solution: Add a key function to your types. A key function is the first non-pure, out-of-line virtual function for a type. For an example, see the discussion on Issue 533.
dynamic_cast is not working across shared library boundaries (NDK only)_weight is IPortableTensor defined at libonert_core.so_weight is cpu_common::Tensor defined at libbackend_cpu.soIPortableTensor and cpu_common::TensorIPortableTensorstatic_cast instead of dynamic_castnnfw::misc::polymorphic_downcast instead of static_cast?Method 2 runs well on android. I've uploaded PR #3654.
Fixed by #3654.
Most helpful comment
dynamic_castinFullyConnectedLayer.ccproduces nullptr for correct castinghttps://github.com/Samsung/ONE/blob/60dd70837f2331c8f69555ed7b8dd7e03becbce4/runtime/onert/backend/cpu/ops/FullyConnectedLayer.cc#L135
dynamic_castworks correctly on arm32 linuxI found some pages explain about
dynamic_castin AndroidIn summary
dynamic_castis not working across shared library boundaries (NDK only)_weightisIPortableTensordefined atlibonert_core.so_weightiscpu_common::Tensordefined atlibbackend_cpu.soIPortableTensorandcpu_common::TensorIPortableTensorstatic_castinstead ofdynamic_castnnfw::misc::polymorphic_downcastinstead ofstatic_cast?