tensorflow: ARM6/RPI: Executor failed to create kernel _FusedConv2D

Please make sure that this is a bug. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:bug_template

System information

  • Have I written custom code (as opposed to using a stock example script provided in TensorFlow): yes

  • OS Platform and Distribution (e.g., Linux Ubuntu 16.04): ARM 6 (Raspberry PI Zero W)

  • Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: No

  • TensorFlow installed from (source or binary): Source at 92b598a32d5f8c636b9eb1cdc7afcb958395500f

  • TensorFlow version (use command below): n/a

  • Python version: n/a

  • Bazel version (if compiling from source): n/a

  • GCC/Compiler version (if compiling from source): n/a

  • CUDA/cuDNN version: n/a

  • GPU model and memory: n/a

You can collect some of this information using our environment capture script You can also obtain the TensorFlow version with python -c “import tensorflow as tf; print(tf.GIT_VERSION, tf.VERSION)” n/a

Describe the current behavior My use case is running TensorFlow as a C-library using Go interface. I am performing an image inferencing task using a model (.pb file). I see that my libtensorflow.so build works fine on ARM7 but fails on ARM6 with the following error:

2019-01-07 04:07:27.533445: E tensorflow/core/common_runtime/executor.cc:634] Executor failed to create kernel. Not found: No registered '_FusedConv2D' OpKernel for CPU devices compatible with node {{node module_apply_default/InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu}}
	.  Registered:  <no registered kernels>

	 [[module_apply_default/InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu]]
2019/01/07 04:07:27 session run:No registered '_FusedConv2D' OpKernel for CPU devices compatible with node {{node module_apply_default/InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu}}
	.  Registered:  <no registered kernels>

	 [[module_apply_default/InceptionV3/InceptionV3/Conv2d_1a_3x3/Relu]]

Describe the expected behavior expecting ARM6 build of libtensorflow.so and libtensorflow_framework.so to work the same as ARM7 build.

Code to reproduce the issue Provide a reproducible test case that is the bare minimum necessary to generate the problem.

Other info / logs Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached.

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 17 (5 by maintainers)

Most upvoted comments

It seems fused Conv2D and ReLU operations can work on ARMv6 if I disable biasing in Conv2D operations (use_bias=False).

I solved my problem (Nitrogen Quad board - iMX6 - cortex A9, armv7l) by changing some compilation features following the notifications from ARM:

Using the build script provided by tensorflow for RASPBERRY boards, I used the following compilation line in tensorflow/tools/ci_build/pi/build_raspberry_pi.sh :

PI_COPTS="--copt=-march=armv7-a --copt=-mfpu=vfpv3
  --copt=-std=gnu11 --copt=-DS_IREAD=S_IRUSR --copt=-DS_IWRITE=S_IWUSR
  --copt=-O3
  --copt=-U__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
  --copt=-U__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2
  --copt=-U__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8"
  WHEEL_ARCH=linux_armv7l

After cross-compiling and installing the wheel on the target board, everything was OK : training, testing, load & save models with a simple CNN on MNIST (classical example of Keras).

Regards