simit-lang / simit

A language for computing on sparse systems
http://simit-lang.org
Other
452 stars 52 forks source link

CMake Error at src/CMakeLists.txt:57 #116

Closed ibenettaleb closed 2 years ago

ibenettaleb commented 5 years ago

when I try to run "cmake .." it shows me this error:

capture

termi-official commented 5 years ago

Can confirm this. Simit seems to not play well with newer LLVM versions. Fixing the cmake error does not help either, since the breaking changes in newer LLVM results in multiple compilation errors. My attempt to fix these compilation issues by naively replacing the old API calls with the corresponding new ones results in hard to track segfaults.

I was able to make simit work by using nwtgck's LLVM docker container using LLVM 3.8.1 and the following shell commands

git clone https://github.com/simit-lang/simit
cd simit
mkdir build
cd build
export SIMIT_CUDA_ENABLE=0
export LLVM_CONFIG=llvm-config-3.8.1
cmake ..
make

As a note: I was unable to build simit with libeigen3-dev (Version 3.2.0-8) in this container, getting a super strange error.

FAILED: /usr/bin/c++   -DEIGEN -DLLVM_MAJOR_VERSION=3 -DLLVM_MINOR_VERSION=8 -DSIMIT_ASSERTS -DSIMIT_DEBUG -Dsimit_EXPORTS -I../src -I/usr/include/eigen3 -I/usr/local/llvm/llvm-3.8.1/include -Wno-unused-parameter -Wno-missing-field-initializers -Wno-deprecated -std=c++11 -g -fPIC   -I/usr/local/llvm/llvm-3.8.1/include   -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -MD -MT src/CMakeFiles/simit.dir/runtime.cpp.o -MF src/CMakeFiles/simit.dir/runtime.cpp.o.d -o src/CMakeFiles/simit.dir/runtime.cpp.o -c /root/code/simit/src/runtime.cpp
In file included from /usr/include/eigen3/Eigen/Core:331:0,
                 from /root/code/simit/src/runtime.h:17,
                 from /root/code/simit/src/runtime.cpp:1:
/usr/include/eigen3/Eigen/src/Core/SolveTriangular.h: In instantiation of 'static void Eigen::internal::triangular_solver_selector<Lhs, Rhs, Side, Mode, 0, 1>::run(const Lhs&, Rhs&) [with Lhs = Eigen::SparseMatrix<float, 0, int>; Rhs = Eigen::Matrix<float, -1, 1>; int Side = 1; int Mode = 1]':
/usr/include/eigen3/Eigen/src/Core/SolveTriangular.h:186:51:   required from 'void Eigen::TriangularView<MatrixType, Mode>::solveInPlace(const Eigen::MatrixBase<OtherDerived>&) const [with int Side = 1; OtherDerived = Eigen::Matrix<float, -1, 1>; _MatrixType = Eigen::SparseMatrix<float, 0, int>; unsigned int _Mode = 1u]'
/usr/include/eigen3/Eigen/src/Core/SolveTriangular.h:248:5:   required from 'void Eigen::internal::triangular_solve_retval<Side, TriangularType, Rhs>::evalTo(Dest&) const [with Dest = Eigen::Matrix<float, -1, 1>; int Side = 1; TriangularType = Eigen::TriangularView<Eigen::SparseMatrix<float, 0, int>, 1u>; Rhs = Eigen::Matrix<float, -1, 1>]'
/usr/include/eigen3/Eigen/src/Core/ReturnByValue.h:61:7:   required from 'void Eigen::ReturnByValue<Derived>::evalTo(Dest&) const [with Dest = Eigen::Matrix<float, -1, 1>; Derived = Eigen::internal::triangular_solve_retval<1, Eigen::TriangularView<Eigen::SparseMatrix<float, 0, int>, 1u>, Eigen::Matrix<float, -1, 1> >]'
/usr/include/eigen3/Eigen/src/Core/Assign.h:522:101:   required from 'static Derived& Eigen::internal::assign_selector<Derived, OtherDerived, false, false>::evalTo(ActualDerived&, const ActualOtherDerived&) [with ActualDerived = Eigen::Matrix<float, -1, 1>; ActualOtherDerived = Eigen::ReturnByValue<Eigen::internal::triangular_solve_retval<1, Eigen::TriangularView<Eigen::SparseMatrix<float, 0, int>, 1u>, Eigen::Matrix<float, -1, 1> > >; Derived = Eigen::Matrix<float, -1, 1>; OtherDerived = Eigen::internal::triangular_solve_retval<1, Eigen::TriangularView<Eigen::SparseMatrix<float, 0, int>, 1u>, Eigen::Matrix<float, -1, 1> >]'
/usr/include/eigen3/Eigen/src/Core/Assign.h:578:98:   required from 'Derived& Eigen::MatrixBase<Derived>::operator=(const Eigen::ReturnByValue<OtherDerived>&) [with OtherDerived = Eigen::internal::triangular_solve_retval<1, Eigen::TriangularView<Eigen::SparseMatrix<float, 0, int>, 1u>, Eigen::Matrix<float, -1, 1> >; Derived = Eigen::Matrix<float, -1, 1>]'
/usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:418:34:   required from 'Derived& Eigen::PlainObjectBase<Derived>::operator=(const Eigen::ReturnByValue<OtherDerived>&) [with OtherDerived = Eigen::internal::triangular_solve_retval<1, Eigen::TriangularView<Eigen::SparseMatrix<float, 0, int>, 1u>, Eigen::Matrix<float, -1, 1> >; Derived = Eigen::Matrix<float, -1, 1>]'
/usr/include/eigen3/Eigen/src/Core/Matrix.h:190:34:   required from 'Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::operator=(const Eigen::ReturnByValue<OtherDerived>&) [with OtherDerived = Eigen::internal::triangular_solve_retval<1, Eigen::TriangularView<Eigen::SparseMatrix<float, 0, int>, 1u>, Eigen::Matrix<float, -1, 1> >; _Scalar = float; int _Rows = -1; int _Cols = 1; int _Options = 0; int _MaxRows = -1; int _MaxCols = 1]'
/root/code/simit/src/runtime.cpp:633:5:   required from 'int triangularSolve(int, int, int*, int*, int, int, Float*, int, Float*, int, Float*) [with Float = float]'
/root/code/simit/src/runtime.cpp:646:53:   required from here
/usr/include/eigen3/Eigen/src/Core/SolveTriangular.h:73:83: error: 'const class Eigen::SparseMatrix<float, 0, int>' has no member named 'outerStride'
       ::run(actualLhs.cols(), actualLhs.data(), actualLhs.outerStride(), actualRhs);
                                                                                   ^
