From bcfab349f7f85081bceadd63895862c2a39852bd Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 17:10:48 +0800 Subject: [PATCH 01/14] Move eigen to third_party and include them as system headers --- dabnn/CMakeLists.txt | 5 +++++ {Eigen => third_party/eigen/Eigen}/CMakeLists.txt | 0 {Eigen => third_party/eigen/Eigen}/Cholesky | 0 {Eigen => third_party/eigen/Eigen}/CholmodSupport | 0 {Eigen => third_party/eigen/Eigen}/Core | 0 {Eigen => third_party/eigen/Eigen}/Dense | 0 {Eigen => third_party/eigen/Eigen}/Eigen | 0 {Eigen => third_party/eigen/Eigen}/Eigenvalues | 0 {Eigen => third_party/eigen/Eigen}/Geometry | 0 {Eigen => third_party/eigen/Eigen}/Householder | 0 {Eigen => third_party/eigen/Eigen}/IterativeLinearSolvers | 0 {Eigen => third_party/eigen/Eigen}/Jacobi | 0 {Eigen => third_party/eigen/Eigen}/LU | 0 {Eigen => third_party/eigen/Eigen}/MetisSupport | 0 {Eigen => third_party/eigen/Eigen}/OrderingMethods | 0 {Eigen => third_party/eigen/Eigen}/PaStiXSupport | 0 {Eigen => third_party/eigen/Eigen}/PardisoSupport | 0 {Eigen => third_party/eigen/Eigen}/QR | 0 {Eigen => third_party/eigen/Eigen}/QtAlignedMalloc | 0 {Eigen => third_party/eigen/Eigen}/SPQRSupport | 0 {Eigen => third_party/eigen/Eigen}/SVD | 0 {Eigen => third_party/eigen/Eigen}/Sparse | 0 {Eigen => third_party/eigen/Eigen}/SparseCholesky | 0 {Eigen => third_party/eigen/Eigen}/SparseCore | 0 {Eigen => third_party/eigen/Eigen}/SparseLU | 0 {Eigen => third_party/eigen/Eigen}/SparseQR | 0 {Eigen => third_party/eigen/Eigen}/StdDeque | 0 {Eigen => third_party/eigen/Eigen}/StdList | 0 {Eigen => third_party/eigen/Eigen}/StdVector | 0 {Eigen => third_party/eigen/Eigen}/SuperLUSupport | 0 {Eigen => third_party/eigen/Eigen}/UmfPackSupport | 0 {Eigen => third_party/eigen/Eigen}/src/Cholesky/LDLT.h | 0 {Eigen => third_party/eigen/Eigen}/src/Cholesky/LLT.h | 0 .../eigen/Eigen}/src/Cholesky/LLT_LAPACKE.h | 0 .../eigen/Eigen}/src/CholmodSupport/CholmodSupport.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Array.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/ArrayBase.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/ArrayWrapper.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Assign.h | 0 .../eigen/Eigen}/src/Core/AssignEvaluator.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Assign_MKL.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/BandMatrix.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Block.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/BooleanRedux.h | 0 .../eigen/Eigen}/src/Core/CommaInitializer.h | 0 .../eigen/Eigen}/src/Core/ConditionEstimator.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/CoreEvaluators.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/CoreIterators.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/CwiseBinaryOp.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/CwiseNullaryOp.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/CwiseTernaryOp.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/CwiseUnaryOp.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/CwiseUnaryView.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/DenseBase.h | 0 .../eigen/Eigen}/src/Core/DenseCoeffsBase.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/DenseStorage.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Diagonal.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/DiagonalMatrix.h | 0 .../eigen/Eigen}/src/Core/DiagonalProduct.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Dot.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/EigenBase.h | 0 .../eigen/Eigen}/src/Core/ForceAlignedAccess.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Fuzzy.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/GeneralProduct.h | 0 .../eigen/Eigen}/src/Core/GenericPacketMath.h | 0 .../eigen/Eigen}/src/Core/GlobalFunctions.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/IO.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Inverse.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Map.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/MapBase.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/MathFunctions.h | 0 .../eigen/Eigen}/src/Core/MathFunctionsImpl.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Matrix.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/MatrixBase.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/NestByValue.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/NoAlias.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/NumTraits.h | 0 .../eigen/Eigen}/src/Core/PermutationMatrix.h | 0 .../eigen/Eigen}/src/Core/PlainObjectBase.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Product.h | 0 .../eigen/Eigen}/src/Core/ProductEvaluators.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Random.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Redux.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Ref.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Replicate.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/ReturnByValue.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Reverse.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Select.h | 0 .../eigen/Eigen}/src/Core/SelfAdjointView.h | 0 .../eigen/Eigen}/src/Core/SelfCwiseBinaryOp.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Solve.h | 0 .../eigen/Eigen}/src/Core/SolveTriangular.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/SolverBase.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/StableNorm.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Stride.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Swap.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Transpose.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Transpositions.h | 0 .../eigen/Eigen}/src/Core/TriangularMatrix.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/VectorBlock.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/VectorwiseOp.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/Visitor.h | 0 .../eigen/Eigen}/src/Core/arch/AVX/Complex.h | 0 .../eigen/Eigen}/src/Core/arch/AVX/MathFunctions.h | 0 .../eigen/Eigen}/src/Core/arch/AVX/PacketMath.h | 0 .../eigen/Eigen}/src/Core/arch/AVX/TypeCasting.h | 0 .../eigen/Eigen}/src/Core/arch/AVX512/MathFunctions.h | 0 .../eigen/Eigen}/src/Core/arch/AVX512/PacketMath.h | 0 .../eigen/Eigen}/src/Core/arch/AltiVec/Complex.h | 0 .../eigen/Eigen}/src/Core/arch/AltiVec/MathFunctions.h | 0 .../eigen/Eigen}/src/Core/arch/AltiVec/PacketMath.h | 0 .../eigen/Eigen}/src/Core/arch/CUDA/Complex.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/arch/CUDA/Half.h | 0 .../eigen/Eigen}/src/Core/arch/CUDA/MathFunctions.h | 0 .../eigen/Eigen}/src/Core/arch/CUDA/PacketMath.h | 0 .../eigen/Eigen}/src/Core/arch/CUDA/PacketMathHalf.h | 0 .../eigen/Eigen}/src/Core/arch/CUDA/TypeCasting.h | 0 .../eigen/Eigen}/src/Core/arch/Default/ConjHelper.h | 0 .../eigen/Eigen}/src/Core/arch/Default/Settings.h | 0 .../eigen/Eigen}/src/Core/arch/NEON/Complex.h | 0 .../eigen/Eigen}/src/Core/arch/NEON/MathFunctions.h | 0 .../eigen/Eigen}/src/Core/arch/NEON/PacketMath.h | 0 .../eigen/Eigen}/src/Core/arch/SSE/Complex.h | 0 .../eigen/Eigen}/src/Core/arch/SSE/MathFunctions.h | 0 .../eigen/Eigen}/src/Core/arch/SSE/PacketMath.h | 0 .../eigen/Eigen}/src/Core/arch/SSE/TypeCasting.h | 0 .../eigen/Eigen}/src/Core/arch/ZVector/Complex.h | 0 .../eigen/Eigen}/src/Core/arch/ZVector/MathFunctions.h | 0 .../eigen/Eigen}/src/Core/arch/ZVector/PacketMath.h | 0 .../eigen/Eigen}/src/Core/functors/AssignmentFunctors.h | 0 .../eigen/Eigen}/src/Core/functors/BinaryFunctors.h | 0 .../eigen/Eigen}/src/Core/functors/NullaryFunctors.h | 0 .../eigen/Eigen}/src/Core/functors/StlFunctors.h | 0 .../eigen/Eigen}/src/Core/functors/TernaryFunctors.h | 0 .../eigen/Eigen}/src/Core/functors/UnaryFunctors.h | 0 .../eigen/Eigen}/src/Core/products/GeneralBlockPanelKernel.h | 0 .../eigen/Eigen}/src/Core/products/GeneralMatrixMatrix.h | 0 .../Eigen}/src/Core/products/GeneralMatrixMatrixTriangular.h | 0 .../src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h | 0 .../Eigen}/src/Core/products/GeneralMatrixMatrix_BLAS.h | 0 .../eigen/Eigen}/src/Core/products/GeneralMatrixVector.h | 0 .../Eigen}/src/Core/products/GeneralMatrixVector_BLAS.h | 0 .../eigen/Eigen}/src/Core/products/Parallelizer.h | 0 .../eigen/Eigen}/src/Core/products/SelfadjointMatrixMatrix.h | 0 .../Eigen}/src/Core/products/SelfadjointMatrixMatrix_BLAS.h | 0 .../eigen/Eigen}/src/Core/products/SelfadjointMatrixVector.h | 0 .../Eigen}/src/Core/products/SelfadjointMatrixVector_BLAS.h | 0 .../eigen/Eigen}/src/Core/products/SelfadjointProduct.h | 0 .../eigen/Eigen}/src/Core/products/SelfadjointRank2Update.h | 0 .../eigen/Eigen}/src/Core/products/TriangularMatrixMatrix.h | 0 .../Eigen}/src/Core/products/TriangularMatrixMatrix_BLAS.h | 0 .../eigen/Eigen}/src/Core/products/TriangularMatrixVector.h | 0 .../Eigen}/src/Core/products/TriangularMatrixVector_BLAS.h | 0 .../eigen/Eigen}/src/Core/products/TriangularSolverMatrix.h | 0 .../Eigen}/src/Core/products/TriangularSolverMatrix_BLAS.h | 0 .../eigen/Eigen}/src/Core/products/TriangularSolverVector.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/util/BlasUtil.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/util/Constants.h | 0 .../eigen/Eigen}/src/Core/util/DisableStupidWarnings.h | 0 .../eigen/Eigen}/src/Core/util/ForwardDeclarations.h | 0 .../eigen/Eigen}/src/Core/util/MKL_support.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/util/Macros.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/util/Memory.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/util/Meta.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/util/NonMPL2.h | 0 .../eigen/Eigen}/src/Core/util/ReenableStupidWarnings.h | 0 .../eigen/Eigen}/src/Core/util/StaticAssert.h | 0 {Eigen => third_party/eigen/Eigen}/src/Core/util/XprHelper.h | 0 .../eigen/Eigen}/src/Eigenvalues/ComplexEigenSolver.h | 0 .../eigen/Eigen}/src/Eigenvalues/ComplexSchur.h | 0 .../eigen/Eigen}/src/Eigenvalues/ComplexSchur_LAPACKE.h | 0 .../eigen/Eigen}/src/Eigenvalues/EigenSolver.h | 0 .../eigen/Eigen}/src/Eigenvalues/GeneralizedEigenSolver.h | 0 .../src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h | 0 .../eigen/Eigen}/src/Eigenvalues/HessenbergDecomposition.h | 0 .../eigen/Eigen}/src/Eigenvalues/MatrixBaseEigenvalues.h | 0 {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/RealQZ.h | 0 .../eigen/Eigen}/src/Eigenvalues/RealSchur.h | 0 .../eigen/Eigen}/src/Eigenvalues/RealSchur_LAPACKE.h | 0 .../eigen/Eigen}/src/Eigenvalues/SelfAdjointEigenSolver.h | 0 .../Eigen}/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h | 0 .../eigen/Eigen}/src/Eigenvalues/Tridiagonalization.h | 0 {Eigen => third_party/eigen/Eigen}/src/Geometry/AlignedBox.h | 0 {Eigen => third_party/eigen/Eigen}/src/Geometry/AngleAxis.h | 0 .../eigen/Eigen}/src/Geometry/EulerAngles.h | 0 .../eigen/Eigen}/src/Geometry/Homogeneous.h | 0 {Eigen => third_party/eigen/Eigen}/src/Geometry/Hyperplane.h | 0 .../eigen/Eigen}/src/Geometry/OrthoMethods.h | 0 .../eigen/Eigen}/src/Geometry/ParametrizedLine.h | 0 {Eigen => third_party/eigen/Eigen}/src/Geometry/Quaternion.h | 0 {Eigen => third_party/eigen/Eigen}/src/Geometry/Rotation2D.h | 0 .../eigen/Eigen}/src/Geometry/RotationBase.h | 0 {Eigen => third_party/eigen/Eigen}/src/Geometry/Scaling.h | 0 {Eigen => third_party/eigen/Eigen}/src/Geometry/Transform.h | 0 .../eigen/Eigen}/src/Geometry/Translation.h | 0 {Eigen => third_party/eigen/Eigen}/src/Geometry/Umeyama.h | 0 .../eigen/Eigen}/src/Geometry/arch/Geometry_SSE.h | 0 .../eigen/Eigen}/src/Householder/BlockHouseholder.h | 0 .../eigen/Eigen}/src/Householder/Householder.h | 0 .../eigen/Eigen}/src/Householder/HouseholderSequence.h | 0 .../Eigen}/src/IterativeLinearSolvers/BasicPreconditioners.h | 0 .../eigen/Eigen}/src/IterativeLinearSolvers/BiCGSTAB.h | 0 .../Eigen}/src/IterativeLinearSolvers/ConjugateGradient.h | 0 .../Eigen}/src/IterativeLinearSolvers/IncompleteCholesky.h | 0 .../eigen/Eigen}/src/IterativeLinearSolvers/IncompleteLUT.h | 0 .../Eigen}/src/IterativeLinearSolvers/IterativeSolverBase.h | 0 .../IterativeLinearSolvers/LeastSquareConjugateGradient.h | 0 .../eigen/Eigen}/src/IterativeLinearSolvers/SolveWithGuess.h | 0 {Eigen => third_party/eigen/Eigen}/src/Jacobi/Jacobi.h | 0 {Eigen => third_party/eigen/Eigen}/src/LU/Determinant.h | 0 {Eigen => third_party/eigen/Eigen}/src/LU/FullPivLU.h | 0 {Eigen => third_party/eigen/Eigen}/src/LU/InverseImpl.h | 0 {Eigen => third_party/eigen/Eigen}/src/LU/PartialPivLU.h | 0 .../eigen/Eigen}/src/LU/PartialPivLU_LAPACKE.h | 0 {Eigen => third_party/eigen/Eigen}/src/LU/arch/Inverse_SSE.h | 0 .../eigen/Eigen}/src/MetisSupport/MetisSupport.h | 0 {Eigen => third_party/eigen/Eigen}/src/OrderingMethods/Amd.h | 0 .../eigen/Eigen}/src/OrderingMethods/Eigen_Colamd.h | 0 .../eigen/Eigen}/src/OrderingMethods/Ordering.h | 0 .../eigen/Eigen}/src/PaStiXSupport/PaStiXSupport.h | 0 .../eigen/Eigen}/src/PardisoSupport/PardisoSupport.h | 0 .../eigen/Eigen}/src/QR/ColPivHouseholderQR.h | 0 .../eigen/Eigen}/src/QR/ColPivHouseholderQR_LAPACKE.h | 0 .../eigen/Eigen}/src/QR/CompleteOrthogonalDecomposition.h | 0 .../eigen/Eigen}/src/QR/FullPivHouseholderQR.h | 0 {Eigen => third_party/eigen/Eigen}/src/QR/HouseholderQR.h | 0 .../eigen/Eigen}/src/QR/HouseholderQR_LAPACKE.h | 0 .../eigen/Eigen}/src/SPQRSupport/SuiteSparseQRSupport.h | 0 {Eigen => third_party/eigen/Eigen}/src/SVD/BDCSVD.h | 0 {Eigen => third_party/eigen/Eigen}/src/SVD/JacobiSVD.h | 0 .../eigen/Eigen}/src/SVD/JacobiSVD_LAPACKE.h | 0 {Eigen => third_party/eigen/Eigen}/src/SVD/SVDBase.h | 0 .../eigen/Eigen}/src/SVD/UpperBidiagonalization.h | 0 .../eigen/Eigen}/src/SparseCholesky/SimplicialCholesky.h | 0 .../Eigen}/src/SparseCholesky/SimplicialCholesky_impl.h | 0 .../eigen/Eigen}/src/SparseCore/AmbiVector.h | 0 .../eigen/Eigen}/src/SparseCore/CompressedStorage.h | 0 .../Eigen}/src/SparseCore/ConservativeSparseSparseProduct.h | 0 .../eigen/Eigen}/src/SparseCore/MappedSparseMatrix.h | 0 .../eigen/Eigen}/src/SparseCore/SparseAssign.h | 0 .../eigen/Eigen}/src/SparseCore/SparseBlock.h | 0 .../eigen/Eigen}/src/SparseCore/SparseColEtree.h | 0 .../eigen/Eigen}/src/SparseCore/SparseCompressedBase.h | 0 .../eigen/Eigen}/src/SparseCore/SparseCwiseBinaryOp.h | 0 .../eigen/Eigen}/src/SparseCore/SparseCwiseUnaryOp.h | 0 .../eigen/Eigen}/src/SparseCore/SparseDenseProduct.h | 0 .../eigen/Eigen}/src/SparseCore/SparseDiagonalProduct.h | 0 .../eigen/Eigen}/src/SparseCore/SparseDot.h | 0 .../eigen/Eigen}/src/SparseCore/SparseFuzzy.h | 0 .../eigen/Eigen}/src/SparseCore/SparseMap.h | 0 .../eigen/Eigen}/src/SparseCore/SparseMatrix.h | 0 .../eigen/Eigen}/src/SparseCore/SparseMatrixBase.h | 0 .../eigen/Eigen}/src/SparseCore/SparsePermutation.h | 0 .../eigen/Eigen}/src/SparseCore/SparseProduct.h | 0 .../eigen/Eigen}/src/SparseCore/SparseRedux.h | 0 .../eigen/Eigen}/src/SparseCore/SparseRef.h | 0 .../eigen/Eigen}/src/SparseCore/SparseSelfAdjointView.h | 0 .../eigen/Eigen}/src/SparseCore/SparseSolverBase.h | 0 .../Eigen}/src/SparseCore/SparseSparseProductWithPruning.h | 0 .../eigen/Eigen}/src/SparseCore/SparseTranspose.h | 0 .../eigen/Eigen}/src/SparseCore/SparseTriangularView.h | 0 .../eigen/Eigen}/src/SparseCore/SparseUtil.h | 0 .../eigen/Eigen}/src/SparseCore/SparseVector.h | 0 .../eigen/Eigen}/src/SparseCore/SparseView.h | 0 .../eigen/Eigen}/src/SparseCore/TriangularSolver.h | 0 {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLUImpl.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_Memory.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_Structs.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_SupernodalMatrix.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_Utils.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_column_bmod.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_column_dfs.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_copy_to_ucol.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_gemm_kernel.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_heap_relax_snode.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_kernel_bmod.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_panel_bmod.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_panel_dfs.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_pivotL.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_pruneL.h | 0 .../eigen/Eigen}/src/SparseLU/SparseLU_relax_snode.h | 0 {Eigen => third_party/eigen/Eigen}/src/SparseQR/SparseQR.h | 0 {Eigen => third_party/eigen/Eigen}/src/StlSupport/StdDeque.h | 0 {Eigen => third_party/eigen/Eigen}/src/StlSupport/StdList.h | 0 .../eigen/Eigen}/src/StlSupport/StdVector.h | 0 {Eigen => third_party/eigen/Eigen}/src/StlSupport/details.h | 0 .../eigen/Eigen}/src/SuperLUSupport/SuperLUSupport.h | 0 .../eigen/Eigen}/src/UmfPackSupport/UmfPackSupport.h | 0 {Eigen => third_party/eigen/Eigen}/src/misc/Image.h | 0 {Eigen => third_party/eigen/Eigen}/src/misc/Kernel.h | 0 {Eigen => third_party/eigen/Eigen}/src/misc/RealSvd2x2.h | 0 {Eigen => third_party/eigen/Eigen}/src/misc/blas.h | 0 {Eigen => third_party/eigen/Eigen}/src/misc/lapack.h | 0 {Eigen => third_party/eigen/Eigen}/src/misc/lapacke.h | 0 .../eigen/Eigen}/src/misc/lapacke_mangling.h | 0 .../eigen/Eigen}/src/plugins/ArrayCwiseBinaryOps.h | 0 .../eigen/Eigen}/src/plugins/ArrayCwiseUnaryOps.h | 0 .../eigen/Eigen}/src/plugins/BlockMethods.h | 0 .../eigen/Eigen}/src/plugins/CommonCwiseBinaryOps.h | 0 .../eigen/Eigen}/src/plugins/CommonCwiseUnaryOps.h | 0 .../eigen/Eigen}/src/plugins/MatrixCwiseBinaryOps.h | 0 .../eigen/Eigen}/src/plugins/MatrixCwiseUnaryOps.h | 0 303 files changed, 5 insertions(+) rename {Eigen => third_party/eigen/Eigen}/CMakeLists.txt (100%) rename {Eigen => third_party/eigen/Eigen}/Cholesky (100%) rename {Eigen => third_party/eigen/Eigen}/CholmodSupport (100%) rename {Eigen => third_party/eigen/Eigen}/Core (100%) rename {Eigen => third_party/eigen/Eigen}/Dense (100%) rename {Eigen => third_party/eigen/Eigen}/Eigen (100%) rename {Eigen => third_party/eigen/Eigen}/Eigenvalues (100%) rename {Eigen => third_party/eigen/Eigen}/Geometry (100%) rename {Eigen => third_party/eigen/Eigen}/Householder (100%) rename {Eigen => third_party/eigen/Eigen}/IterativeLinearSolvers (100%) rename {Eigen => third_party/eigen/Eigen}/Jacobi (100%) rename {Eigen => third_party/eigen/Eigen}/LU (100%) rename {Eigen => third_party/eigen/Eigen}/MetisSupport (100%) rename {Eigen => third_party/eigen/Eigen}/OrderingMethods (100%) rename {Eigen => third_party/eigen/Eigen}/PaStiXSupport (100%) rename {Eigen => third_party/eigen/Eigen}/PardisoSupport (100%) rename {Eigen => third_party/eigen/Eigen}/QR (100%) rename {Eigen => third_party/eigen/Eigen}/QtAlignedMalloc (100%) rename {Eigen => third_party/eigen/Eigen}/SPQRSupport (100%) rename {Eigen => third_party/eigen/Eigen}/SVD (100%) rename {Eigen => third_party/eigen/Eigen}/Sparse (100%) rename {Eigen => third_party/eigen/Eigen}/SparseCholesky (100%) rename {Eigen => third_party/eigen/Eigen}/SparseCore (100%) rename {Eigen => third_party/eigen/Eigen}/SparseLU (100%) rename {Eigen => third_party/eigen/Eigen}/SparseQR (100%) rename {Eigen => third_party/eigen/Eigen}/StdDeque (100%) rename {Eigen => third_party/eigen/Eigen}/StdList (100%) rename {Eigen => third_party/eigen/Eigen}/StdVector (100%) rename {Eigen => third_party/eigen/Eigen}/SuperLUSupport (100%) rename {Eigen => third_party/eigen/Eigen}/UmfPackSupport (100%) rename {Eigen => third_party/eigen/Eigen}/src/Cholesky/LDLT.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Cholesky/LLT.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Cholesky/LLT_LAPACKE.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/CholmodSupport/CholmodSupport.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Array.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/ArrayBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/ArrayWrapper.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Assign.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/AssignEvaluator.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Assign_MKL.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/BandMatrix.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Block.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/BooleanRedux.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/CommaInitializer.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/ConditionEstimator.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/CoreEvaluators.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/CoreIterators.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/CwiseBinaryOp.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/CwiseNullaryOp.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/CwiseTernaryOp.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/CwiseUnaryOp.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/CwiseUnaryView.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/DenseBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/DenseCoeffsBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/DenseStorage.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Diagonal.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/DiagonalMatrix.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/DiagonalProduct.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Dot.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/EigenBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/ForceAlignedAccess.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Fuzzy.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/GeneralProduct.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/GenericPacketMath.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/GlobalFunctions.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/IO.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Inverse.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Map.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/MapBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/MathFunctions.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/MathFunctionsImpl.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Matrix.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/MatrixBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/NestByValue.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/NoAlias.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/NumTraits.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/PermutationMatrix.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/PlainObjectBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Product.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/ProductEvaluators.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Random.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Redux.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Ref.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Replicate.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/ReturnByValue.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Reverse.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Select.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/SelfAdjointView.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/SelfCwiseBinaryOp.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Solve.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/SolveTriangular.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/SolverBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/StableNorm.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Stride.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Swap.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Transpose.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Transpositions.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/TriangularMatrix.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/VectorBlock.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/VectorwiseOp.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/Visitor.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/AVX/Complex.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/AVX/MathFunctions.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/AVX/PacketMath.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/AVX/TypeCasting.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/AVX512/MathFunctions.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/AVX512/PacketMath.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/AltiVec/Complex.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/AltiVec/MathFunctions.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/AltiVec/PacketMath.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/CUDA/Complex.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/CUDA/Half.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/CUDA/MathFunctions.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/CUDA/PacketMath.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/CUDA/PacketMathHalf.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/CUDA/TypeCasting.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/Default/ConjHelper.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/Default/Settings.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/NEON/Complex.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/NEON/MathFunctions.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/NEON/PacketMath.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/SSE/Complex.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/SSE/MathFunctions.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/SSE/PacketMath.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/SSE/TypeCasting.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/ZVector/Complex.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/ZVector/MathFunctions.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/arch/ZVector/PacketMath.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/functors/AssignmentFunctors.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/functors/BinaryFunctors.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/functors/NullaryFunctors.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/functors/StlFunctors.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/functors/TernaryFunctors.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/functors/UnaryFunctors.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/GeneralBlockPanelKernel.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/GeneralMatrixMatrix.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/GeneralMatrixMatrixTriangular.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/GeneralMatrixMatrix_BLAS.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/GeneralMatrixVector.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/GeneralMatrixVector_BLAS.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/Parallelizer.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/SelfadjointMatrixMatrix.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/SelfadjointMatrixMatrix_BLAS.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/SelfadjointMatrixVector.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/SelfadjointMatrixVector_BLAS.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/SelfadjointProduct.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/SelfadjointRank2Update.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/TriangularMatrixMatrix.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/TriangularMatrixMatrix_BLAS.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/TriangularMatrixVector.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/TriangularMatrixVector_BLAS.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/TriangularSolverMatrix.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/TriangularSolverMatrix_BLAS.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/products/TriangularSolverVector.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/util/BlasUtil.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/util/Constants.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/util/DisableStupidWarnings.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/util/ForwardDeclarations.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/util/MKL_support.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/util/Macros.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/util/Memory.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/util/Meta.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/util/NonMPL2.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/util/ReenableStupidWarnings.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/util/StaticAssert.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Core/util/XprHelper.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/ComplexEigenSolver.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/ComplexSchur.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/ComplexSchur_LAPACKE.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/EigenSolver.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/GeneralizedEigenSolver.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/HessenbergDecomposition.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/MatrixBaseEigenvalues.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/RealQZ.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/RealSchur.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/RealSchur_LAPACKE.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/SelfAdjointEigenSolver.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Eigenvalues/Tridiagonalization.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/AlignedBox.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/AngleAxis.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/EulerAngles.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/Homogeneous.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/Hyperplane.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/OrthoMethods.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/ParametrizedLine.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/Quaternion.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/Rotation2D.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/RotationBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/Scaling.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/Transform.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/Translation.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/Umeyama.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Geometry/arch/Geometry_SSE.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Householder/BlockHouseholder.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Householder/Householder.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Householder/HouseholderSequence.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/IterativeLinearSolvers/BasicPreconditioners.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/IterativeLinearSolvers/BiCGSTAB.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/IterativeLinearSolvers/ConjugateGradient.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/IterativeLinearSolvers/IncompleteCholesky.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/IterativeLinearSolvers/IncompleteLUT.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/IterativeLinearSolvers/IterativeSolverBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/IterativeLinearSolvers/SolveWithGuess.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/Jacobi/Jacobi.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/LU/Determinant.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/LU/FullPivLU.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/LU/InverseImpl.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/LU/PartialPivLU.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/LU/PartialPivLU_LAPACKE.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/LU/arch/Inverse_SSE.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/MetisSupport/MetisSupport.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/OrderingMethods/Amd.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/OrderingMethods/Eigen_Colamd.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/OrderingMethods/Ordering.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/PaStiXSupport/PaStiXSupport.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/PardisoSupport/PardisoSupport.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/QR/ColPivHouseholderQR.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/QR/ColPivHouseholderQR_LAPACKE.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/QR/CompleteOrthogonalDecomposition.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/QR/FullPivHouseholderQR.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/QR/HouseholderQR.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/QR/HouseholderQR_LAPACKE.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SPQRSupport/SuiteSparseQRSupport.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SVD/BDCSVD.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SVD/JacobiSVD.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SVD/JacobiSVD_LAPACKE.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SVD/SVDBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SVD/UpperBidiagonalization.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCholesky/SimplicialCholesky.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCholesky/SimplicialCholesky_impl.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/AmbiVector.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/CompressedStorage.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/ConservativeSparseSparseProduct.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/MappedSparseMatrix.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseAssign.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseBlock.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseColEtree.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseCompressedBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseCwiseBinaryOp.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseCwiseUnaryOp.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseDenseProduct.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseDiagonalProduct.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseDot.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseFuzzy.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseMap.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseMatrix.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseMatrixBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparsePermutation.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseProduct.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseRedux.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseRef.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseSelfAdjointView.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseSolverBase.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseSparseProductWithPruning.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseTranspose.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseTriangularView.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseUtil.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseVector.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/SparseView.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseCore/TriangularSolver.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLUImpl.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_Memory.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_Structs.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_SupernodalMatrix.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_Utils.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_column_bmod.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_column_dfs.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_copy_to_ucol.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_gemm_kernel.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_heap_relax_snode.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_kernel_bmod.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_panel_bmod.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_panel_dfs.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_pivotL.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_pruneL.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseLU/SparseLU_relax_snode.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SparseQR/SparseQR.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/StlSupport/StdDeque.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/StlSupport/StdList.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/StlSupport/StdVector.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/StlSupport/details.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/SuperLUSupport/SuperLUSupport.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/UmfPackSupport/UmfPackSupport.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/misc/Image.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/misc/Kernel.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/misc/RealSvd2x2.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/misc/blas.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/misc/lapack.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/misc/lapacke.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/misc/lapacke_mangling.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/plugins/ArrayCwiseBinaryOps.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/plugins/ArrayCwiseUnaryOps.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/plugins/BlockMethods.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/plugins/CommonCwiseBinaryOps.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/plugins/CommonCwiseUnaryOps.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/plugins/MatrixCwiseBinaryOps.h (100%) rename {Eigen => third_party/eigen/Eigen}/src/plugins/MatrixCwiseUnaryOps.h (100%) diff --git a/dabnn/CMakeLists.txt b/dabnn/CMakeLists.txt index dea2fd6..566ff3e 100644 --- a/dabnn/CMakeLists.txt +++ b/dabnn/CMakeLists.txt @@ -41,6 +41,11 @@ target_include_directories(dabnn ${CMAKE_CURRENT_BINARY_DIR} ${PROJECT_SOURCE_DIR} ) +target_include_directories(dabnn + SYSTEM + PRIVATE + ${PROJECT_SOURCE_DIR}/third_party/eigen + ) target_link_libraries(dabnn glog::glog flatbuffers diff --git a/Eigen/CMakeLists.txt b/third_party/eigen/Eigen/CMakeLists.txt similarity index 100% rename from Eigen/CMakeLists.txt rename to third_party/eigen/Eigen/CMakeLists.txt diff --git a/Eigen/Cholesky b/third_party/eigen/Eigen/Cholesky similarity index 100% rename from Eigen/Cholesky rename to third_party/eigen/Eigen/Cholesky diff --git a/Eigen/CholmodSupport b/third_party/eigen/Eigen/CholmodSupport similarity index 100% rename from Eigen/CholmodSupport rename to third_party/eigen/Eigen/CholmodSupport diff --git a/Eigen/Core b/third_party/eigen/Eigen/Core similarity index 100% rename from Eigen/Core rename to third_party/eigen/Eigen/Core diff --git a/Eigen/Dense b/third_party/eigen/Eigen/Dense similarity index 100% rename from Eigen/Dense rename to third_party/eigen/Eigen/Dense diff --git a/Eigen/Eigen b/third_party/eigen/Eigen/Eigen similarity index 100% rename from Eigen/Eigen rename to third_party/eigen/Eigen/Eigen diff --git a/Eigen/Eigenvalues b/third_party/eigen/Eigen/Eigenvalues similarity index 100% rename from Eigen/Eigenvalues rename to third_party/eigen/Eigen/Eigenvalues diff --git a/Eigen/Geometry b/third_party/eigen/Eigen/Geometry similarity index 100% rename from Eigen/Geometry rename to third_party/eigen/Eigen/Geometry diff --git a/Eigen/Householder b/third_party/eigen/Eigen/Householder similarity index 100% rename from Eigen/Householder rename to third_party/eigen/Eigen/Householder diff --git a/Eigen/IterativeLinearSolvers b/third_party/eigen/Eigen/IterativeLinearSolvers similarity index 100% rename from Eigen/IterativeLinearSolvers rename to third_party/eigen/Eigen/IterativeLinearSolvers diff --git a/Eigen/Jacobi b/third_party/eigen/Eigen/Jacobi similarity index 100% rename from Eigen/Jacobi rename to third_party/eigen/Eigen/Jacobi diff --git a/Eigen/LU b/third_party/eigen/Eigen/LU similarity index 100% rename from Eigen/LU rename to third_party/eigen/Eigen/LU diff --git a/Eigen/MetisSupport b/third_party/eigen/Eigen/MetisSupport similarity index 100% rename from Eigen/MetisSupport rename to third_party/eigen/Eigen/MetisSupport diff --git a/Eigen/OrderingMethods b/third_party/eigen/Eigen/OrderingMethods similarity index 100% rename from Eigen/OrderingMethods rename to third_party/eigen/Eigen/OrderingMethods diff --git a/Eigen/PaStiXSupport b/third_party/eigen/Eigen/PaStiXSupport similarity index 100% rename from Eigen/PaStiXSupport rename to third_party/eigen/Eigen/PaStiXSupport diff --git a/Eigen/PardisoSupport b/third_party/eigen/Eigen/PardisoSupport similarity index 100% rename from Eigen/PardisoSupport rename to third_party/eigen/Eigen/PardisoSupport diff --git a/Eigen/QR b/third_party/eigen/Eigen/QR similarity index 100% rename from Eigen/QR rename to third_party/eigen/Eigen/QR diff --git a/Eigen/QtAlignedMalloc b/third_party/eigen/Eigen/QtAlignedMalloc similarity index 100% rename from Eigen/QtAlignedMalloc rename to third_party/eigen/Eigen/QtAlignedMalloc diff --git a/Eigen/SPQRSupport b/third_party/eigen/Eigen/SPQRSupport similarity index 100% rename from Eigen/SPQRSupport rename to third_party/eigen/Eigen/SPQRSupport diff --git a/Eigen/SVD b/third_party/eigen/Eigen/SVD similarity index 100% rename from Eigen/SVD rename to third_party/eigen/Eigen/SVD diff --git a/Eigen/Sparse b/third_party/eigen/Eigen/Sparse similarity index 100% rename from Eigen/Sparse rename to third_party/eigen/Eigen/Sparse diff --git a/Eigen/SparseCholesky b/third_party/eigen/Eigen/SparseCholesky similarity index 100% rename from Eigen/SparseCholesky rename to third_party/eigen/Eigen/SparseCholesky diff --git a/Eigen/SparseCore b/third_party/eigen/Eigen/SparseCore similarity index 100% rename from Eigen/SparseCore rename to third_party/eigen/Eigen/SparseCore diff --git a/Eigen/SparseLU b/third_party/eigen/Eigen/SparseLU similarity index 100% rename from Eigen/SparseLU rename to third_party/eigen/Eigen/SparseLU diff --git a/Eigen/SparseQR b/third_party/eigen/Eigen/SparseQR similarity index 100% rename from Eigen/SparseQR rename to third_party/eigen/Eigen/SparseQR diff --git a/Eigen/StdDeque b/third_party/eigen/Eigen/StdDeque similarity index 100% rename from Eigen/StdDeque rename to third_party/eigen/Eigen/StdDeque diff --git a/Eigen/StdList b/third_party/eigen/Eigen/StdList similarity index 100% rename from Eigen/StdList rename to third_party/eigen/Eigen/StdList diff --git a/Eigen/StdVector b/third_party/eigen/Eigen/StdVector similarity index 100% rename from Eigen/StdVector rename to third_party/eigen/Eigen/StdVector diff --git a/Eigen/SuperLUSupport b/third_party/eigen/Eigen/SuperLUSupport similarity index 100% rename from Eigen/SuperLUSupport rename to third_party/eigen/Eigen/SuperLUSupport diff --git a/Eigen/UmfPackSupport b/third_party/eigen/Eigen/UmfPackSupport similarity index 100% rename from Eigen/UmfPackSupport rename to third_party/eigen/Eigen/UmfPackSupport diff --git a/Eigen/src/Cholesky/LDLT.h b/third_party/eigen/Eigen/src/Cholesky/LDLT.h similarity index 100% rename from Eigen/src/Cholesky/LDLT.h rename to third_party/eigen/Eigen/src/Cholesky/LDLT.h diff --git a/Eigen/src/Cholesky/LLT.h b/third_party/eigen/Eigen/src/Cholesky/LLT.h similarity index 100% rename from Eigen/src/Cholesky/LLT.h rename to third_party/eigen/Eigen/src/Cholesky/LLT.h diff --git a/Eigen/src/Cholesky/LLT_LAPACKE.h b/third_party/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h similarity index 100% rename from Eigen/src/Cholesky/LLT_LAPACKE.h rename to third_party/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h diff --git a/Eigen/src/CholmodSupport/CholmodSupport.h b/third_party/eigen/Eigen/src/CholmodSupport/CholmodSupport.h similarity index 100% rename from Eigen/src/CholmodSupport/CholmodSupport.h rename to third_party/eigen/Eigen/src/CholmodSupport/CholmodSupport.h diff --git a/Eigen/src/Core/Array.h b/third_party/eigen/Eigen/src/Core/Array.h similarity index 100% rename from Eigen/src/Core/Array.h rename to third_party/eigen/Eigen/src/Core/Array.h diff --git a/Eigen/src/Core/ArrayBase.h b/third_party/eigen/Eigen/src/Core/ArrayBase.h similarity index 100% rename from Eigen/src/Core/ArrayBase.h rename to third_party/eigen/Eigen/src/Core/ArrayBase.h diff --git a/Eigen/src/Core/ArrayWrapper.h b/third_party/eigen/Eigen/src/Core/ArrayWrapper.h similarity index 100% rename from Eigen/src/Core/ArrayWrapper.h rename to third_party/eigen/Eigen/src/Core/ArrayWrapper.h diff --git a/Eigen/src/Core/Assign.h b/third_party/eigen/Eigen/src/Core/Assign.h similarity index 100% rename from Eigen/src/Core/Assign.h rename to third_party/eigen/Eigen/src/Core/Assign.h diff --git a/Eigen/src/Core/AssignEvaluator.h b/third_party/eigen/Eigen/src/Core/AssignEvaluator.h similarity index 100% rename from Eigen/src/Core/AssignEvaluator.h rename to third_party/eigen/Eigen/src/Core/AssignEvaluator.h diff --git a/Eigen/src/Core/Assign_MKL.h b/third_party/eigen/Eigen/src/Core/Assign_MKL.h similarity index 100% rename from Eigen/src/Core/Assign_MKL.h rename to third_party/eigen/Eigen/src/Core/Assign_MKL.h diff --git a/Eigen/src/Core/BandMatrix.h b/third_party/eigen/Eigen/src/Core/BandMatrix.h similarity index 100% rename from Eigen/src/Core/BandMatrix.h rename to third_party/eigen/Eigen/src/Core/BandMatrix.h diff --git a/Eigen/src/Core/Block.h b/third_party/eigen/Eigen/src/Core/Block.h similarity index 100% rename from Eigen/src/Core/Block.h rename to third_party/eigen/Eigen/src/Core/Block.h diff --git a/Eigen/src/Core/BooleanRedux.h b/third_party/eigen/Eigen/src/Core/BooleanRedux.h similarity index 100% rename from Eigen/src/Core/BooleanRedux.h rename to third_party/eigen/Eigen/src/Core/BooleanRedux.h diff --git a/Eigen/src/Core/CommaInitializer.h b/third_party/eigen/Eigen/src/Core/CommaInitializer.h similarity index 100% rename from Eigen/src/Core/CommaInitializer.h rename to third_party/eigen/Eigen/src/Core/CommaInitializer.h diff --git a/Eigen/src/Core/ConditionEstimator.h b/third_party/eigen/Eigen/src/Core/ConditionEstimator.h similarity index 100% rename from Eigen/src/Core/ConditionEstimator.h rename to third_party/eigen/Eigen/src/Core/ConditionEstimator.h diff --git a/Eigen/src/Core/CoreEvaluators.h b/third_party/eigen/Eigen/src/Core/CoreEvaluators.h similarity index 100% rename from Eigen/src/Core/CoreEvaluators.h rename to third_party/eigen/Eigen/src/Core/CoreEvaluators.h diff --git a/Eigen/src/Core/CoreIterators.h b/third_party/eigen/Eigen/src/Core/CoreIterators.h similarity index 100% rename from Eigen/src/Core/CoreIterators.h rename to third_party/eigen/Eigen/src/Core/CoreIterators.h diff --git a/Eigen/src/Core/CwiseBinaryOp.h b/third_party/eigen/Eigen/src/Core/CwiseBinaryOp.h similarity index 100% rename from Eigen/src/Core/CwiseBinaryOp.h rename to third_party/eigen/Eigen/src/Core/CwiseBinaryOp.h diff --git a/Eigen/src/Core/CwiseNullaryOp.h b/third_party/eigen/Eigen/src/Core/CwiseNullaryOp.h similarity index 100% rename from Eigen/src/Core/CwiseNullaryOp.h rename to third_party/eigen/Eigen/src/Core/CwiseNullaryOp.h diff --git a/Eigen/src/Core/CwiseTernaryOp.h b/third_party/eigen/Eigen/src/Core/CwiseTernaryOp.h similarity index 100% rename from Eigen/src/Core/CwiseTernaryOp.h rename to third_party/eigen/Eigen/src/Core/CwiseTernaryOp.h diff --git a/Eigen/src/Core/CwiseUnaryOp.h b/third_party/eigen/Eigen/src/Core/CwiseUnaryOp.h similarity index 100% rename from Eigen/src/Core/CwiseUnaryOp.h rename to third_party/eigen/Eigen/src/Core/CwiseUnaryOp.h diff --git a/Eigen/src/Core/CwiseUnaryView.h b/third_party/eigen/Eigen/src/Core/CwiseUnaryView.h similarity index 100% rename from Eigen/src/Core/CwiseUnaryView.h rename to third_party/eigen/Eigen/src/Core/CwiseUnaryView.h diff --git a/Eigen/src/Core/DenseBase.h b/third_party/eigen/Eigen/src/Core/DenseBase.h similarity index 100% rename from Eigen/src/Core/DenseBase.h rename to third_party/eigen/Eigen/src/Core/DenseBase.h diff --git a/Eigen/src/Core/DenseCoeffsBase.h b/third_party/eigen/Eigen/src/Core/DenseCoeffsBase.h similarity index 100% rename from Eigen/src/Core/DenseCoeffsBase.h rename to third_party/eigen/Eigen/src/Core/DenseCoeffsBase.h diff --git a/Eigen/src/Core/DenseStorage.h b/third_party/eigen/Eigen/src/Core/DenseStorage.h similarity index 100% rename from Eigen/src/Core/DenseStorage.h rename to third_party/eigen/Eigen/src/Core/DenseStorage.h diff --git a/Eigen/src/Core/Diagonal.h b/third_party/eigen/Eigen/src/Core/Diagonal.h similarity index 100% rename from Eigen/src/Core/Diagonal.h rename to third_party/eigen/Eigen/src/Core/Diagonal.h diff --git a/Eigen/src/Core/DiagonalMatrix.h b/third_party/eigen/Eigen/src/Core/DiagonalMatrix.h similarity index 100% rename from Eigen/src/Core/DiagonalMatrix.h rename to third_party/eigen/Eigen/src/Core/DiagonalMatrix.h diff --git a/Eigen/src/Core/DiagonalProduct.h b/third_party/eigen/Eigen/src/Core/DiagonalProduct.h similarity index 100% rename from Eigen/src/Core/DiagonalProduct.h rename to third_party/eigen/Eigen/src/Core/DiagonalProduct.h diff --git a/Eigen/src/Core/Dot.h b/third_party/eigen/Eigen/src/Core/Dot.h similarity index 100% rename from Eigen/src/Core/Dot.h rename to third_party/eigen/Eigen/src/Core/Dot.h diff --git a/Eigen/src/Core/EigenBase.h b/third_party/eigen/Eigen/src/Core/EigenBase.h similarity index 100% rename from Eigen/src/Core/EigenBase.h rename to third_party/eigen/Eigen/src/Core/EigenBase.h diff --git a/Eigen/src/Core/ForceAlignedAccess.h b/third_party/eigen/Eigen/src/Core/ForceAlignedAccess.h similarity index 100% rename from Eigen/src/Core/ForceAlignedAccess.h rename to third_party/eigen/Eigen/src/Core/ForceAlignedAccess.h diff --git a/Eigen/src/Core/Fuzzy.h b/third_party/eigen/Eigen/src/Core/Fuzzy.h similarity index 100% rename from Eigen/src/Core/Fuzzy.h rename to third_party/eigen/Eigen/src/Core/Fuzzy.h diff --git a/Eigen/src/Core/GeneralProduct.h b/third_party/eigen/Eigen/src/Core/GeneralProduct.h similarity index 100% rename from Eigen/src/Core/GeneralProduct.h rename to third_party/eigen/Eigen/src/Core/GeneralProduct.h diff --git a/Eigen/src/Core/GenericPacketMath.h b/third_party/eigen/Eigen/src/Core/GenericPacketMath.h similarity index 100% rename from Eigen/src/Core/GenericPacketMath.h rename to third_party/eigen/Eigen/src/Core/GenericPacketMath.h diff --git a/Eigen/src/Core/GlobalFunctions.h b/third_party/eigen/Eigen/src/Core/GlobalFunctions.h similarity index 100% rename from Eigen/src/Core/GlobalFunctions.h rename to third_party/eigen/Eigen/src/Core/GlobalFunctions.h diff --git a/Eigen/src/Core/IO.h b/third_party/eigen/Eigen/src/Core/IO.h similarity index 100% rename from Eigen/src/Core/IO.h rename to third_party/eigen/Eigen/src/Core/IO.h diff --git a/Eigen/src/Core/Inverse.h b/third_party/eigen/Eigen/src/Core/Inverse.h similarity index 100% rename from Eigen/src/Core/Inverse.h rename to third_party/eigen/Eigen/src/Core/Inverse.h diff --git a/Eigen/src/Core/Map.h b/third_party/eigen/Eigen/src/Core/Map.h similarity index 100% rename from Eigen/src/Core/Map.h rename to third_party/eigen/Eigen/src/Core/Map.h diff --git a/Eigen/src/Core/MapBase.h b/third_party/eigen/Eigen/src/Core/MapBase.h similarity index 100% rename from Eigen/src/Core/MapBase.h rename to third_party/eigen/Eigen/src/Core/MapBase.h diff --git a/Eigen/src/Core/MathFunctions.h b/third_party/eigen/Eigen/src/Core/MathFunctions.h similarity index 100% rename from Eigen/src/Core/MathFunctions.h rename to third_party/eigen/Eigen/src/Core/MathFunctions.h diff --git a/Eigen/src/Core/MathFunctionsImpl.h b/third_party/eigen/Eigen/src/Core/MathFunctionsImpl.h similarity index 100% rename from Eigen/src/Core/MathFunctionsImpl.h rename to third_party/eigen/Eigen/src/Core/MathFunctionsImpl.h diff --git a/Eigen/src/Core/Matrix.h b/third_party/eigen/Eigen/src/Core/Matrix.h similarity index 100% rename from Eigen/src/Core/Matrix.h rename to third_party/eigen/Eigen/src/Core/Matrix.h diff --git a/Eigen/src/Core/MatrixBase.h b/third_party/eigen/Eigen/src/Core/MatrixBase.h similarity index 100% rename from Eigen/src/Core/MatrixBase.h rename to third_party/eigen/Eigen/src/Core/MatrixBase.h diff --git a/Eigen/src/Core/NestByValue.h b/third_party/eigen/Eigen/src/Core/NestByValue.h similarity index 100% rename from Eigen/src/Core/NestByValue.h rename to third_party/eigen/Eigen/src/Core/NestByValue.h diff --git a/Eigen/src/Core/NoAlias.h b/third_party/eigen/Eigen/src/Core/NoAlias.h similarity index 100% rename from Eigen/src/Core/NoAlias.h rename to third_party/eigen/Eigen/src/Core/NoAlias.h diff --git a/Eigen/src/Core/NumTraits.h b/third_party/eigen/Eigen/src/Core/NumTraits.h similarity index 100% rename from Eigen/src/Core/NumTraits.h rename to third_party/eigen/Eigen/src/Core/NumTraits.h diff --git a/Eigen/src/Core/PermutationMatrix.h b/third_party/eigen/Eigen/src/Core/PermutationMatrix.h similarity index 100% rename from Eigen/src/Core/PermutationMatrix.h rename to third_party/eigen/Eigen/src/Core/PermutationMatrix.h diff --git a/Eigen/src/Core/PlainObjectBase.h b/third_party/eigen/Eigen/src/Core/PlainObjectBase.h similarity index 100% rename from Eigen/src/Core/PlainObjectBase.h rename to third_party/eigen/Eigen/src/Core/PlainObjectBase.h diff --git a/Eigen/src/Core/Product.h b/third_party/eigen/Eigen/src/Core/Product.h similarity index 100% rename from Eigen/src/Core/Product.h rename to third_party/eigen/Eigen/src/Core/Product.h diff --git a/Eigen/src/Core/ProductEvaluators.h b/third_party/eigen/Eigen/src/Core/ProductEvaluators.h similarity index 100% rename from Eigen/src/Core/ProductEvaluators.h rename to third_party/eigen/Eigen/src/Core/ProductEvaluators.h diff --git a/Eigen/src/Core/Random.h b/third_party/eigen/Eigen/src/Core/Random.h similarity index 100% rename from Eigen/src/Core/Random.h rename to third_party/eigen/Eigen/src/Core/Random.h diff --git a/Eigen/src/Core/Redux.h b/third_party/eigen/Eigen/src/Core/Redux.h similarity index 100% rename from Eigen/src/Core/Redux.h rename to third_party/eigen/Eigen/src/Core/Redux.h diff --git a/Eigen/src/Core/Ref.h b/third_party/eigen/Eigen/src/Core/Ref.h similarity index 100% rename from Eigen/src/Core/Ref.h rename to third_party/eigen/Eigen/src/Core/Ref.h diff --git a/Eigen/src/Core/Replicate.h b/third_party/eigen/Eigen/src/Core/Replicate.h similarity index 100% rename from Eigen/src/Core/Replicate.h rename to third_party/eigen/Eigen/src/Core/Replicate.h diff --git a/Eigen/src/Core/ReturnByValue.h b/third_party/eigen/Eigen/src/Core/ReturnByValue.h similarity index 100% rename from Eigen/src/Core/ReturnByValue.h rename to third_party/eigen/Eigen/src/Core/ReturnByValue.h diff --git a/Eigen/src/Core/Reverse.h b/third_party/eigen/Eigen/src/Core/Reverse.h similarity index 100% rename from Eigen/src/Core/Reverse.h rename to third_party/eigen/Eigen/src/Core/Reverse.h diff --git a/Eigen/src/Core/Select.h b/third_party/eigen/Eigen/src/Core/Select.h similarity index 100% rename from Eigen/src/Core/Select.h rename to third_party/eigen/Eigen/src/Core/Select.h diff --git a/Eigen/src/Core/SelfAdjointView.h b/third_party/eigen/Eigen/src/Core/SelfAdjointView.h similarity index 100% rename from Eigen/src/Core/SelfAdjointView.h rename to third_party/eigen/Eigen/src/Core/SelfAdjointView.h diff --git a/Eigen/src/Core/SelfCwiseBinaryOp.h b/third_party/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h similarity index 100% rename from Eigen/src/Core/SelfCwiseBinaryOp.h rename to third_party/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h diff --git a/Eigen/src/Core/Solve.h b/third_party/eigen/Eigen/src/Core/Solve.h similarity index 100% rename from Eigen/src/Core/Solve.h rename to third_party/eigen/Eigen/src/Core/Solve.h diff --git a/Eigen/src/Core/SolveTriangular.h b/third_party/eigen/Eigen/src/Core/SolveTriangular.h similarity index 100% rename from Eigen/src/Core/SolveTriangular.h rename to third_party/eigen/Eigen/src/Core/SolveTriangular.h diff --git a/Eigen/src/Core/SolverBase.h b/third_party/eigen/Eigen/src/Core/SolverBase.h similarity index 100% rename from Eigen/src/Core/SolverBase.h rename to third_party/eigen/Eigen/src/Core/SolverBase.h diff --git a/Eigen/src/Core/StableNorm.h b/third_party/eigen/Eigen/src/Core/StableNorm.h similarity index 100% rename from Eigen/src/Core/StableNorm.h rename to third_party/eigen/Eigen/src/Core/StableNorm.h diff --git a/Eigen/src/Core/Stride.h b/third_party/eigen/Eigen/src/Core/Stride.h similarity index 100% rename from Eigen/src/Core/Stride.h rename to third_party/eigen/Eigen/src/Core/Stride.h diff --git a/Eigen/src/Core/Swap.h b/third_party/eigen/Eigen/src/Core/Swap.h similarity index 100% rename from Eigen/src/Core/Swap.h rename to third_party/eigen/Eigen/src/Core/Swap.h diff --git a/Eigen/src/Core/Transpose.h b/third_party/eigen/Eigen/src/Core/Transpose.h similarity index 100% rename from Eigen/src/Core/Transpose.h rename to third_party/eigen/Eigen/src/Core/Transpose.h diff --git a/Eigen/src/Core/Transpositions.h b/third_party/eigen/Eigen/src/Core/Transpositions.h similarity index 100% rename from Eigen/src/Core/Transpositions.h rename to third_party/eigen/Eigen/src/Core/Transpositions.h diff --git a/Eigen/src/Core/TriangularMatrix.h b/third_party/eigen/Eigen/src/Core/TriangularMatrix.h similarity index 100% rename from Eigen/src/Core/TriangularMatrix.h rename to third_party/eigen/Eigen/src/Core/TriangularMatrix.h diff --git a/Eigen/src/Core/VectorBlock.h b/third_party/eigen/Eigen/src/Core/VectorBlock.h similarity index 100% rename from Eigen/src/Core/VectorBlock.h rename to third_party/eigen/Eigen/src/Core/VectorBlock.h diff --git a/Eigen/src/Core/VectorwiseOp.h b/third_party/eigen/Eigen/src/Core/VectorwiseOp.h similarity index 100% rename from Eigen/src/Core/VectorwiseOp.h rename to third_party/eigen/Eigen/src/Core/VectorwiseOp.h diff --git a/Eigen/src/Core/Visitor.h b/third_party/eigen/Eigen/src/Core/Visitor.h similarity index 100% rename from Eigen/src/Core/Visitor.h rename to third_party/eigen/Eigen/src/Core/Visitor.h diff --git a/Eigen/src/Core/arch/AVX/Complex.h b/third_party/eigen/Eigen/src/Core/arch/AVX/Complex.h similarity index 100% rename from Eigen/src/Core/arch/AVX/Complex.h rename to third_party/eigen/Eigen/src/Core/arch/AVX/Complex.h diff --git a/Eigen/src/Core/arch/AVX/MathFunctions.h b/third_party/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h similarity index 100% rename from Eigen/src/Core/arch/AVX/MathFunctions.h rename to third_party/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h diff --git a/Eigen/src/Core/arch/AVX/PacketMath.h b/third_party/eigen/Eigen/src/Core/arch/AVX/PacketMath.h similarity index 100% rename from Eigen/src/Core/arch/AVX/PacketMath.h rename to third_party/eigen/Eigen/src/Core/arch/AVX/PacketMath.h diff --git a/Eigen/src/Core/arch/AVX/TypeCasting.h b/third_party/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h similarity index 100% rename from Eigen/src/Core/arch/AVX/TypeCasting.h rename to third_party/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h diff --git a/Eigen/src/Core/arch/AVX512/MathFunctions.h b/third_party/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h similarity index 100% rename from Eigen/src/Core/arch/AVX512/MathFunctions.h rename to third_party/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h diff --git a/Eigen/src/Core/arch/AVX512/PacketMath.h b/third_party/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h similarity index 100% rename from Eigen/src/Core/arch/AVX512/PacketMath.h rename to third_party/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h diff --git a/Eigen/src/Core/arch/AltiVec/Complex.h b/third_party/eigen/Eigen/src/Core/arch/AltiVec/Complex.h similarity index 100% rename from Eigen/src/Core/arch/AltiVec/Complex.h rename to third_party/eigen/Eigen/src/Core/arch/AltiVec/Complex.h diff --git a/Eigen/src/Core/arch/AltiVec/MathFunctions.h b/third_party/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h similarity index 100% rename from Eigen/src/Core/arch/AltiVec/MathFunctions.h rename to third_party/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h diff --git a/Eigen/src/Core/arch/AltiVec/PacketMath.h b/third_party/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h similarity index 100% rename from Eigen/src/Core/arch/AltiVec/PacketMath.h rename to third_party/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h diff --git a/Eigen/src/Core/arch/CUDA/Complex.h b/third_party/eigen/Eigen/src/Core/arch/CUDA/Complex.h similarity index 100% rename from Eigen/src/Core/arch/CUDA/Complex.h rename to third_party/eigen/Eigen/src/Core/arch/CUDA/Complex.h diff --git a/Eigen/src/Core/arch/CUDA/Half.h b/third_party/eigen/Eigen/src/Core/arch/CUDA/Half.h similarity index 100% rename from Eigen/src/Core/arch/CUDA/Half.h rename to third_party/eigen/Eigen/src/Core/arch/CUDA/Half.h diff --git a/Eigen/src/Core/arch/CUDA/MathFunctions.h b/third_party/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h similarity index 100% rename from Eigen/src/Core/arch/CUDA/MathFunctions.h rename to third_party/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h diff --git a/Eigen/src/Core/arch/CUDA/PacketMath.h b/third_party/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h similarity index 100% rename from Eigen/src/Core/arch/CUDA/PacketMath.h rename to third_party/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h diff --git a/Eigen/src/Core/arch/CUDA/PacketMathHalf.h b/third_party/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h similarity index 100% rename from Eigen/src/Core/arch/CUDA/PacketMathHalf.h rename to third_party/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h diff --git a/Eigen/src/Core/arch/CUDA/TypeCasting.h b/third_party/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h similarity index 100% rename from Eigen/src/Core/arch/CUDA/TypeCasting.h rename to third_party/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h diff --git a/Eigen/src/Core/arch/Default/ConjHelper.h b/third_party/eigen/Eigen/src/Core/arch/Default/ConjHelper.h similarity index 100% rename from Eigen/src/Core/arch/Default/ConjHelper.h rename to third_party/eigen/Eigen/src/Core/arch/Default/ConjHelper.h diff --git a/Eigen/src/Core/arch/Default/Settings.h b/third_party/eigen/Eigen/src/Core/arch/Default/Settings.h similarity index 100% rename from Eigen/src/Core/arch/Default/Settings.h rename to third_party/eigen/Eigen/src/Core/arch/Default/Settings.h diff --git a/Eigen/src/Core/arch/NEON/Complex.h b/third_party/eigen/Eigen/src/Core/arch/NEON/Complex.h similarity index 100% rename from Eigen/src/Core/arch/NEON/Complex.h rename to third_party/eigen/Eigen/src/Core/arch/NEON/Complex.h diff --git a/Eigen/src/Core/arch/NEON/MathFunctions.h b/third_party/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h similarity index 100% rename from Eigen/src/Core/arch/NEON/MathFunctions.h rename to third_party/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h diff --git a/Eigen/src/Core/arch/NEON/PacketMath.h b/third_party/eigen/Eigen/src/Core/arch/NEON/PacketMath.h similarity index 100% rename from Eigen/src/Core/arch/NEON/PacketMath.h rename to third_party/eigen/Eigen/src/Core/arch/NEON/PacketMath.h diff --git a/Eigen/src/Core/arch/SSE/Complex.h b/third_party/eigen/Eigen/src/Core/arch/SSE/Complex.h similarity index 100% rename from Eigen/src/Core/arch/SSE/Complex.h rename to third_party/eigen/Eigen/src/Core/arch/SSE/Complex.h diff --git a/Eigen/src/Core/arch/SSE/MathFunctions.h b/third_party/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h similarity index 100% rename from Eigen/src/Core/arch/SSE/MathFunctions.h rename to third_party/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h diff --git a/Eigen/src/Core/arch/SSE/PacketMath.h b/third_party/eigen/Eigen/src/Core/arch/SSE/PacketMath.h similarity index 100% rename from Eigen/src/Core/arch/SSE/PacketMath.h rename to third_party/eigen/Eigen/src/Core/arch/SSE/PacketMath.h diff --git a/Eigen/src/Core/arch/SSE/TypeCasting.h b/third_party/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h similarity index 100% rename from Eigen/src/Core/arch/SSE/TypeCasting.h rename to third_party/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h diff --git a/Eigen/src/Core/arch/ZVector/Complex.h b/third_party/eigen/Eigen/src/Core/arch/ZVector/Complex.h similarity index 100% rename from Eigen/src/Core/arch/ZVector/Complex.h rename to third_party/eigen/Eigen/src/Core/arch/ZVector/Complex.h diff --git a/Eigen/src/Core/arch/ZVector/MathFunctions.h b/third_party/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h similarity index 100% rename from Eigen/src/Core/arch/ZVector/MathFunctions.h rename to third_party/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h diff --git a/Eigen/src/Core/arch/ZVector/PacketMath.h b/third_party/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h similarity index 100% rename from Eigen/src/Core/arch/ZVector/PacketMath.h rename to third_party/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h diff --git a/Eigen/src/Core/functors/AssignmentFunctors.h b/third_party/eigen/Eigen/src/Core/functors/AssignmentFunctors.h similarity index 100% rename from Eigen/src/Core/functors/AssignmentFunctors.h rename to third_party/eigen/Eigen/src/Core/functors/AssignmentFunctors.h diff --git a/Eigen/src/Core/functors/BinaryFunctors.h b/third_party/eigen/Eigen/src/Core/functors/BinaryFunctors.h similarity index 100% rename from Eigen/src/Core/functors/BinaryFunctors.h rename to third_party/eigen/Eigen/src/Core/functors/BinaryFunctors.h diff --git a/Eigen/src/Core/functors/NullaryFunctors.h b/third_party/eigen/Eigen/src/Core/functors/NullaryFunctors.h similarity index 100% rename from Eigen/src/Core/functors/NullaryFunctors.h rename to third_party/eigen/Eigen/src/Core/functors/NullaryFunctors.h diff --git a/Eigen/src/Core/functors/StlFunctors.h b/third_party/eigen/Eigen/src/Core/functors/StlFunctors.h similarity index 100% rename from Eigen/src/Core/functors/StlFunctors.h rename to third_party/eigen/Eigen/src/Core/functors/StlFunctors.h diff --git a/Eigen/src/Core/functors/TernaryFunctors.h b/third_party/eigen/Eigen/src/Core/functors/TernaryFunctors.h similarity index 100% rename from Eigen/src/Core/functors/TernaryFunctors.h rename to third_party/eigen/Eigen/src/Core/functors/TernaryFunctors.h diff --git a/Eigen/src/Core/functors/UnaryFunctors.h b/third_party/eigen/Eigen/src/Core/functors/UnaryFunctors.h similarity index 100% rename from Eigen/src/Core/functors/UnaryFunctors.h rename to third_party/eigen/Eigen/src/Core/functors/UnaryFunctors.h diff --git a/Eigen/src/Core/products/GeneralBlockPanelKernel.h b/third_party/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h similarity index 100% rename from Eigen/src/Core/products/GeneralBlockPanelKernel.h rename to third_party/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h diff --git a/Eigen/src/Core/products/GeneralMatrixMatrix.h b/third_party/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h similarity index 100% rename from Eigen/src/Core/products/GeneralMatrixMatrix.h rename to third_party/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h diff --git a/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h b/third_party/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h similarity index 100% rename from Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h rename to third_party/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h diff --git a/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h b/third_party/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h similarity index 100% rename from Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h rename to third_party/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h diff --git a/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h b/third_party/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h similarity index 100% rename from Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h rename to third_party/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h diff --git a/Eigen/src/Core/products/GeneralMatrixVector.h b/third_party/eigen/Eigen/src/Core/products/GeneralMatrixVector.h similarity index 100% rename from Eigen/src/Core/products/GeneralMatrixVector.h rename to third_party/eigen/Eigen/src/Core/products/GeneralMatrixVector.h diff --git a/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h b/third_party/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h similarity index 100% rename from Eigen/src/Core/products/GeneralMatrixVector_BLAS.h rename to third_party/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h diff --git a/Eigen/src/Core/products/Parallelizer.h b/third_party/eigen/Eigen/src/Core/products/Parallelizer.h similarity index 100% rename from Eigen/src/Core/products/Parallelizer.h rename to third_party/eigen/Eigen/src/Core/products/Parallelizer.h diff --git a/Eigen/src/Core/products/SelfadjointMatrixMatrix.h b/third_party/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h similarity index 100% rename from Eigen/src/Core/products/SelfadjointMatrixMatrix.h rename to third_party/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h diff --git a/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h b/third_party/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h similarity index 100% rename from Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h rename to third_party/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h diff --git a/Eigen/src/Core/products/SelfadjointMatrixVector.h b/third_party/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h similarity index 100% rename from Eigen/src/Core/products/SelfadjointMatrixVector.h rename to third_party/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h diff --git a/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h b/third_party/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h similarity index 100% rename from Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h rename to third_party/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h diff --git a/Eigen/src/Core/products/SelfadjointProduct.h b/third_party/eigen/Eigen/src/Core/products/SelfadjointProduct.h similarity index 100% rename from Eigen/src/Core/products/SelfadjointProduct.h rename to third_party/eigen/Eigen/src/Core/products/SelfadjointProduct.h diff --git a/Eigen/src/Core/products/SelfadjointRank2Update.h b/third_party/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h similarity index 100% rename from Eigen/src/Core/products/SelfadjointRank2Update.h rename to third_party/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h diff --git a/Eigen/src/Core/products/TriangularMatrixMatrix.h b/third_party/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h similarity index 100% rename from Eigen/src/Core/products/TriangularMatrixMatrix.h rename to third_party/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h diff --git a/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h b/third_party/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h similarity index 100% rename from Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h rename to third_party/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h diff --git a/Eigen/src/Core/products/TriangularMatrixVector.h b/third_party/eigen/Eigen/src/Core/products/TriangularMatrixVector.h similarity index 100% rename from Eigen/src/Core/products/TriangularMatrixVector.h rename to third_party/eigen/Eigen/src/Core/products/TriangularMatrixVector.h diff --git a/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h b/third_party/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h similarity index 100% rename from Eigen/src/Core/products/TriangularMatrixVector_BLAS.h rename to third_party/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h diff --git a/Eigen/src/Core/products/TriangularSolverMatrix.h b/third_party/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h similarity index 100% rename from Eigen/src/Core/products/TriangularSolverMatrix.h rename to third_party/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h diff --git a/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h b/third_party/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h similarity index 100% rename from Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h rename to third_party/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h diff --git a/Eigen/src/Core/products/TriangularSolverVector.h b/third_party/eigen/Eigen/src/Core/products/TriangularSolverVector.h similarity index 100% rename from Eigen/src/Core/products/TriangularSolverVector.h rename to third_party/eigen/Eigen/src/Core/products/TriangularSolverVector.h diff --git a/Eigen/src/Core/util/BlasUtil.h b/third_party/eigen/Eigen/src/Core/util/BlasUtil.h similarity index 100% rename from Eigen/src/Core/util/BlasUtil.h rename to third_party/eigen/Eigen/src/Core/util/BlasUtil.h diff --git a/Eigen/src/Core/util/Constants.h b/third_party/eigen/Eigen/src/Core/util/Constants.h similarity index 100% rename from Eigen/src/Core/util/Constants.h rename to third_party/eigen/Eigen/src/Core/util/Constants.h diff --git a/Eigen/src/Core/util/DisableStupidWarnings.h b/third_party/eigen/Eigen/src/Core/util/DisableStupidWarnings.h similarity index 100% rename from Eigen/src/Core/util/DisableStupidWarnings.h rename to third_party/eigen/Eigen/src/Core/util/DisableStupidWarnings.h diff --git a/Eigen/src/Core/util/ForwardDeclarations.h b/third_party/eigen/Eigen/src/Core/util/ForwardDeclarations.h similarity index 100% rename from Eigen/src/Core/util/ForwardDeclarations.h rename to third_party/eigen/Eigen/src/Core/util/ForwardDeclarations.h diff --git a/Eigen/src/Core/util/MKL_support.h b/third_party/eigen/Eigen/src/Core/util/MKL_support.h similarity index 100% rename from Eigen/src/Core/util/MKL_support.h rename to third_party/eigen/Eigen/src/Core/util/MKL_support.h diff --git a/Eigen/src/Core/util/Macros.h b/third_party/eigen/Eigen/src/Core/util/Macros.h similarity index 100% rename from Eigen/src/Core/util/Macros.h rename to third_party/eigen/Eigen/src/Core/util/Macros.h diff --git a/Eigen/src/Core/util/Memory.h b/third_party/eigen/Eigen/src/Core/util/Memory.h similarity index 100% rename from Eigen/src/Core/util/Memory.h rename to third_party/eigen/Eigen/src/Core/util/Memory.h diff --git a/Eigen/src/Core/util/Meta.h b/third_party/eigen/Eigen/src/Core/util/Meta.h similarity index 100% rename from Eigen/src/Core/util/Meta.h rename to third_party/eigen/Eigen/src/Core/util/Meta.h diff --git a/Eigen/src/Core/util/NonMPL2.h b/third_party/eigen/Eigen/src/Core/util/NonMPL2.h similarity index 100% rename from Eigen/src/Core/util/NonMPL2.h rename to third_party/eigen/Eigen/src/Core/util/NonMPL2.h diff --git a/Eigen/src/Core/util/ReenableStupidWarnings.h b/third_party/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h similarity index 100% rename from Eigen/src/Core/util/ReenableStupidWarnings.h rename to third_party/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h diff --git a/Eigen/src/Core/util/StaticAssert.h b/third_party/eigen/Eigen/src/Core/util/StaticAssert.h similarity index 100% rename from Eigen/src/Core/util/StaticAssert.h rename to third_party/eigen/Eigen/src/Core/util/StaticAssert.h diff --git a/Eigen/src/Core/util/XprHelper.h b/third_party/eigen/Eigen/src/Core/util/XprHelper.h similarity index 100% rename from Eigen/src/Core/util/XprHelper.h rename to third_party/eigen/Eigen/src/Core/util/XprHelper.h diff --git a/Eigen/src/Eigenvalues/ComplexEigenSolver.h b/third_party/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h similarity index 100% rename from Eigen/src/Eigenvalues/ComplexEigenSolver.h rename to third_party/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h diff --git a/Eigen/src/Eigenvalues/ComplexSchur.h b/third_party/eigen/Eigen/src/Eigenvalues/ComplexSchur.h similarity index 100% rename from Eigen/src/Eigenvalues/ComplexSchur.h rename to third_party/eigen/Eigen/src/Eigenvalues/ComplexSchur.h diff --git a/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h b/third_party/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h similarity index 100% rename from Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h rename to third_party/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h diff --git a/Eigen/src/Eigenvalues/EigenSolver.h b/third_party/eigen/Eigen/src/Eigenvalues/EigenSolver.h similarity index 100% rename from Eigen/src/Eigenvalues/EigenSolver.h rename to third_party/eigen/Eigen/src/Eigenvalues/EigenSolver.h diff --git a/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h b/third_party/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h similarity index 100% rename from Eigen/src/Eigenvalues/GeneralizedEigenSolver.h rename to third_party/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h diff --git a/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h b/third_party/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h similarity index 100% rename from Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h rename to third_party/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h diff --git a/Eigen/src/Eigenvalues/HessenbergDecomposition.h b/third_party/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h similarity index 100% rename from Eigen/src/Eigenvalues/HessenbergDecomposition.h rename to third_party/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h diff --git a/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h b/third_party/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h similarity index 100% rename from Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h rename to third_party/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h diff --git a/Eigen/src/Eigenvalues/RealQZ.h b/third_party/eigen/Eigen/src/Eigenvalues/RealQZ.h similarity index 100% rename from Eigen/src/Eigenvalues/RealQZ.h rename to third_party/eigen/Eigen/src/Eigenvalues/RealQZ.h diff --git a/Eigen/src/Eigenvalues/RealSchur.h b/third_party/eigen/Eigen/src/Eigenvalues/RealSchur.h similarity index 100% rename from Eigen/src/Eigenvalues/RealSchur.h rename to third_party/eigen/Eigen/src/Eigenvalues/RealSchur.h diff --git a/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h b/third_party/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h similarity index 100% rename from Eigen/src/Eigenvalues/RealSchur_LAPACKE.h rename to third_party/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h diff --git a/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h b/third_party/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h similarity index 100% rename from Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h rename to third_party/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h diff --git a/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h b/third_party/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h similarity index 100% rename from Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h rename to third_party/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h diff --git a/Eigen/src/Eigenvalues/Tridiagonalization.h b/third_party/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h similarity index 100% rename from Eigen/src/Eigenvalues/Tridiagonalization.h rename to third_party/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h diff --git a/Eigen/src/Geometry/AlignedBox.h b/third_party/eigen/Eigen/src/Geometry/AlignedBox.h similarity index 100% rename from Eigen/src/Geometry/AlignedBox.h rename to third_party/eigen/Eigen/src/Geometry/AlignedBox.h diff --git a/Eigen/src/Geometry/AngleAxis.h b/third_party/eigen/Eigen/src/Geometry/AngleAxis.h similarity index 100% rename from Eigen/src/Geometry/AngleAxis.h rename to third_party/eigen/Eigen/src/Geometry/AngleAxis.h diff --git a/Eigen/src/Geometry/EulerAngles.h b/third_party/eigen/Eigen/src/Geometry/EulerAngles.h similarity index 100% rename from Eigen/src/Geometry/EulerAngles.h rename to third_party/eigen/Eigen/src/Geometry/EulerAngles.h diff --git a/Eigen/src/Geometry/Homogeneous.h b/third_party/eigen/Eigen/src/Geometry/Homogeneous.h similarity index 100% rename from Eigen/src/Geometry/Homogeneous.h rename to third_party/eigen/Eigen/src/Geometry/Homogeneous.h diff --git a/Eigen/src/Geometry/Hyperplane.h b/third_party/eigen/Eigen/src/Geometry/Hyperplane.h similarity index 100% rename from Eigen/src/Geometry/Hyperplane.h rename to third_party/eigen/Eigen/src/Geometry/Hyperplane.h diff --git a/Eigen/src/Geometry/OrthoMethods.h b/third_party/eigen/Eigen/src/Geometry/OrthoMethods.h similarity index 100% rename from Eigen/src/Geometry/OrthoMethods.h rename to third_party/eigen/Eigen/src/Geometry/OrthoMethods.h diff --git a/Eigen/src/Geometry/ParametrizedLine.h b/third_party/eigen/Eigen/src/Geometry/ParametrizedLine.h similarity index 100% rename from Eigen/src/Geometry/ParametrizedLine.h rename to third_party/eigen/Eigen/src/Geometry/ParametrizedLine.h diff --git a/Eigen/src/Geometry/Quaternion.h b/third_party/eigen/Eigen/src/Geometry/Quaternion.h similarity index 100% rename from Eigen/src/Geometry/Quaternion.h rename to third_party/eigen/Eigen/src/Geometry/Quaternion.h diff --git a/Eigen/src/Geometry/Rotation2D.h b/third_party/eigen/Eigen/src/Geometry/Rotation2D.h similarity index 100% rename from Eigen/src/Geometry/Rotation2D.h rename to third_party/eigen/Eigen/src/Geometry/Rotation2D.h diff --git a/Eigen/src/Geometry/RotationBase.h b/third_party/eigen/Eigen/src/Geometry/RotationBase.h similarity index 100% rename from Eigen/src/Geometry/RotationBase.h rename to third_party/eigen/Eigen/src/Geometry/RotationBase.h diff --git a/Eigen/src/Geometry/Scaling.h b/third_party/eigen/Eigen/src/Geometry/Scaling.h similarity index 100% rename from Eigen/src/Geometry/Scaling.h rename to third_party/eigen/Eigen/src/Geometry/Scaling.h diff --git a/Eigen/src/Geometry/Transform.h b/third_party/eigen/Eigen/src/Geometry/Transform.h similarity index 100% rename from Eigen/src/Geometry/Transform.h rename to third_party/eigen/Eigen/src/Geometry/Transform.h diff --git a/Eigen/src/Geometry/Translation.h b/third_party/eigen/Eigen/src/Geometry/Translation.h similarity index 100% rename from Eigen/src/Geometry/Translation.h rename to third_party/eigen/Eigen/src/Geometry/Translation.h diff --git a/Eigen/src/Geometry/Umeyama.h b/third_party/eigen/Eigen/src/Geometry/Umeyama.h similarity index 100% rename from Eigen/src/Geometry/Umeyama.h rename to third_party/eigen/Eigen/src/Geometry/Umeyama.h diff --git a/Eigen/src/Geometry/arch/Geometry_SSE.h b/third_party/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h similarity index 100% rename from Eigen/src/Geometry/arch/Geometry_SSE.h rename to third_party/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h diff --git a/Eigen/src/Householder/BlockHouseholder.h b/third_party/eigen/Eigen/src/Householder/BlockHouseholder.h similarity index 100% rename from Eigen/src/Householder/BlockHouseholder.h rename to third_party/eigen/Eigen/src/Householder/BlockHouseholder.h diff --git a/Eigen/src/Householder/Householder.h b/third_party/eigen/Eigen/src/Householder/Householder.h similarity index 100% rename from Eigen/src/Householder/Householder.h rename to third_party/eigen/Eigen/src/Householder/Householder.h diff --git a/Eigen/src/Householder/HouseholderSequence.h b/third_party/eigen/Eigen/src/Householder/HouseholderSequence.h similarity index 100% rename from Eigen/src/Householder/HouseholderSequence.h rename to third_party/eigen/Eigen/src/Householder/HouseholderSequence.h diff --git a/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h b/third_party/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h similarity index 100% rename from Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h rename to third_party/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h diff --git a/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h b/third_party/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h similarity index 100% rename from Eigen/src/IterativeLinearSolvers/BiCGSTAB.h rename to third_party/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h diff --git a/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h b/third_party/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h similarity index 100% rename from Eigen/src/IterativeLinearSolvers/ConjugateGradient.h rename to third_party/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h diff --git a/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h b/third_party/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h similarity index 100% rename from Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h rename to third_party/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h diff --git a/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h b/third_party/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h similarity index 100% rename from Eigen/src/IterativeLinearSolvers/IncompleteLUT.h rename to third_party/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h diff --git a/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h b/third_party/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h similarity index 100% rename from Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h rename to third_party/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h diff --git a/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h b/third_party/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h similarity index 100% rename from Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h rename to third_party/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h diff --git a/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h b/third_party/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h similarity index 100% rename from Eigen/src/IterativeLinearSolvers/SolveWithGuess.h rename to third_party/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h diff --git a/Eigen/src/Jacobi/Jacobi.h b/third_party/eigen/Eigen/src/Jacobi/Jacobi.h similarity index 100% rename from Eigen/src/Jacobi/Jacobi.h rename to third_party/eigen/Eigen/src/Jacobi/Jacobi.h diff --git a/Eigen/src/LU/Determinant.h b/third_party/eigen/Eigen/src/LU/Determinant.h similarity index 100% rename from Eigen/src/LU/Determinant.h rename to third_party/eigen/Eigen/src/LU/Determinant.h diff --git a/Eigen/src/LU/FullPivLU.h b/third_party/eigen/Eigen/src/LU/FullPivLU.h similarity index 100% rename from Eigen/src/LU/FullPivLU.h rename to third_party/eigen/Eigen/src/LU/FullPivLU.h diff --git a/Eigen/src/LU/InverseImpl.h b/third_party/eigen/Eigen/src/LU/InverseImpl.h similarity index 100% rename from Eigen/src/LU/InverseImpl.h rename to third_party/eigen/Eigen/src/LU/InverseImpl.h diff --git a/Eigen/src/LU/PartialPivLU.h b/third_party/eigen/Eigen/src/LU/PartialPivLU.h similarity index 100% rename from Eigen/src/LU/PartialPivLU.h rename to third_party/eigen/Eigen/src/LU/PartialPivLU.h diff --git a/Eigen/src/LU/PartialPivLU_LAPACKE.h b/third_party/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h similarity index 100% rename from Eigen/src/LU/PartialPivLU_LAPACKE.h rename to third_party/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h diff --git a/Eigen/src/LU/arch/Inverse_SSE.h b/third_party/eigen/Eigen/src/LU/arch/Inverse_SSE.h similarity index 100% rename from Eigen/src/LU/arch/Inverse_SSE.h rename to third_party/eigen/Eigen/src/LU/arch/Inverse_SSE.h diff --git a/Eigen/src/MetisSupport/MetisSupport.h b/third_party/eigen/Eigen/src/MetisSupport/MetisSupport.h similarity index 100% rename from Eigen/src/MetisSupport/MetisSupport.h rename to third_party/eigen/Eigen/src/MetisSupport/MetisSupport.h diff --git a/Eigen/src/OrderingMethods/Amd.h b/third_party/eigen/Eigen/src/OrderingMethods/Amd.h similarity index 100% rename from Eigen/src/OrderingMethods/Amd.h rename to third_party/eigen/Eigen/src/OrderingMethods/Amd.h diff --git a/Eigen/src/OrderingMethods/Eigen_Colamd.h b/third_party/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h similarity index 100% rename from Eigen/src/OrderingMethods/Eigen_Colamd.h rename to third_party/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h diff --git a/Eigen/src/OrderingMethods/Ordering.h b/third_party/eigen/Eigen/src/OrderingMethods/Ordering.h similarity index 100% rename from Eigen/src/OrderingMethods/Ordering.h rename to third_party/eigen/Eigen/src/OrderingMethods/Ordering.h diff --git a/Eigen/src/PaStiXSupport/PaStiXSupport.h b/third_party/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h similarity index 100% rename from Eigen/src/PaStiXSupport/PaStiXSupport.h rename to third_party/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h diff --git a/Eigen/src/PardisoSupport/PardisoSupport.h b/third_party/eigen/Eigen/src/PardisoSupport/PardisoSupport.h similarity index 100% rename from Eigen/src/PardisoSupport/PardisoSupport.h rename to third_party/eigen/Eigen/src/PardisoSupport/PardisoSupport.h diff --git a/Eigen/src/QR/ColPivHouseholderQR.h b/third_party/eigen/Eigen/src/QR/ColPivHouseholderQR.h similarity index 100% rename from Eigen/src/QR/ColPivHouseholderQR.h rename to third_party/eigen/Eigen/src/QR/ColPivHouseholderQR.h diff --git a/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h b/third_party/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h similarity index 100% rename from Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h rename to third_party/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h diff --git a/Eigen/src/QR/CompleteOrthogonalDecomposition.h b/third_party/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h similarity index 100% rename from Eigen/src/QR/CompleteOrthogonalDecomposition.h rename to third_party/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h diff --git a/Eigen/src/QR/FullPivHouseholderQR.h b/third_party/eigen/Eigen/src/QR/FullPivHouseholderQR.h similarity index 100% rename from Eigen/src/QR/FullPivHouseholderQR.h rename to third_party/eigen/Eigen/src/QR/FullPivHouseholderQR.h diff --git a/Eigen/src/QR/HouseholderQR.h b/third_party/eigen/Eigen/src/QR/HouseholderQR.h similarity index 100% rename from Eigen/src/QR/HouseholderQR.h rename to third_party/eigen/Eigen/src/QR/HouseholderQR.h diff --git a/Eigen/src/QR/HouseholderQR_LAPACKE.h b/third_party/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h similarity index 100% rename from Eigen/src/QR/HouseholderQR_LAPACKE.h rename to third_party/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h diff --git a/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h b/third_party/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h similarity index 100% rename from Eigen/src/SPQRSupport/SuiteSparseQRSupport.h rename to third_party/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h diff --git a/Eigen/src/SVD/BDCSVD.h b/third_party/eigen/Eigen/src/SVD/BDCSVD.h similarity index 100% rename from Eigen/src/SVD/BDCSVD.h rename to third_party/eigen/Eigen/src/SVD/BDCSVD.h diff --git a/Eigen/src/SVD/JacobiSVD.h b/third_party/eigen/Eigen/src/SVD/JacobiSVD.h similarity index 100% rename from Eigen/src/SVD/JacobiSVD.h rename to third_party/eigen/Eigen/src/SVD/JacobiSVD.h diff --git a/Eigen/src/SVD/JacobiSVD_LAPACKE.h b/third_party/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h similarity index 100% rename from Eigen/src/SVD/JacobiSVD_LAPACKE.h rename to third_party/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h diff --git a/Eigen/src/SVD/SVDBase.h b/third_party/eigen/Eigen/src/SVD/SVDBase.h similarity index 100% rename from Eigen/src/SVD/SVDBase.h rename to third_party/eigen/Eigen/src/SVD/SVDBase.h diff --git a/Eigen/src/SVD/UpperBidiagonalization.h b/third_party/eigen/Eigen/src/SVD/UpperBidiagonalization.h similarity index 100% rename from Eigen/src/SVD/UpperBidiagonalization.h rename to third_party/eigen/Eigen/src/SVD/UpperBidiagonalization.h diff --git a/Eigen/src/SparseCholesky/SimplicialCholesky.h b/third_party/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h similarity index 100% rename from Eigen/src/SparseCholesky/SimplicialCholesky.h rename to third_party/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h diff --git a/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h b/third_party/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h similarity index 100% rename from Eigen/src/SparseCholesky/SimplicialCholesky_impl.h rename to third_party/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h diff --git a/Eigen/src/SparseCore/AmbiVector.h b/third_party/eigen/Eigen/src/SparseCore/AmbiVector.h similarity index 100% rename from Eigen/src/SparseCore/AmbiVector.h rename to third_party/eigen/Eigen/src/SparseCore/AmbiVector.h diff --git a/Eigen/src/SparseCore/CompressedStorage.h b/third_party/eigen/Eigen/src/SparseCore/CompressedStorage.h similarity index 100% rename from Eigen/src/SparseCore/CompressedStorage.h rename to third_party/eigen/Eigen/src/SparseCore/CompressedStorage.h diff --git a/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h b/third_party/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h similarity index 100% rename from Eigen/src/SparseCore/ConservativeSparseSparseProduct.h rename to third_party/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h diff --git a/Eigen/src/SparseCore/MappedSparseMatrix.h b/third_party/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h similarity index 100% rename from Eigen/src/SparseCore/MappedSparseMatrix.h rename to third_party/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h diff --git a/Eigen/src/SparseCore/SparseAssign.h b/third_party/eigen/Eigen/src/SparseCore/SparseAssign.h similarity index 100% rename from Eigen/src/SparseCore/SparseAssign.h rename to third_party/eigen/Eigen/src/SparseCore/SparseAssign.h diff --git a/Eigen/src/SparseCore/SparseBlock.h b/third_party/eigen/Eigen/src/SparseCore/SparseBlock.h similarity index 100% rename from Eigen/src/SparseCore/SparseBlock.h rename to third_party/eigen/Eigen/src/SparseCore/SparseBlock.h diff --git a/Eigen/src/SparseCore/SparseColEtree.h b/third_party/eigen/Eigen/src/SparseCore/SparseColEtree.h similarity index 100% rename from Eigen/src/SparseCore/SparseColEtree.h rename to third_party/eigen/Eigen/src/SparseCore/SparseColEtree.h diff --git a/Eigen/src/SparseCore/SparseCompressedBase.h b/third_party/eigen/Eigen/src/SparseCore/SparseCompressedBase.h similarity index 100% rename from Eigen/src/SparseCore/SparseCompressedBase.h rename to third_party/eigen/Eigen/src/SparseCore/SparseCompressedBase.h diff --git a/Eigen/src/SparseCore/SparseCwiseBinaryOp.h b/third_party/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h similarity index 100% rename from Eigen/src/SparseCore/SparseCwiseBinaryOp.h rename to third_party/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h diff --git a/Eigen/src/SparseCore/SparseCwiseUnaryOp.h b/third_party/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h similarity index 100% rename from Eigen/src/SparseCore/SparseCwiseUnaryOp.h rename to third_party/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h diff --git a/Eigen/src/SparseCore/SparseDenseProduct.h b/third_party/eigen/Eigen/src/SparseCore/SparseDenseProduct.h similarity index 100% rename from Eigen/src/SparseCore/SparseDenseProduct.h rename to third_party/eigen/Eigen/src/SparseCore/SparseDenseProduct.h diff --git a/Eigen/src/SparseCore/SparseDiagonalProduct.h b/third_party/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h similarity index 100% rename from Eigen/src/SparseCore/SparseDiagonalProduct.h rename to third_party/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h diff --git a/Eigen/src/SparseCore/SparseDot.h b/third_party/eigen/Eigen/src/SparseCore/SparseDot.h similarity index 100% rename from Eigen/src/SparseCore/SparseDot.h rename to third_party/eigen/Eigen/src/SparseCore/SparseDot.h diff --git a/Eigen/src/SparseCore/SparseFuzzy.h b/third_party/eigen/Eigen/src/SparseCore/SparseFuzzy.h similarity index 100% rename from Eigen/src/SparseCore/SparseFuzzy.h rename to third_party/eigen/Eigen/src/SparseCore/SparseFuzzy.h diff --git a/Eigen/src/SparseCore/SparseMap.h b/third_party/eigen/Eigen/src/SparseCore/SparseMap.h similarity index 100% rename from Eigen/src/SparseCore/SparseMap.h rename to third_party/eigen/Eigen/src/SparseCore/SparseMap.h diff --git a/Eigen/src/SparseCore/SparseMatrix.h b/third_party/eigen/Eigen/src/SparseCore/SparseMatrix.h similarity index 100% rename from Eigen/src/SparseCore/SparseMatrix.h rename to third_party/eigen/Eigen/src/SparseCore/SparseMatrix.h diff --git a/Eigen/src/SparseCore/SparseMatrixBase.h b/third_party/eigen/Eigen/src/SparseCore/SparseMatrixBase.h similarity index 100% rename from Eigen/src/SparseCore/SparseMatrixBase.h rename to third_party/eigen/Eigen/src/SparseCore/SparseMatrixBase.h diff --git a/Eigen/src/SparseCore/SparsePermutation.h b/third_party/eigen/Eigen/src/SparseCore/SparsePermutation.h similarity index 100% rename from Eigen/src/SparseCore/SparsePermutation.h rename to third_party/eigen/Eigen/src/SparseCore/SparsePermutation.h diff --git a/Eigen/src/SparseCore/SparseProduct.h b/third_party/eigen/Eigen/src/SparseCore/SparseProduct.h similarity index 100% rename from Eigen/src/SparseCore/SparseProduct.h rename to third_party/eigen/Eigen/src/SparseCore/SparseProduct.h diff --git a/Eigen/src/SparseCore/SparseRedux.h b/third_party/eigen/Eigen/src/SparseCore/SparseRedux.h similarity index 100% rename from Eigen/src/SparseCore/SparseRedux.h rename to third_party/eigen/Eigen/src/SparseCore/SparseRedux.h diff --git a/Eigen/src/SparseCore/SparseRef.h b/third_party/eigen/Eigen/src/SparseCore/SparseRef.h similarity index 100% rename from Eigen/src/SparseCore/SparseRef.h rename to third_party/eigen/Eigen/src/SparseCore/SparseRef.h diff --git a/Eigen/src/SparseCore/SparseSelfAdjointView.h b/third_party/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h similarity index 100% rename from Eigen/src/SparseCore/SparseSelfAdjointView.h rename to third_party/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h diff --git a/Eigen/src/SparseCore/SparseSolverBase.h b/third_party/eigen/Eigen/src/SparseCore/SparseSolverBase.h similarity index 100% rename from Eigen/src/SparseCore/SparseSolverBase.h rename to third_party/eigen/Eigen/src/SparseCore/SparseSolverBase.h diff --git a/Eigen/src/SparseCore/SparseSparseProductWithPruning.h b/third_party/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h similarity index 100% rename from Eigen/src/SparseCore/SparseSparseProductWithPruning.h rename to third_party/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h diff --git a/Eigen/src/SparseCore/SparseTranspose.h b/third_party/eigen/Eigen/src/SparseCore/SparseTranspose.h similarity index 100% rename from Eigen/src/SparseCore/SparseTranspose.h rename to third_party/eigen/Eigen/src/SparseCore/SparseTranspose.h diff --git a/Eigen/src/SparseCore/SparseTriangularView.h b/third_party/eigen/Eigen/src/SparseCore/SparseTriangularView.h similarity index 100% rename from Eigen/src/SparseCore/SparseTriangularView.h rename to third_party/eigen/Eigen/src/SparseCore/SparseTriangularView.h diff --git a/Eigen/src/SparseCore/SparseUtil.h b/third_party/eigen/Eigen/src/SparseCore/SparseUtil.h similarity index 100% rename from Eigen/src/SparseCore/SparseUtil.h rename to third_party/eigen/Eigen/src/SparseCore/SparseUtil.h diff --git a/Eigen/src/SparseCore/SparseVector.h b/third_party/eigen/Eigen/src/SparseCore/SparseVector.h similarity index 100% rename from Eigen/src/SparseCore/SparseVector.h rename to third_party/eigen/Eigen/src/SparseCore/SparseVector.h diff --git a/Eigen/src/SparseCore/SparseView.h b/third_party/eigen/Eigen/src/SparseCore/SparseView.h similarity index 100% rename from Eigen/src/SparseCore/SparseView.h rename to third_party/eigen/Eigen/src/SparseCore/SparseView.h diff --git a/Eigen/src/SparseCore/TriangularSolver.h b/third_party/eigen/Eigen/src/SparseCore/TriangularSolver.h similarity index 100% rename from Eigen/src/SparseCore/TriangularSolver.h rename to third_party/eigen/Eigen/src/SparseCore/TriangularSolver.h diff --git a/Eigen/src/SparseLU/SparseLU.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU.h diff --git a/Eigen/src/SparseLU/SparseLUImpl.h b/third_party/eigen/Eigen/src/SparseLU/SparseLUImpl.h similarity index 100% rename from Eigen/src/SparseLU/SparseLUImpl.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLUImpl.h diff --git a/Eigen/src/SparseLU/SparseLU_Memory.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_Memory.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_Memory.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_Memory.h diff --git a/Eigen/src/SparseLU/SparseLU_Structs.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_Structs.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_Structs.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_Structs.h diff --git a/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h diff --git a/Eigen/src/SparseLU/SparseLU_Utils.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_Utils.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_Utils.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_Utils.h diff --git a/Eigen/src/SparseLU/SparseLU_column_bmod.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_column_bmod.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h diff --git a/Eigen/src/SparseLU/SparseLU_column_dfs.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_column_dfs.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h diff --git a/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_copy_to_ucol.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h diff --git a/Eigen/src/SparseLU/SparseLU_gemm_kernel.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_gemm_kernel.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h diff --git a/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_heap_relax_snode.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h diff --git a/Eigen/src/SparseLU/SparseLU_kernel_bmod.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_kernel_bmod.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h diff --git a/Eigen/src/SparseLU/SparseLU_panel_bmod.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_panel_bmod.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h diff --git a/Eigen/src/SparseLU/SparseLU_panel_dfs.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_panel_dfs.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h diff --git a/Eigen/src/SparseLU/SparseLU_pivotL.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_pivotL.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h diff --git a/Eigen/src/SparseLU/SparseLU_pruneL.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_pruneL.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h diff --git a/Eigen/src/SparseLU/SparseLU_relax_snode.h b/third_party/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h similarity index 100% rename from Eigen/src/SparseLU/SparseLU_relax_snode.h rename to third_party/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h diff --git a/Eigen/src/SparseQR/SparseQR.h b/third_party/eigen/Eigen/src/SparseQR/SparseQR.h similarity index 100% rename from Eigen/src/SparseQR/SparseQR.h rename to third_party/eigen/Eigen/src/SparseQR/SparseQR.h diff --git a/Eigen/src/StlSupport/StdDeque.h b/third_party/eigen/Eigen/src/StlSupport/StdDeque.h similarity index 100% rename from Eigen/src/StlSupport/StdDeque.h rename to third_party/eigen/Eigen/src/StlSupport/StdDeque.h diff --git a/Eigen/src/StlSupport/StdList.h b/third_party/eigen/Eigen/src/StlSupport/StdList.h similarity index 100% rename from Eigen/src/StlSupport/StdList.h rename to third_party/eigen/Eigen/src/StlSupport/StdList.h diff --git a/Eigen/src/StlSupport/StdVector.h b/third_party/eigen/Eigen/src/StlSupport/StdVector.h similarity index 100% rename from Eigen/src/StlSupport/StdVector.h rename to third_party/eigen/Eigen/src/StlSupport/StdVector.h diff --git a/Eigen/src/StlSupport/details.h b/third_party/eigen/Eigen/src/StlSupport/details.h similarity index 100% rename from Eigen/src/StlSupport/details.h rename to third_party/eigen/Eigen/src/StlSupport/details.h diff --git a/Eigen/src/SuperLUSupport/SuperLUSupport.h b/third_party/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h similarity index 100% rename from Eigen/src/SuperLUSupport/SuperLUSupport.h rename to third_party/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h diff --git a/Eigen/src/UmfPackSupport/UmfPackSupport.h b/third_party/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h similarity index 100% rename from Eigen/src/UmfPackSupport/UmfPackSupport.h rename to third_party/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h diff --git a/Eigen/src/misc/Image.h b/third_party/eigen/Eigen/src/misc/Image.h similarity index 100% rename from Eigen/src/misc/Image.h rename to third_party/eigen/Eigen/src/misc/Image.h diff --git a/Eigen/src/misc/Kernel.h b/third_party/eigen/Eigen/src/misc/Kernel.h similarity index 100% rename from Eigen/src/misc/Kernel.h rename to third_party/eigen/Eigen/src/misc/Kernel.h diff --git a/Eigen/src/misc/RealSvd2x2.h b/third_party/eigen/Eigen/src/misc/RealSvd2x2.h similarity index 100% rename from Eigen/src/misc/RealSvd2x2.h rename to third_party/eigen/Eigen/src/misc/RealSvd2x2.h diff --git a/Eigen/src/misc/blas.h b/third_party/eigen/Eigen/src/misc/blas.h similarity index 100% rename from Eigen/src/misc/blas.h rename to third_party/eigen/Eigen/src/misc/blas.h diff --git a/Eigen/src/misc/lapack.h b/third_party/eigen/Eigen/src/misc/lapack.h similarity index 100% rename from Eigen/src/misc/lapack.h rename to third_party/eigen/Eigen/src/misc/lapack.h diff --git a/Eigen/src/misc/lapacke.h b/third_party/eigen/Eigen/src/misc/lapacke.h similarity index 100% rename from Eigen/src/misc/lapacke.h rename to third_party/eigen/Eigen/src/misc/lapacke.h diff --git a/Eigen/src/misc/lapacke_mangling.h b/third_party/eigen/Eigen/src/misc/lapacke_mangling.h similarity index 100% rename from Eigen/src/misc/lapacke_mangling.h rename to third_party/eigen/Eigen/src/misc/lapacke_mangling.h diff --git a/Eigen/src/plugins/ArrayCwiseBinaryOps.h b/third_party/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h similarity index 100% rename from Eigen/src/plugins/ArrayCwiseBinaryOps.h rename to third_party/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h diff --git a/Eigen/src/plugins/ArrayCwiseUnaryOps.h b/third_party/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h similarity index 100% rename from Eigen/src/plugins/ArrayCwiseUnaryOps.h rename to third_party/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h diff --git a/Eigen/src/plugins/BlockMethods.h b/third_party/eigen/Eigen/src/plugins/BlockMethods.h similarity index 100% rename from Eigen/src/plugins/BlockMethods.h rename to third_party/eigen/Eigen/src/plugins/BlockMethods.h diff --git a/Eigen/src/plugins/CommonCwiseBinaryOps.h b/third_party/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h similarity index 100% rename from Eigen/src/plugins/CommonCwiseBinaryOps.h rename to third_party/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h diff --git a/Eigen/src/plugins/CommonCwiseUnaryOps.h b/third_party/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h similarity index 100% rename from Eigen/src/plugins/CommonCwiseUnaryOps.h rename to third_party/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h diff --git a/Eigen/src/plugins/MatrixCwiseBinaryOps.h b/third_party/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h similarity index 100% rename from Eigen/src/plugins/MatrixCwiseBinaryOps.h rename to third_party/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h diff --git a/Eigen/src/plugins/MatrixCwiseUnaryOps.h b/third_party/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h similarity index 100% rename from Eigen/src/plugins/MatrixCwiseUnaryOps.h rename to third_party/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h From 7af8be7ca8db0290b5d42c74dd31de7f0ddc011d Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 17:11:58 +0800 Subject: [PATCH 02/14] check c>0 only when data_num != 0 --- dabnn/mat.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dabnn/mat.h b/dabnn/mat.h index e49bc33..9acf104 100644 --- a/dabnn/mat.h +++ b/dabnn/mat.h @@ -273,7 +273,6 @@ inline Mat::Mat(int _n, int _w, int _h, int _c, void *_data, DataType data_type, ", ", h, ", ", c); } elemsize = data_type == DataType::Float ? sizeof(float) : sizeof(uint64_t); - BNN_ASSERT(c > 0, c); std::stringstream ss; ss << "Not align, w: " << w << ", c: " << c << ", elemsize: " << elemsize; BNN_ASSERT(!require_align || w * c == 1 || w * c * elemsize % 16 == 0, @@ -283,7 +282,10 @@ inline Mat::Mat(int _n, int _w, int _h, int _c, void *_data, DataType data_type, } else { hstep = w * c; } - BNN_ASSERT(hstep > 0, hstep); + if (data_num == 0) { + BNN_ASSERT(c > 0, c); + BNN_ASSERT(hstep > 0, hstep); + } external_memory = true; } From be606fa6f87db0a4e9166b79f5d9cb86804525ba Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 17:13:26 +0800 Subject: [PATCH 03/14] use bgemm_naive instead of bconv_naive as fallback due to the 128-align weight --- dabnn/layers/BinConv.cpp | 57 +++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/dabnn/layers/BinConv.cpp b/dabnn/layers/BinConv.cpp index 27ad5ce..7481337 100644 --- a/dabnn/layers/BinConv.cpp +++ b/dabnn/layers/BinConv.cpp @@ -25,14 +25,16 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, stride_h(stride_h), stride_w(stride_w) { auto &mat_map = net.lock()->mat_map_; - const auto binaized_name = "binaized_for_" + output + "_cal"; - if (mat_map.find(binaized_name) == mat_map.end()) { - auto &input_mat = *mat_map[input]; - mat_map[binaized_name] = - std::make_shared(input_mat.h, input_mat.w, input_mat.elem_c, - DataType::Bit, binaized_name); + if (direct_conv_compatible()) { + const auto binaized_name = "binaized_for_" + output + "_cal"; + if (mat_map.find(binaized_name) == mat_map.end()) { + auto &input_mat = *mat_map[input]; + mat_map[binaized_name] = + std::make_shared(input_mat.h, input_mat.w, input_mat.elem_c, + DataType::Bit, binaized_name); + } + binarized_mat = mat(binaized_name); } - binarized_mat = mat(binaized_name); const auto pad_name = "pad_for_" + output + "_cal"; if (mat_map.find(pad_name) == mat_map.end()) { @@ -43,18 +45,18 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, } padded_mat = mat(pad_name); - const auto col_mat_name = "col_for_" + output + "_cal"; - if (mat_map.find(col_mat_name) == mat_map.end()) { - const auto len = - output_mat->h * output_mat->w * - align_to(weight_mat->h * weight_mat->w * input_mat->elem_c, 128); - mat_map[col_mat_name] = - std::make_shared(1, 1, len, bnn::DataType::Bit); - } - col_mat = mat(col_mat_name); + if (net.lock()->optimize && !direct_conv_compatible()) { + + const auto col_mat_name = "col_for_" + output + "_cal"; + if (mat_map.find(col_mat_name) == mat_map.end()) { + const auto len = + output_mat->h * output_mat->w * + align_to(weight_mat->h * weight_mat->w * input_mat->elem_c, 128); + mat_map[col_mat_name] = + std::make_shared(1, 1, len, bnn::DataType::Bit); + } + col_mat = mat(col_mat_name); - if (net.lock()->optimize && !direct_conv_compatible() && - gemm_compatible()) { const auto trans_weight_mat_name = "trans_" + weight; // transpose the weight for bgemm const int m = weight_mat->n; @@ -126,7 +128,7 @@ void BinConv::forward_impl() const { pack_mat(*input_mat, *binarized_mat); pad(*binarized_mat, pad_h, pad_w, *padded_mat); bconv_3x3(*padded_mat, *weight_mat, *output_mat, stride_h); - } else if (gemm_compatible()) { + } else { output_mat->fill(0.f); bnn::fused_binarize_im2col(*input_mat, weight_mat->h, weight_mat->w, @@ -136,14 +138,15 @@ void BinConv::forward_impl() const { const int m = weight_mat->n; const int n = output_mat->h * output_mat->w; const int k = weight_mat->total() / weight_mat->n; - bgemm(m, n, k, static_cast(transposed_weight_mat->data), - m, static_cast(col_mat->data), k, - static_cast(output_mat->data), m); - } else { - pack_mat(*input_mat, *binarized_mat); - baseline_bconv(*binarized_mat, *weight_mat, weight_mat->h, - weight_mat->w, pad_h, pad_w, stride_h, stride_w, 1, - 1, output_mat->c, *output_mat); + if (gemm_compatible()) { + bgemm(m, n, k, static_cast(transposed_weight_mat->data), + m, static_cast(col_mat->data), k, + static_cast(output_mat->data), m); + } else { + bgemm_naive(m, n, k, static_cast(transposed_weight_mat->data), + m, static_cast(col_mat->data), k, + static_cast(output_mat->data), m); + } } } else { pack_mat(*input_mat, *binarized_mat); From 41f6fca8fe7da4af9f4128bd4824b49d266a1d9a Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 17:13:57 +0800 Subject: [PATCH 04/14] delay the alignment check into point() -- the only place using hstep --- dabnn/mat.h | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/dabnn/mat.h b/dabnn/mat.h index 9acf104..3c0066c 100644 --- a/dabnn/mat.h +++ b/dabnn/mat.h @@ -531,11 +531,6 @@ inline void Mat::create(int _w, int _h, int _c, DataType _data_type) { h = _h; c = _c; - if (w * c != 1 && w * c * elemsize % 16 != 0) { - LOG(FATAL) << "Not align, w: " << w << ", c: " << c - << ", elemsize: " << elemsize; - throw std::invalid_argument("Not align!"); - } hstep = ncnn::alignSize(w * c * elemsize, 16) / elemsize; if (total() > 0) { @@ -565,11 +560,6 @@ inline void Mat::create(int _n, int _w, int _h, int _c, DataType _data_type, if (h != 0) dims++; if (c != 0) dims++; - if (require_align && w * c != 1 && w * c * elemsize % 16 != 0) { - LOG(FATAL) << "Not align, w: " << w << ", c: " << c - << ", elemsize: " << elemsize; - throw std::invalid_argument("Not align!"); - } if (require_align) { hstep = ncnn::alignSize(w * c * elemsize, 16) / elemsize; } else { @@ -614,24 +604,28 @@ inline size_t Mat::total() const { template inline const T *Mat::point(int _n, int _h, int _w) const { + BNN_ASSERT(w * c == 1 || w * c * elemsize % 16 == 0, ""); BNN_ASSERT((_n == 0 && _h == 0 && _w == 0) || hstep > 0, hstep); return (T *)data + _n * h * hstep + _h * hstep + _w * c; } template inline const T *Mat::point(int _h, int _w) const { + BNN_ASSERT(w * c == 1 || w * c * elemsize % 16 == 0, ""); BNN_ASSERT((_h == 0 && _w == 0) || hstep > 0, hstep); return (T *)data + _h * hstep + _w * c; } template inline T *Mat::point(int _n, int _h, int _w) { + BNN_ASSERT(w * c == 1 || w * c * elemsize % 16 == 0, ""); BNN_ASSERT((_n == 0 && _h == 0 && _w == 0) || hstep > 0, hstep); return (T *)data + _n * h * hstep + _h * hstep + _w * c; } template inline T *Mat::point(int _h, int _w) { + BNN_ASSERT(w * c == 1 || w * c * elemsize % 16 == 0, ""); BNN_ASSERT((_h == 0 && _w == 0) || hstep > 0, hstep); return (T *)data + _h * hstep + _w * c; } From 9395a0193928c153c5d34ef6f82c843b7d501be7 Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 17:14:29 +0800 Subject: [PATCH 05/14] Add run_net_x86 configuration --- .daq_pm/configs/run_net_x86 | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .daq_pm/configs/run_net_x86 diff --git a/.daq_pm/configs/run_net_x86 b/.daq_pm/configs/run_net_x86 new file mode 100644 index 0000000..2e15388 --- /dev/null +++ b/.daq_pm/configs/run_net_x86 @@ -0,0 +1,6 @@ +# It is a configuration file for [project_manager.vim](https://github.com/daquexian/project_manager.vim) +name binary-nn +type cpp +build_dir build_main_x86 +cmake_options -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -DBNN_BUILD_TEST=OFF -DBNN_BUILD_BENCHMARK=OFF -DBNN_BUILD_MAIN_LIB=ON +target run From 418c8d728b05d0148fdc5dd2ba148903fd132fa8 Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 17:24:27 +0800 Subject: [PATCH 06/14] make eigen public header --- dabnn/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dabnn/CMakeLists.txt b/dabnn/CMakeLists.txt index 566ff3e..58cda2b 100644 --- a/dabnn/CMakeLists.txt +++ b/dabnn/CMakeLists.txt @@ -43,7 +43,7 @@ target_include_directories(dabnn ) target_include_directories(dabnn SYSTEM - PRIVATE + PUBLIC ${PROJECT_SOURCE_DIR}/third_party/eigen ) target_link_libraries(dabnn From cec34994a241c350ff93223e3dd5c9e535798583 Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 18:01:22 +0800 Subject: [PATCH 07/14] use bgemm_naive instead of bconv_naive when non-optimize --- dabnn/layers/BinConv.cpp | 60 ++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/dabnn/layers/BinConv.cpp b/dabnn/layers/BinConv.cpp index 7481337..b1dbf3b 100644 --- a/dabnn/layers/BinConv.cpp +++ b/dabnn/layers/BinConv.cpp @@ -29,9 +29,9 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, const auto binaized_name = "binaized_for_" + output + "_cal"; if (mat_map.find(binaized_name) == mat_map.end()) { auto &input_mat = *mat_map[input]; - mat_map[binaized_name] = - std::make_shared(input_mat.h, input_mat.w, input_mat.elem_c, - DataType::Bit, binaized_name); + mat_map[binaized_name] = std::make_shared( + input_mat.h, input_mat.w, input_mat.elem_c, DataType::Bit, + binaized_name); } binarized_mat = mat(binaized_name); } @@ -46,12 +46,12 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, padded_mat = mat(pad_name); if (net.lock()->optimize && !direct_conv_compatible()) { - const auto col_mat_name = "col_for_" + output + "_cal"; if (mat_map.find(col_mat_name) == mat_map.end()) { const auto len = output_mat->h * output_mat->w * - align_to(weight_mat->h * weight_mat->w * input_mat->elem_c, 128); + align_to(weight_mat->h * weight_mat->w * input_mat->elem_c, + 128); mat_map[col_mat_name] = std::make_shared(1, 1, len, bnn::DataType::Bit); } @@ -123,36 +123,30 @@ bool BinConv::gemm_compatible() const { } void BinConv::forward_impl() const { - if (net_.lock()->optimize) { - if (direct_conv_compatible()) { - pack_mat(*input_mat, *binarized_mat); - pad(*binarized_mat, pad_h, pad_w, *padded_mat); - bconv_3x3(*padded_mat, *weight_mat, *output_mat, stride_h); + if (net_.lock()->optimize && direct_conv_compatible()) { + pack_mat(*input_mat, *binarized_mat); + pad(*binarized_mat, pad_h, pad_w, *padded_mat); + bconv_3x3(*padded_mat, *weight_mat, *output_mat, stride_h); + } else { + output_mat->fill(0.f); + + bnn::fused_binarize_im2col(*input_mat, weight_mat->h, weight_mat->w, + pad_h, pad_w, stride_h, stride_w, 1, 1, + *col_mat); + + const int m = weight_mat->n; + const int n = output_mat->h * output_mat->w; + const int k = weight_mat->total() / weight_mat->n; + if (net_.lock()->optimize && gemm_compatible()) { + bgemm(m, n, k, static_cast(transposed_weight_mat->data), + m, static_cast(col_mat->data), k, + static_cast(output_mat->data), m); } else { - output_mat->fill(0.f); - - bnn::fused_binarize_im2col(*input_mat, weight_mat->h, weight_mat->w, - pad_h, pad_w, stride_h, stride_w, 1, 1, - *col_mat); - - const int m = weight_mat->n; - const int n = output_mat->h * output_mat->w; - const int k = weight_mat->total() / weight_mat->n; - if (gemm_compatible()) { - bgemm(m, n, k, static_cast(transposed_weight_mat->data), - m, static_cast(col_mat->data), k, - static_cast(output_mat->data), m); - } else { - bgemm_naive(m, n, k, static_cast(transposed_weight_mat->data), - m, static_cast(col_mat->data), k, - static_cast(output_mat->data), m); - } + bgemm_naive(m, n, k, + static_cast(transposed_weight_mat->data), m, + static_cast(col_mat->data), k, + static_cast(output_mat->data), m); } - } else { - pack_mat(*input_mat, *binarized_mat); - baseline_bconv(*binarized_mat, *weight_mat, weight_mat->h, - weight_mat->w, pad_h, pad_w, stride_h, stride_w, 1, 1, - output_mat->c, *output_mat); } } From 337f55f37f5185a4ef51d86ffe12ea6ae4ab9f25 Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 18:06:08 +0800 Subject: [PATCH 08/14] Revert "use bgemm_naive instead of bconv_naive as fallback due to the 128-align weight" This reverts commit be606fa6f87db0a4e9166b79f5d9cb86804525ba. --- dabnn/layers/BinConv.cpp | 49 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/dabnn/layers/BinConv.cpp b/dabnn/layers/BinConv.cpp index b1dbf3b..6480cf5 100644 --- a/dabnn/layers/BinConv.cpp +++ b/dabnn/layers/BinConv.cpp @@ -25,6 +25,7 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, stride_h(stride_h), stride_w(stride_w) { auto &mat_map = net.lock()->mat_map_; +<<<<<<< HEAD if (direct_conv_compatible()) { const auto binaized_name = "binaized_for_" + output + "_cal"; if (mat_map.find(binaized_name) == mat_map.end()) { @@ -34,7 +35,16 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, binaized_name); } binarized_mat = mat(binaized_name); +======= + const auto binaized_name = "binaized_for_" + output + "_cal"; + if (mat_map.find(binaized_name) == mat_map.end()) { + auto &input_mat = *mat_map[input]; + mat_map[binaized_name] = + std::make_shared(input_mat.h, input_mat.w, input_mat.elem_c, + DataType::Bit, binaized_name); +>>>>>>> parent of be606fa... use bgemm_naive instead of bconv_naive as fallback due to the 128-align weight } + binarized_mat = mat(binaized_name); const auto pad_name = "pad_for_" + output + "_cal"; if (mat_map.find(pad_name) == mat_map.end()) { @@ -45,6 +55,7 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, } padded_mat = mat(pad_name); +<<<<<<< HEAD if (net.lock()->optimize && !direct_conv_compatible()) { const auto col_mat_name = "col_for_" + output + "_cal"; if (mat_map.find(col_mat_name) == mat_map.end()) { @@ -56,7 +67,20 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, std::make_shared(1, 1, len, bnn::DataType::Bit); } col_mat = mat(col_mat_name); +======= + const auto col_mat_name = "col_for_" + output + "_cal"; + if (mat_map.find(col_mat_name) == mat_map.end()) { + const auto len = + output_mat->h * output_mat->w * + align_to(weight_mat->h * weight_mat->w * input_mat->elem_c, 128); + mat_map[col_mat_name] = + std::make_shared(1, 1, len, bnn::DataType::Bit); + } + col_mat = mat(col_mat_name); +>>>>>>> parent of be606fa... use bgemm_naive instead of bconv_naive as fallback due to the 128-align weight + if (net.lock()->optimize && !direct_conv_compatible() && + gemm_compatible()) { const auto trans_weight_mat_name = "trans_" + weight; // transpose the weight for bgemm const int m = weight_mat->n; @@ -123,6 +147,7 @@ bool BinConv::gemm_compatible() const { } void BinConv::forward_impl() const { +<<<<<<< HEAD if (net_.lock()->optimize && direct_conv_compatible()) { pack_mat(*input_mat, *binarized_mat); pad(*binarized_mat, pad_h, pad_w, *padded_mat); @@ -138,14 +163,38 @@ void BinConv::forward_impl() const { const int n = output_mat->h * output_mat->w; const int k = weight_mat->total() / weight_mat->n; if (net_.lock()->optimize && gemm_compatible()) { +======= + if (net_.lock()->optimize) { + if (direct_conv_compatible()) { + pack_mat(*input_mat, *binarized_mat); + pad(*binarized_mat, pad_h, pad_w, *padded_mat); + bconv_3x3(*padded_mat, *weight_mat, *output_mat, stride_h); + } else if (gemm_compatible()) { + output_mat->fill(0.f); + + bnn::fused_binarize_im2col(*input_mat, weight_mat->h, weight_mat->w, + pad_h, pad_w, stride_h, stride_w, 1, 1, + *col_mat); + + const int m = weight_mat->n; + const int n = output_mat->h * output_mat->w; + const int k = weight_mat->total() / weight_mat->n; +>>>>>>> parent of be606fa... use bgemm_naive instead of bconv_naive as fallback due to the 128-align weight bgemm(m, n, k, static_cast(transposed_weight_mat->data), m, static_cast(col_mat->data), k, static_cast(output_mat->data), m); } else { +<<<<<<< HEAD bgemm_naive(m, n, k, static_cast(transposed_weight_mat->data), m, static_cast(col_mat->data), k, static_cast(output_mat->data), m); +======= + pack_mat(*input_mat, *binarized_mat); + baseline_bconv(*binarized_mat, *weight_mat, weight_mat->h, + weight_mat->w, pad_h, pad_w, stride_h, stride_w, 1, + 1, output_mat->c, *output_mat); +>>>>>>> parent of be606fa... use bgemm_naive instead of bconv_naive as fallback due to the 128-align weight } } } From 2cac1916adf5769c5efc7c704b8dbcf60920ea05 Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 18:06:43 +0800 Subject: [PATCH 09/14] Revert "Revert "use bgemm_naive instead of bconv_naive as fallback due to the 128-align weight"" This reverts commit 337f55f37f5185a4ef51d86ffe12ea6ae4ab9f25. --- dabnn/layers/BinConv.cpp | 49 ---------------------------------------- 1 file changed, 49 deletions(-) diff --git a/dabnn/layers/BinConv.cpp b/dabnn/layers/BinConv.cpp index 6480cf5..b1dbf3b 100644 --- a/dabnn/layers/BinConv.cpp +++ b/dabnn/layers/BinConv.cpp @@ -25,7 +25,6 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, stride_h(stride_h), stride_w(stride_w) { auto &mat_map = net.lock()->mat_map_; -<<<<<<< HEAD if (direct_conv_compatible()) { const auto binaized_name = "binaized_for_" + output + "_cal"; if (mat_map.find(binaized_name) == mat_map.end()) { @@ -35,16 +34,7 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, binaized_name); } binarized_mat = mat(binaized_name); -======= - const auto binaized_name = "binaized_for_" + output + "_cal"; - if (mat_map.find(binaized_name) == mat_map.end()) { - auto &input_mat = *mat_map[input]; - mat_map[binaized_name] = - std::make_shared(input_mat.h, input_mat.w, input_mat.elem_c, - DataType::Bit, binaized_name); ->>>>>>> parent of be606fa... use bgemm_naive instead of bconv_naive as fallback due to the 128-align weight } - binarized_mat = mat(binaized_name); const auto pad_name = "pad_for_" + output + "_cal"; if (mat_map.find(pad_name) == mat_map.end()) { @@ -55,7 +45,6 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, } padded_mat = mat(pad_name); -<<<<<<< HEAD if (net.lock()->optimize && !direct_conv_compatible()) { const auto col_mat_name = "col_for_" + output + "_cal"; if (mat_map.find(col_mat_name) == mat_map.end()) { @@ -67,20 +56,7 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, std::make_shared(1, 1, len, bnn::DataType::Bit); } col_mat = mat(col_mat_name); -======= - const auto col_mat_name = "col_for_" + output + "_cal"; - if (mat_map.find(col_mat_name) == mat_map.end()) { - const auto len = - output_mat->h * output_mat->w * - align_to(weight_mat->h * weight_mat->w * input_mat->elem_c, 128); - mat_map[col_mat_name] = - std::make_shared(1, 1, len, bnn::DataType::Bit); - } - col_mat = mat(col_mat_name); ->>>>>>> parent of be606fa... use bgemm_naive instead of bconv_naive as fallback due to the 128-align weight - if (net.lock()->optimize && !direct_conv_compatible() && - gemm_compatible()) { const auto trans_weight_mat_name = "trans_" + weight; // transpose the weight for bgemm const int m = weight_mat->n; @@ -147,7 +123,6 @@ bool BinConv::gemm_compatible() const { } void BinConv::forward_impl() const { -<<<<<<< HEAD if (net_.lock()->optimize && direct_conv_compatible()) { pack_mat(*input_mat, *binarized_mat); pad(*binarized_mat, pad_h, pad_w, *padded_mat); @@ -163,38 +138,14 @@ void BinConv::forward_impl() const { const int n = output_mat->h * output_mat->w; const int k = weight_mat->total() / weight_mat->n; if (net_.lock()->optimize && gemm_compatible()) { -======= - if (net_.lock()->optimize) { - if (direct_conv_compatible()) { - pack_mat(*input_mat, *binarized_mat); - pad(*binarized_mat, pad_h, pad_w, *padded_mat); - bconv_3x3(*padded_mat, *weight_mat, *output_mat, stride_h); - } else if (gemm_compatible()) { - output_mat->fill(0.f); - - bnn::fused_binarize_im2col(*input_mat, weight_mat->h, weight_mat->w, - pad_h, pad_w, stride_h, stride_w, 1, 1, - *col_mat); - - const int m = weight_mat->n; - const int n = output_mat->h * output_mat->w; - const int k = weight_mat->total() / weight_mat->n; ->>>>>>> parent of be606fa... use bgemm_naive instead of bconv_naive as fallback due to the 128-align weight bgemm(m, n, k, static_cast(transposed_weight_mat->data), m, static_cast(col_mat->data), k, static_cast(output_mat->data), m); } else { -<<<<<<< HEAD bgemm_naive(m, n, k, static_cast(transposed_weight_mat->data), m, static_cast(col_mat->data), k, static_cast(output_mat->data), m); -======= - pack_mat(*input_mat, *binarized_mat); - baseline_bconv(*binarized_mat, *weight_mat, weight_mat->h, - weight_mat->w, pad_h, pad_w, stride_h, stride_w, 1, - 1, output_mat->c, *output_mat); ->>>>>>> parent of be606fa... use bgemm_naive instead of bconv_naive as fallback due to the 128-align weight } } } From 7d59669477aaa2806ab77ac12859f9f08fcb7938 Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 18:06:47 +0800 Subject: [PATCH 10/14] Revert "use bgemm_naive instead of bconv_naive when non-optimize" This reverts commit cec34994a241c350ff93223e3dd5c9e535798583. --- dabnn/layers/BinConv.cpp | 60 ++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/dabnn/layers/BinConv.cpp b/dabnn/layers/BinConv.cpp index b1dbf3b..7481337 100644 --- a/dabnn/layers/BinConv.cpp +++ b/dabnn/layers/BinConv.cpp @@ -29,9 +29,9 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, const auto binaized_name = "binaized_for_" + output + "_cal"; if (mat_map.find(binaized_name) == mat_map.end()) { auto &input_mat = *mat_map[input]; - mat_map[binaized_name] = std::make_shared( - input_mat.h, input_mat.w, input_mat.elem_c, DataType::Bit, - binaized_name); + mat_map[binaized_name] = + std::make_shared(input_mat.h, input_mat.w, input_mat.elem_c, + DataType::Bit, binaized_name); } binarized_mat = mat(binaized_name); } @@ -46,12 +46,12 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, padded_mat = mat(pad_name); if (net.lock()->optimize && !direct_conv_compatible()) { + const auto col_mat_name = "col_for_" + output + "_cal"; if (mat_map.find(col_mat_name) == mat_map.end()) { const auto len = output_mat->h * output_mat->w * - align_to(weight_mat->h * weight_mat->w * input_mat->elem_c, - 128); + align_to(weight_mat->h * weight_mat->w * input_mat->elem_c, 128); mat_map[col_mat_name] = std::make_shared(1, 1, len, bnn::DataType::Bit); } @@ -123,30 +123,36 @@ bool BinConv::gemm_compatible() const { } void BinConv::forward_impl() const { - if (net_.lock()->optimize && direct_conv_compatible()) { - pack_mat(*input_mat, *binarized_mat); - pad(*binarized_mat, pad_h, pad_w, *padded_mat); - bconv_3x3(*padded_mat, *weight_mat, *output_mat, stride_h); - } else { - output_mat->fill(0.f); - - bnn::fused_binarize_im2col(*input_mat, weight_mat->h, weight_mat->w, - pad_h, pad_w, stride_h, stride_w, 1, 1, - *col_mat); - - const int m = weight_mat->n; - const int n = output_mat->h * output_mat->w; - const int k = weight_mat->total() / weight_mat->n; - if (net_.lock()->optimize && gemm_compatible()) { - bgemm(m, n, k, static_cast(transposed_weight_mat->data), - m, static_cast(col_mat->data), k, - static_cast(output_mat->data), m); + if (net_.lock()->optimize) { + if (direct_conv_compatible()) { + pack_mat(*input_mat, *binarized_mat); + pad(*binarized_mat, pad_h, pad_w, *padded_mat); + bconv_3x3(*padded_mat, *weight_mat, *output_mat, stride_h); } else { - bgemm_naive(m, n, k, - static_cast(transposed_weight_mat->data), m, - static_cast(col_mat->data), k, - static_cast(output_mat->data), m); + output_mat->fill(0.f); + + bnn::fused_binarize_im2col(*input_mat, weight_mat->h, weight_mat->w, + pad_h, pad_w, stride_h, stride_w, 1, 1, + *col_mat); + + const int m = weight_mat->n; + const int n = output_mat->h * output_mat->w; + const int k = weight_mat->total() / weight_mat->n; + if (gemm_compatible()) { + bgemm(m, n, k, static_cast(transposed_weight_mat->data), + m, static_cast(col_mat->data), k, + static_cast(output_mat->data), m); + } else { + bgemm_naive(m, n, k, static_cast(transposed_weight_mat->data), + m, static_cast(col_mat->data), k, + static_cast(output_mat->data), m); + } } + } else { + pack_mat(*input_mat, *binarized_mat); + baseline_bconv(*binarized_mat, *weight_mat, weight_mat->h, + weight_mat->w, pad_h, pad_w, stride_h, stride_w, 1, 1, + output_mat->c, *output_mat); } } From d12dd8b1deab03526cc44abd3f229a6a40db43fe Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 18:06:51 +0800 Subject: [PATCH 11/14] Revert "use bgemm_naive instead of bconv_naive as fallback due to the 128-align weight" This reverts commit be606fa6f87db0a4e9166b79f5d9cb86804525ba. --- dabnn/layers/BinConv.cpp | 57 +++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/dabnn/layers/BinConv.cpp b/dabnn/layers/BinConv.cpp index 7481337..27ad5ce 100644 --- a/dabnn/layers/BinConv.cpp +++ b/dabnn/layers/BinConv.cpp @@ -25,16 +25,14 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, stride_h(stride_h), stride_w(stride_w) { auto &mat_map = net.lock()->mat_map_; - if (direct_conv_compatible()) { - const auto binaized_name = "binaized_for_" + output + "_cal"; - if (mat_map.find(binaized_name) == mat_map.end()) { - auto &input_mat = *mat_map[input]; - mat_map[binaized_name] = - std::make_shared(input_mat.h, input_mat.w, input_mat.elem_c, - DataType::Bit, binaized_name); - } - binarized_mat = mat(binaized_name); + const auto binaized_name = "binaized_for_" + output + "_cal"; + if (mat_map.find(binaized_name) == mat_map.end()) { + auto &input_mat = *mat_map[input]; + mat_map[binaized_name] = + std::make_shared(input_mat.h, input_mat.w, input_mat.elem_c, + DataType::Bit, binaized_name); } + binarized_mat = mat(binaized_name); const auto pad_name = "pad_for_" + output + "_cal"; if (mat_map.find(pad_name) == mat_map.end()) { @@ -45,18 +43,18 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, } padded_mat = mat(pad_name); - if (net.lock()->optimize && !direct_conv_compatible()) { - - const auto col_mat_name = "col_for_" + output + "_cal"; - if (mat_map.find(col_mat_name) == mat_map.end()) { - const auto len = - output_mat->h * output_mat->w * - align_to(weight_mat->h * weight_mat->w * input_mat->elem_c, 128); - mat_map[col_mat_name] = - std::make_shared(1, 1, len, bnn::DataType::Bit); - } - col_mat = mat(col_mat_name); + const auto col_mat_name = "col_for_" + output + "_cal"; + if (mat_map.find(col_mat_name) == mat_map.end()) { + const auto len = + output_mat->h * output_mat->w * + align_to(weight_mat->h * weight_mat->w * input_mat->elem_c, 128); + mat_map[col_mat_name] = + std::make_shared(1, 1, len, bnn::DataType::Bit); + } + col_mat = mat(col_mat_name); + if (net.lock()->optimize && !direct_conv_compatible() && + gemm_compatible()) { const auto trans_weight_mat_name = "trans_" + weight; // transpose the weight for bgemm const int m = weight_mat->n; @@ -128,7 +126,7 @@ void BinConv::forward_impl() const { pack_mat(*input_mat, *binarized_mat); pad(*binarized_mat, pad_h, pad_w, *padded_mat); bconv_3x3(*padded_mat, *weight_mat, *output_mat, stride_h); - } else { + } else if (gemm_compatible()) { output_mat->fill(0.f); bnn::fused_binarize_im2col(*input_mat, weight_mat->h, weight_mat->w, @@ -138,15 +136,14 @@ void BinConv::forward_impl() const { const int m = weight_mat->n; const int n = output_mat->h * output_mat->w; const int k = weight_mat->total() / weight_mat->n; - if (gemm_compatible()) { - bgemm(m, n, k, static_cast(transposed_weight_mat->data), - m, static_cast(col_mat->data), k, - static_cast(output_mat->data), m); - } else { - bgemm_naive(m, n, k, static_cast(transposed_weight_mat->data), - m, static_cast(col_mat->data), k, - static_cast(output_mat->data), m); - } + bgemm(m, n, k, static_cast(transposed_weight_mat->data), + m, static_cast(col_mat->data), k, + static_cast(output_mat->data), m); + } else { + pack_mat(*input_mat, *binarized_mat); + baseline_bconv(*binarized_mat, *weight_mat, weight_mat->h, + weight_mat->w, pad_h, pad_w, stride_h, stride_w, 1, + 1, output_mat->c, *output_mat); } } else { pack_mat(*input_mat, *binarized_mat); From 3d589803270ec167956db9b5bdd8585549af517f Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 19:05:18 +0800 Subject: [PATCH 12/14] move net->read after set optimize field --- tests/net_test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/net_test.cpp b/tests/net_test.cpp index 85b97ad..bc2be90 100644 --- a/tests/net_test.cpp +++ b/tests/net_test.cpp @@ -74,15 +74,15 @@ TEST(net, bireal18imagenetstem_comparison) { std::shared_ptr blob1, blob2; { auto net = bnn::Net::create(); - net->read("/data/local/tmp/model_imagenet_stem.dab"); net->optimize = false; + net->read("/data/local/tmp/model_imagenet_stem.dab"); net->run(input); blob1 = net->get_blob(blob_name); } { auto net = bnn::Net::create(); - net->read("/data/local/tmp/model_imagenet_stem.dab"); net->optimize = true; + net->read("/data/local/tmp/model_imagenet_stem.dab"); net->run(input); blob2 = net->get_blob(blob_name); } From fcddeb4aab33013fdf78e3efc3453866f19b33f2 Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 19:06:05 +0800 Subject: [PATCH 13/14] Fix wrong method in some cases --- dabnn/layers/BinConv.cpp | 91 +++++++++++++++++++++++++++------------- dabnn/layers/BinConv.h | 7 ++++ 2 files changed, 70 insertions(+), 28 deletions(-) diff --git a/dabnn/layers/BinConv.cpp b/dabnn/layers/BinConv.cpp index 27ad5ce..ccf7ff1 100644 --- a/dabnn/layers/BinConv.cpp +++ b/dabnn/layers/BinConv.cpp @@ -25,14 +25,16 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, stride_h(stride_h), stride_w(stride_w) { auto &mat_map = net.lock()->mat_map_; - const auto binaized_name = "binaized_for_" + output + "_cal"; - if (mat_map.find(binaized_name) == mat_map.end()) { - auto &input_mat = *mat_map[input]; - mat_map[binaized_name] = - std::make_shared(input_mat.h, input_mat.w, input_mat.elem_c, - DataType::Bit, binaized_name); + if (method() == Method::DIRECT_CONV || method() == Method::BCONV_NAIVE) { + const auto binaized_name = "binaized_for_" + output + "_cal"; + if (mat_map.find(binaized_name) == mat_map.end()) { + auto &input_mat = *mat_map[input]; + mat_map[binaized_name] = std::make_shared( + input_mat.h, input_mat.w, input_mat.elem_c, DataType::Bit, + binaized_name); + } + binarized_mat = mat(binaized_name); } - binarized_mat = mat(binaized_name); const auto pad_name = "pad_for_" + output + "_cal"; if (mat_map.find(pad_name) == mat_map.end()) { @@ -43,18 +45,17 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, } padded_mat = mat(pad_name); - const auto col_mat_name = "col_for_" + output + "_cal"; - if (mat_map.find(col_mat_name) == mat_map.end()) { - const auto len = - output_mat->h * output_mat->w * - align_to(weight_mat->h * weight_mat->w * input_mat->elem_c, 128); - mat_map[col_mat_name] = - std::make_shared(1, 1, len, bnn::DataType::Bit); - } - col_mat = mat(col_mat_name); - - if (net.lock()->optimize && !direct_conv_compatible() && - gemm_compatible()) { + if (method() == Method::BGEMM || method() == Method::BGEMM_NAIVE) { + const auto col_mat_name = "col_for_" + output + "_cal"; + if (mat_map.find(col_mat_name) == mat_map.end()) { + const auto len = + output_mat->h * output_mat->w * + align_to(weight_mat->h * weight_mat->w * input_mat->elem_c, + 128); + mat_map[col_mat_name] = + std::make_shared(1, 1, len, bnn::DataType::Bit); + } + col_mat = mat(col_mat_name); const auto trans_weight_mat_name = "trans_" + weight; // transpose the weight for bgemm const int m = weight_mat->n; @@ -76,6 +77,24 @@ BinConv::BinConv(NetCP net, const std::string &name, css input, css weight, } } +BinConv::Method BinConv::method() const { + if (net_.lock()->optimize) { + if (direct_conv_compatible()) { + return Method::DIRECT_CONV; + } else if (gemm_compatible()) { + return Method::BGEMM; + } else { + return Method::BCONV_NAIVE; + } + } else { + if (weight_mat->c == 1) { + return Method::BCONV_NAIVE; + } else { + return Method::BGEMM_NAIVE; + } + } +} + bool BinConv::direct_conv_compatible() const { #ifdef __aarch64__ if (weight_mat->h == 3 && weight_mat->w == 3 && input_mat->elem_c == 64 && @@ -121,12 +140,14 @@ bool BinConv::gemm_compatible() const { } void BinConv::forward_impl() const { - if (net_.lock()->optimize) { - if (direct_conv_compatible()) { + switch (method()) { + case Method::DIRECT_CONV: { pack_mat(*input_mat, *binarized_mat); pad(*binarized_mat, pad_h, pad_w, *padded_mat); bconv_3x3(*padded_mat, *weight_mat, *output_mat, stride_h); - } else if (gemm_compatible()) { + break; + } + case Method::BGEMM: { output_mat->fill(0.f); bnn::fused_binarize_im2col(*input_mat, weight_mat->h, weight_mat->w, @@ -139,17 +160,31 @@ void BinConv::forward_impl() const { bgemm(m, n, k, static_cast(transposed_weight_mat->data), m, static_cast(col_mat->data), k, static_cast(output_mat->data), m); - } else { + break; + } + case Method::BGEMM_NAIVE: { + output_mat->fill(0.f); + + bnn::fused_binarize_im2col(*input_mat, weight_mat->h, weight_mat->w, + pad_h, pad_w, stride_h, stride_w, 1, 1, + *col_mat); + + const int m = weight_mat->n; + const int n = output_mat->h * output_mat->w; + const int k = weight_mat->total() / weight_mat->n; + bgemm_naive(m, n, k, + static_cast(transposed_weight_mat->data), m, + static_cast(col_mat->data), k, + static_cast(output_mat->data), m); + break; + } + case Method::BCONV_NAIVE: { pack_mat(*input_mat, *binarized_mat); baseline_bconv(*binarized_mat, *weight_mat, weight_mat->h, weight_mat->w, pad_h, pad_w, stride_h, stride_w, 1, 1, output_mat->c, *output_mat); + break; } - } else { - pack_mat(*input_mat, *binarized_mat); - baseline_bconv(*binarized_mat, *weight_mat, weight_mat->h, - weight_mat->w, pad_h, pad_w, stride_h, stride_w, 1, 1, - output_mat->c, *output_mat); } } diff --git a/dabnn/layers/BinConv.h b/dabnn/layers/BinConv.h index dd61572..430f04d 100644 --- a/dabnn/layers/BinConv.h +++ b/dabnn/layers/BinConv.h @@ -26,8 +26,15 @@ class BinConv : public Layer { virtual std::string to_str() const; private: + enum Method { + DIRECT_CONV = 0, + BGEMM, + BCONV_NAIVE, + BGEMM_NAIVE + }; bool direct_conv_compatible() const; bool gemm_compatible() const; + Method method() const; }; } // namespace bnn From a71711e9cd395df24791be36ecb280c8e76db99a Mon Sep 17 00:00:00 2001 From: daquexian Date: Thu, 22 Aug 2019 19:32:21 +0800 Subject: [PATCH 14/14] move some missing net->read after setting optimize field --- tests/net_test.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/net_test.cpp b/tests/net_test.cpp index bc2be90..3d9a01f 100644 --- a/tests/net_test.cpp +++ b/tests/net_test.cpp @@ -34,15 +34,15 @@ TEST(net, bireal18imagenet_comparison) { std::shared_ptr blob1, blob2; { auto net = bnn::Net::create(); - net->read("/data/local/tmp/model_imagenet.dab"); net->optimize = false; + net->read("/data/local/tmp/model_imagenet.dab"); net->run(input); blob1 = net->get_blob(blob_name); } { auto net = bnn::Net::create(); - net->read("/data/local/tmp/model_imagenet.dab"); net->optimize = true; + net->read("/data/local/tmp/model_imagenet.dab"); net->run(input); blob2 = net->get_blob(blob_name); } @@ -56,8 +56,8 @@ TEST(net, bireal18imagenet) { const std::string blob_name = "188"; { auto net = bnn::Net::create(); - net->read("/data/local/tmp/model_imagenet.dab"); net->optimize = true; + net->read("/data/local/tmp/model_imagenet.dab"); net->run(input); const auto blob = net->get_blob(blob_name); ASSERT_NEAR((*blob)[0], -0.9431, 1e-4); @@ -96,8 +96,8 @@ TEST(net, bireal18imagenetstem) { const std::string blob_name = "216"; { auto net = bnn::Net::create(); - net->read("/data/local/tmp/model_imagenet_stem.dab"); net->optimize = true; + net->read("/data/local/tmp/model_imagenet_stem.dab"); net->run(input); const auto &blob = net->get_blob(blob_name); ASSERT_NEAR((*blob)[0], 1.9842, 1e-4);