如何使用ARM NEON构建Egen-编译错误(针对Tensorflow)

如何使用ARM NEON构建Egen-编译错误(针对Tensorflow),tensorflow,eigen,Tensorflow,Eigen,我正在尝试构建Tensorflow 1.2-rc1,但是如果我尝试使用-mfpu=neon标志编译,我的构建就会失败。如果使用-mfpu=vfpv3标志,则构建工作正常。这是一个基于beaglebone黑色的板。有没有人成功地在这种平台上构建了它 Tensorflow从此提交中提取: 我收到生成错误: ERROR: /mnt/tensorflow/tensorflow/core/kernels/BUILD:2128:1: C++ compilation of rule '//tensorflow

我正在尝试构建Tensorflow 1.2-rc1,但是如果我尝试使用-mfpu=neon标志编译,我的构建就会失败。如果使用-mfpu=vfpv3标志,则构建工作正常。这是一个基于beaglebone黑色的板。有没有人成功地在这种平台上构建了它

Tensorflow从此提交中提取:

我收到生成错误:

ERROR: /mnt/tensorflow/tensorflow/core/kernels/BUILD:2128:1: C++ compilation of rule '//tensorflow/core/kernels:svd_op' failed: gcc failed: error executing command 

  (cd /home/snap/.cache/bazel/_bazel_root/ef9923c1cfd90b0d686a7ea3591643c7/execroot/tensorflow && \

  exec env - \

    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \

    PYTHON_BIN_PATH=/usr/bin/python \

    PYTHON_LIB_PATH=/usr/local/lib/python2.7/dist-packages \

    TF_NEED_CUDA=0 \

    TF_NEED_OPENCL=0 \

  /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -B/usr/bin -B/usr/bin -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 '-D_FORTIFY_SOURCE=1' -DNDEBUG -ffunction-sections -fdata-sections '-march=armv7-a' '-mfpu=neon' -funsafe-math-optimizations -ftree-vectorize -fomit-frame-pointer '-std=c++11' '-std=c++0x' -MD -MF bazel-out/local-opt/bin/tensorflow/core/kernels/_objs/svd_op/tensorflow/core/kernels/svd_op_complex64.pic.d '-frandom-seed=bazel-out/local-opt/bin/tensorflow/core/kernels/_objs/svd_op/tensorflow/core/kernels/svd_op_complex64.pic.o' -fPIC -DEIGEN_MPL2_ONLY -DSNAPPY -iquote . -iquote bazel-out/local-opt/genfiles -iquote external/bazel_tools -iquote bazel-out/local-opt/genfiles/external/bazel_tools -iquote external/protobuf -iquote bazel-out/local-opt/genfiles/external/protobuf -iquote external/eigen_archive -iquote bazel-out/local-opt/genfiles/external/eigen_archive -iquote external/local_config_sycl -iquote bazel-out/local-opt/genfiles/external/local_config_sycl -iquote external/gif_archive -iquote bazel-out/local-opt/genfiles/external/gif_archive -iquote external/jpeg -iquote bazel-out/local-opt/genfiles/external/jpeg -iquote external/com_googlesource_code_re2 -iquote bazel-out/local-opt/genfiles/external/com_googlesource_code_re2 -iquote external/farmhash_archive -iquote bazel-out/local-opt/genfiles/external/farmhash_archive -iquote external/fft2d -iquote bazel-out/local-opt/genfiles/external/fft2d -iquote external/highwayhash -iquote bazel-out/local-opt/genfiles/external/highwayhash -iquote external/png_archive -iquote bazel-out/local-opt/genfiles/external/png_archive -iquote external/zlib_archive -iquote bazel-out/local-opt/genfiles/external/zlib_archive -iquote external/snappy -iquote bazel-out/local-opt/genfiles/external/snappy -isystem external/bazel_tools/tools/cpp/gcc3 -isystem external/protobuf/src -isystem bazel-out/local-opt/genfiles/external/protobuf/src -isystem external/eigen_archive -isystem bazel-out/local-opt/genfiles/external/eigen_archive -isystem external/gif_archive/lib -isystem bazel-out/local-opt/genfiles/external/gif_archive/lib -isystem external/farmhash_archive/src -isystem bazel-out/local-opt/genfiles/external/farmhash_archive/src -isystem external/png_archive -isystem bazel-out/local-opt/genfiles/external/png_archive -isystem external/zlib_archive -isystem bazel-out/local-opt/genfiles/external/zlib_archive -DEIGEN_AVOID_STL_ARRAY -Iexternal/gemmlowp -Wno-sign-compare -fno-exceptions -pthread -fno-canonical-system-headers -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME__="redacted"' -c tensorflow/core/kernels/svd_op_complex64.cc -o bazel-out/local-opt/bin/tensorflow/core/kernels/_objs/svd_op/tensorflow/core/kernels/svd_op_complex64.pic.o): com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1.

In file included from external/eigen_archive/Eigen/Core:451:0,

                 from external/eigen_archive/Eigen/QR:11,

                 from external/eigen_archive/Eigen/SVD:11,

                 from ./third_party/eigen3/Eigen/SVD:1,

                 from ./tensorflow/core/kernels/svd_op_impl.h:23,

                 from tensorflow/core/kernels/svd_op_complex64.cc:16:

external/eigen_archive/Eigen/src/Core/util/BlasUtil.h: In instantiation of 'struct Eigen::internal::conj_helper<__vector(4) __builtin_neon_sf, Eigen::internal::Packet2cf, false, false>':

external/eigen_archive/Eigen/src/Jacobi/Jacobi.h:339:77:   required from 'void Eigen::internal::apply_rotation_in_the_plane(Eigen::DenseBase<Derived>&, Eigen::DenseBase<Derived>&, const Eigen::JacobiRotation<OtherScalar>&) [with VectorX = Eigen::Block<Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>, 1, -1, true>; VectorY = Eigen::Block<Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>, 1, -1, true>; OtherScalar = float]'

external/eigen_archive/Eigen/src/Jacobi/Jacobi.h:282:48:   required from 'void Eigen::MatrixBase<Derived>::applyOnTheLeft(Eigen::Index, Eigen::Index, const Eigen::JacobiRotation<OtherScalar>&) [with OtherScalar = float; Derived = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>; Eigen::Index = int]'

external/eigen_archive/Eigen/src/SVD/JacobiSVD.h:725:13:   required from 'Eigen::JacobiSVD<MatrixType, QRPreconditioner>& Eigen::JacobiSVD<MatrixType, QRPreconditioner>::compute(const MatrixType&, unsigned int) [with _MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>; int QRPreconditioner = 2; Eigen::JacobiSVD<MatrixType, QRPreconditioner>::MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>]'

external/eigen_archive/Eigen/src/SVD/JacobiSVD.h:548:41:   required from 'Eigen::JacobiSVD<MatrixType, QRPreconditioner>::JacobiSVD(const MatrixType&, unsigned int) [with _MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>; int QRPreconditioner = 2; Eigen::JacobiSVD<MatrixType, QRPreconditioner>::MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>]'

external/eigen_archive/Eigen/src/SVD/BDCSVD.h:251:57:   required from 'Eigen::BDCSVD<_MatrixType>& Eigen::BDCSVD<MatrixType>::compute(const MatrixType&, unsigned int) [with _MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>; Eigen::BDCSVD<MatrixType>::MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>]'

external/eigen_archive/Eigen/src/SVD/BDCSVD.h:136:39:   required from 'Eigen::BDCSVD<MatrixType>::BDCSVD(const MatrixType&, unsigned int) [with _MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>; Eigen::BDCSVD<MatrixType>::MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>]'

./tensorflow/core/kernels/svd_op_impl.h:88:49:   required from 'void tensorflow::SvdOp<Scalar>::ComputeMatrix(tensorflow::OpKernelContext*, const ConstMatrixMaps&, tensorflow::SvdOp<Scalar>::MatrixMaps*) [with Scalar = std::complex<float>; tensorflow::SvdOp<Scalar>::ConstMatrixMaps = tensorflow::gtl::InlinedVector<Eigen::Map<const Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>, 0, Eigen::Stride<0, 0> >, 4>; tensorflow::SvdOp<Scalar>::MatrixMaps = tensorflow::gtl::InlinedVector<Eigen::Map<Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>, 0, Eigen::Stride<0, 0> >, 4>]'

tensorflow/core/kernels/svd_op_complex64.cc:23:1:   required from here

external/eigen_archive/Eigen/src/Core/util/BlasUtil.h:63:74: error: no type named 'ReturnType' in 'struct Eigen::ScalarBinaryOpTraits<__vector(4) __builtin_neon_sf, Eigen::internal::Packet2cf, Eigen::internal::scalar_product_op<__vector(4) __builtin_neon_sf, Eigen::internal::Packet2cf> >'

   typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar>::ReturnType Scalar;

                                                                          ^

In file included from external/eigen_archive/Eigen/Jacobi:27:0,

                 from external/eigen_archive/Eigen/QR:16,

                 from external/eigen_archive/Eigen/SVD:11,

                 from ./third_party/eigen3/Eigen/SVD:1,

                 from ./tensorflow/core/kernels/svd_op_impl.h:23,

                 from tensorflow/core/kernels/svd_op_complex64.cc:16:

external/eigen_archive/Eigen/src/Jacobi/Jacobi.h: In instantiation of 'void Eigen::internal::apply_rotation_in_the_plane(Eigen::DenseBase<Derived>&, Eigen::DenseBase<Derived>&, const Eigen::JacobiRotation<OtherScalar>&) [with VectorX = Eigen::Block<Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>, 1, -1, true>; VectorY = Eigen::Block<Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>, 1, -1, true>; OtherScalar = float]':

external/eigen_archive/Eigen/src/Jacobi/Jacobi.h:282:48:   required from 'void Eigen::MatrixBase<Derived>::applyOnTheLeft(Eigen::Index, Eigen::Index, const Eigen::JacobiRotation<OtherScalar>&) [with OtherScalar = float; Derived = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>; Eigen::Index = int]'

external/eigen_archive/Eigen/src/SVD/JacobiSVD.h:725:13:   required from 'Eigen::JacobiSVD<MatrixType, QRPreconditioner>& Eigen::JacobiSVD<MatrixType, QRPreconditioner>::compute(const MatrixType&, unsigned int) [with _MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>; int QRPreconditioner = 2; Eigen::JacobiSVD<MatrixType, QRPreconditioner>::MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>]'

external/eigen_archive/Eigen/src/SVD/JacobiSVD.h:548:41:   required from 'Eigen::JacobiSVD<MatrixType, QRPreconditioner>::JacobiSVD(const MatrixType&, unsigned int) [with _MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>; int QRPreconditioner = 2; Eigen::JacobiSVD<MatrixType, QRPreconditioner>::MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>]'

external/eigen_archive/Eigen/src/SVD/BDCSVD.h:251:57:   required from 'Eigen::BDCSVD<_MatrixType>& Eigen::BDCSVD<MatrixType>::compute(const MatrixType&, unsigned int) [with _MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>; Eigen::BDCSVD<MatrixType>::MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>]'

external/eigen_archive/Eigen/src/SVD/BDCSVD.h:136:39:   required from 'Eigen::BDCSVD<MatrixType>::BDCSVD(const MatrixType&, unsigned int) [with _MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>; Eigen::BDCSVD<MatrixType>::MatrixType = Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>]'

./tensorflow/core/kernels/svd_op_impl.h:88:49:   required from 'void tensorflow::SvdOp<Scalar>::ComputeMatrix(tensorflow::OpKernelContext*, const ConstMatrixMaps&, tensorflow::SvdOp<Scalar>::MatrixMaps*) [with Scalar = std::complex<float>; tensorflow::SvdOp<Scalar>::ConstMatrixMaps = tensorflow::gtl::InlinedVector<Eigen::Map<const Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>, 0, Eigen::Stride<0, 0> >, 4>; tensorflow::SvdOp<Scalar>::MatrixMaps = tensorflow::gtl::InlinedVector<Eigen::Map<Eigen::Matrix<std::complex<float>, -1, -1, 1, -1, -1>, 0, Eigen::Stride<0, 0> >, 4>]'

tensorflow/core/kernels/svd_op_complex64.cc:23:1:   required from here

external/eigen_archive/Eigen/src/Jacobi/Jacobi.h:359:55: error: 'struct Eigen::internal::conj_helper<__vector(4) __builtin_neon_sf, Eigen::internal::Packet2cf, false, false>' has no member named 'pmul'

         pstore(px, padd(pm.pmul(pc,xi),pcj.pmul(ps,yi)));

                                                       ^
<代码>错误:/nt/tn/s/t///t/n/g/2:1: C++规则编译的//TunSoFrase/Cys/Orn:SvdOOP失败:GCC失败:错误执行命令 (cd/home/snap/.cache/bazel/_bazel_root/ef9923c1cfd90b0d686a7ea3591643c7/execroot/tensorflow&&\ 行政环境\ 路径=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\ PYTHON\u BIN\u PATH=/usr/BIN/PYTHON\ PYTHON_LIB_PATH=/usr/local/LIB/python2.7/dist-packages\ TF_NEED_CUDA=0\ TF\u需要\u OPENCL=0\ /usr/bin/gcc-U_-FORTIFY_-SOURCE-fstack protector-Wall-B/usr/bin-B/usr/bin-Wunused但设置参数-Wno-free非堆对象-fno省略帧指针-g0-O2'-D_-FORTIFY_-SOURCE=1'-DNDEBUG-fffunction sections-fdata sections'-march=armv7-a'-mfpu=neon'-funsafe数学优化-ftree向量化-fomit帧指针-std=c++11'-std=c++0x'-MD-MF bazel out/local opt/bin/tensorflow/core/kernels/_objs/svd_op/tensorflow/core/core/core/core/core/cornels/core/cornels/core/core/_objs/svd_objs/svd_op_complex64.pic.o'-fPIC-DEIGEN_MPL2_-DSNAPPY-ikote.-ikote-ikote-bazel out/local/genels/genels/ikote-ikote外部工具-iNote bazel out/local opt/genfiles/external/bazel_tools-iNote external/protobuf-iNote bazel out/local opt/protobuf-iNote external/eigen_archive-iNote bazel out/local opt/genfiles/external/eigen_archive-iNote external/local配置sycl-iNote bazel out/local opt/genfiles/local配置sycl-gif_归档-iNote bazel out/local opt/genfiles/external/gif_归档-iNote external/jpeg-iNote bazel out/local opt/genfiles/external/gif_归档-iNote external/farmhash\u归档-iNote bazel out/local opt/genfiles/external/comègoogle源代码/farmhash\uive-iNote-external/fft2d-iNote-bazel-out/local-opt/genfiles/external/highwayhash-iNote-bazel-out/local-opt/genfiles/external/png-u归档-iNote-external/zlib-u归档-iNote-bazel-out/local-opt/genfiles/external/zlib-u归档-iNote外部/snappy-iNote bazel out/local opt/genfiles/external/snappy-isystem external/bazel_tools/tools/cpp/gcc3-isystem external/protobuf/src-isystem bazel out/local opt/genfiles/eigen_archive-isystem bazel out/local opt/genfiles/external/eigen_archive-isystem external/gif_archive/lib-isystem bazel-out/local opt/genfiles/external/gif_archive/lib-isystem external/farmhash_archive/src-isystem bazel out/local opt/genfiles/external/farmhash_archive/src-isystem external/genfiles/png_archive-isystem external/zlib_archive-isystem bazel out/local opt/genfiles/genfiles/external/zlib_archive-DEIGEN_TL_数组-Iexternal/gemmlowp-Wno符号比较-fno异常-pthread-fno规范系统头-Wno内置宏重定义“-D_u-DATE=“redacted”'-D_u-TIMESTAMP=“redacted”'-D_u-TIME=“redacted”'-c tensorflow/core/kernels/svd_op_complex64.cc-o bazel out/local opt/bin/tensorflow/core/kernels/_objs/svd_op/tensorflow/core/kernels/svd_op_complex64.pic.o):com.google.devtools.build.lib.shell.badexitstatuseException:进程退出,状态为1。 在外部/eigen_存档/eigen/Core:451:0包含的文件中, 来自外部/eigen_存档/eigen/QR:11, 来自外部/eigen_存档/eigen/SVD:11, 发件人/第三方/eigen3/Eigen/SVD:1, from./tensorflow/core/kernels/svd_op_impl.h:23, 来自tensorflow/core/kernels/svd_op_complex64.cc:16: external/eigen_archive/eigen/src/Core/util/BlasUtil.h:在“struct eigen::internal::conj_helper”的实例化中: 外部/eigen_归档/eigen/src/Jacobi/Jacobi.h:339:77:从“void eigen::internal::apply_rotation_在_平面中(eigen::DenseBase&,eigen::DenseBase&,const eigen::JacobiRotation&)[带VectorX=eigen::Block;VectorY=eigen::Block;OtherScalar=float] 外部/eigen_存档/eigen/src/Jacobi/Jacobi.h:282:48:从“void eigen::MatrixBase::applyonthelft(eigen::Index,eigen::Index,const eigen::JacobiRotation&”)中需要[with OtherScalar=float;Derived=eigen::Matrix;eigen::Index=int]' 外部/eigen_存档/eigen/src/SVD/JacobiSVD.h:725:13:需要自'eigen::JacobiSVD&eigen::JacobiSVD::compute(const MatrixType&,unsigned int)[with(u MatrixType=eigen::Matrix;int QRpredicater=2;eigen::JacobiSVD::MatrixType=eigen::矩阵]' 外部/eigen_存档/eigen/src/SVD/JacobiSVD.h:548:41:来自“eigen::JacobiSVD::JacobiSVD(常数矩阵类型和无符号整数)”的必填项[带MatrixType=eigen::Matrix;int QR预条件=2;eigen::JacobiSVD::MatrixType=eigen::Matrix]' 外部/eigen_存档/eigen/src/SVD/BDCSVD.h:251:57:需要从“eigen::BDCSVD&eigen::BDCSVD::compute(const MatrixType&,unsigned int)[带_MatrixType=eigen::Matrix;eigen::BDCSVD::MatrixType=eigen::Matrix]” 外部/eigen_archive/eigen/src/SVD/BDCSVD.h:136:39:需要自'eigen::BDCSVD::BDCSVD(const MatrixType&,unsigned int)[带_MatrixType=eigen::Matrix;eigen::BDCSVD::MatrixType=eigen::Matrix]' ./tensorflow/core/kernels/svd_op_impl.h:88:49:void tensorflow::SvdOp::ComputeMatrix(tensorflow::OpKernelContext*,const ConstMatrixMaps&,tensorflow::SvdOp::MatrixMaps*)中的必填项[标量=std::complex;tensorflow::SvdOp::Cons::Cons::Cons]
  native.new_http_archive(
      name = "eigen_archive",
      urls = [
          "http://mirror.bazel.build/bitbucket.org/eigen/eigen/get/f3a22f35b044.tar.gz",
          "https://bitbucket.org/eigen/eigen/get/f3a22f35b044.tar.gz",
      ],
      sha256 = "ca7beac153d4059c02c8fc59816c82d54ea47fe58365e8aded4082ded0b820c4",
      strip_prefix = "eigen-eigen-f3a22f35b044",
      build_file = str(Label("//third_party:eigen.BUILD")),
  )
  native.new_http_archive(
      name = "eigen_archive",
      urls = [
          "http://mirror.bazel.build/bitbucket.org/eigen/eigen/get/d781c1de9834.tar.gz",
          "https://bitbucket.org/eigen/eigen/get/d781c1de9834.tar.gz",
      ],
      sha256 = "a34b208da6ec18fa8da963369e166e4a368612c14d956dd2f9d7072904675d9b",
      strip_prefix = "eigen-eigen-d781c1de9834",
      build_file = str(Label("//third_party:eigen.BUILD")),
  )