/usr/include/eigen3/Eigen/src/Core/SolveTriangular.h: In instantiation of 'static void Eigen::internal::triangular_solver_selector<Lhs, Rhs, Side, Mode, 0, 1>::run(const Lhs&, Rhs&) [with Lhs = Eigen::SparseMatrix<double, 0, int>; Rhs = Eigen::Matrix<double, -1, 1>; int Side = 1; int Mode = 1]':
/usr/include/eigen3/Eigen/src/Core/SolveTriangular.h:186:51:   required from 'void Eigen::TriangularView<MatrixType, Mode>::solveInPlace(const Eigen::MatrixBase<OtherDerived>&) const [with int Side = 1; OtherDerived = Eigen::Matrix<double, -1, 1>; _MatrixType = Eigen::SparseMatrix<double, 0, int>; unsigned int _Mode = 1u]'
/usr/include/eigen3/Eigen/src/Core/SolveTriangular.h:248:5:   required from 'void Eigen::internal::triangular_solve_retval<Side, TriangularType, Rhs>::evalTo(Dest&) const [with Dest = Eigen::Matrix<double, -1, 1>; int Side = 1; TriangularType = Eigen::TriangularView<Eigen::SparseMatrix<double, 0, int>, 1u>; Rhs = Eigen::Matrix<double, -1, 1>]'
/usr/include/eigen3/Eigen/src/Core/ReturnByValue.h:61:7:   required from 'void Eigen::ReturnByValue<Derived>::evalTo(Dest&) const [with Dest = Eigen::Matrix<double, -1, 1>; Derived = Eigen::internal::triangular_solve_retval<1, Eigen::TriangularView<Eigen::SparseMatrix<double, 0, int>, 1u>, Eigen::Matrix<double, -1, 1> >]'
/usr/include/eigen3/Eigen/src/Core/Assign.h:522:101:   required from 'static Derived& Eigen::internal::assign_selector<Derived, OtherDerived, false, false>::evalTo(ActualDerived&, const ActualOtherDerived&) [with ActualDerived = Eigen::Matrix<double, -1, 1>; ActualOtherDerived = Eigen::ReturnByValue<Eigen::internal::triangular_solve_retval<1, Eigen::TriangularView<Eigen::SparseMatrix<double, 0, int>, 1u>, Eigen::Matrix<double, -1, 1> > >; Derived = Eigen::Matrix<double, -1, 1>; OtherDerived = Eigen::internal::triangular_solve_retval<1, Eigen::TriangularView<Eigen::SparseMatrix<double, 0, int>, 1u>, Eigen::Matrix<double, -1, 1> >]'
/usr/include/eigen3/Eigen/src/Core/Assign.h:578:98:   required from 'Derived& Eigen::MatrixBase<Derived>::operator=(const Eigen::ReturnByValue<OtherDerived>&) [with OtherDerived = Eigen::internal::triangular_solve_retval<1, Eigen::TriangularView<Eigen::SparseMatrix<double, 0, int>, 1u>, Eigen::Matrix<double, -1, 1> >; Derived = Eigen::Matrix<double, -1, 1>]'
/usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:418:34:   required from 'Derived& Eigen::PlainObjectBase<Derived>::operator=(const Eigen::ReturnByValue<OtherDerived>&) [with OtherDerived = Eigen::internal::triangular_solve_retval<1, Eigen::TriangularView<Eigen::SparseMatrix<double, 0, int>, 1u>, Eigen::Matrix<double, -1, 1> >; Derived = Eigen::Matrix<double, -1, 1>]'
/usr/include/eigen3/Eigen/src/Core/Matrix.h:190:34:   required from 'Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::operator=(const Eigen::ReturnByValue<OtherDerived>&) [with OtherDerived = Eigen::internal::triangular_solve_retval<1, Eigen::TriangularView<Eigen::SparseMatrix<double, 0, int>, 1u>, Eigen::Matrix<double, -1, 1> >; _Scalar = double; int _Rows = -1; int _Cols = 1; int _Options = 0; int _MaxRows = -1; int _MaxCols = 1]'
/root/code/simit/src/runtime.cpp:633:5:   required from 'int triangularSolve(int, int, int*, int*, int, int, Float*, int, Float*, int, Float*) [with Float = double]'
/root/code/simit/src/runtime.cpp:652:53:   required from here
/usr/include/eigen3/Eigen/src/Core/SolveTriangular.h:73:83: error: 'const class Eigen::SparseMatrix<double, 0, int>' has no member named 'outerStride'

I was able to eliminate this one by using a newer version of eigen3 (3.3.7-1).

ibenettaleb commented 2 years ago

Outdate