llvm / Polygeist

C/C++ frontend for MLIR. Also features polyhedral optimizations, parallel optimizations, and more!
https://polygeist.llvm.org
Other
441 stars 101 forks source link

Unexpectedly failed tests on M1 Mac #161

Open ThanHenderson opened 2 years ago

ThanHenderson commented 2 years ago

I'm trying to build on my M1 Mac and some tests are failing unexpectedly.

❯ clang --version
Apple clang version 13.0.0 (clang-1300.0.29.30)
Target: arm64-apple-darwin21.2.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

This is how I built.

cmake -G Ninja ../llvm-project/llvm \
  -DDEFAULT_SYSROOT="$(xcrun --show-sdk-path)"\     # Needed for Mac Includes
  -DLLVM_ENABLE_PROJECTS="clang;mlir" \
  -DLLVM_EXTERNAL_PROJECTS="polygeist" \
  -DLLVM_EXTERNAL_POLYGEIST_SOURCE_DIR=.. \
  -DLLVM_TARGETS_TO_BUILD="host" \
  -DLLVM_ENABLE_ASSERTIONS=ON \
  -DCMAKE_BUILD_TYPE=DEBUG
ninja -j6
ninja check-mlir-clang

The failures look similar to this one.

********************
FAIL: mlir-clang :: polybench/linear-algebra/blas/gemm/gemm.c (39 of 129)
******************** TEST 'mlir-clang :: polybench/linear-algebra/blas/gemm/gemm.c' FAILED ********************
Script:
--
: 'RUN: at line 1';   /Users/than/Development/c680/Polygeist/build/bin/mlir-clang /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c -I /../clang/lib/Headers -I /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities -S | /Users/than/Development/c680/Polygeist/build/bin/FileCheck /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c
: 'RUN: at line 2';   /Users/than/Development/c680/Polygeist/build/bin/mlir-clang /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c -I /../clang/lib/Headers -I /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities -S --memref-fullrank | /Users/than/Development/c680/Polygeist/build/bin/FileCheck /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c --check-prefix=FULLRANK
: 'RUN: at line 3';   /Users/than/Development/c680/Polygeist/build/bin/clang /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c -O3 -I /../clang/lib/Headers -I /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities/polybench.c -D POLYBENCH_DUMP_ARRAYS -D POLYBENCH_NO_FLUSH_CACHE -D MINI_DATASET -o /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.exec1 && /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.exec1 &> /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.out1
: 'RUN: at line 4';   /Users/than/Development/c680/Polygeist/build/bin/mlir-clang /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities/polybench.c -D POLYBENCH_DUMP_ARRAYS -D POLYBENCH_NO_FLUSH_CACHE -D MINI_DATASET -I /../clang/lib/Headers -I /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities -O3 -o /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.execm && /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.execm &> /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.out2
: 'RUN: at line 5';   rm -f /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.exec1 /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.execm
: 'RUN: at line 6';   diff /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.out1 /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.out2
: 'RUN: at line 7';   rm -f /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.out1 /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.out2
: 'RUN: at line 8';   /Users/than/Development/c680/Polygeist/build/bin/mlir-clang /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities/polybench.c -D POLYBENCH_TIME -D POLYBENCH_NO_FLUSH_CACHE -D MINI_DATASET -I /../clang/lib/Headers -I /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities -O3 -o /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.execm && /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.execm > /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.mlir.time; cat /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.mlir.time | /Users/than/Development/c680/Polygeist/build/bin/FileCheck /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c --check-prefix EXEC
: 'RUN: at line 9';   /Users/than/Development/c680/Polygeist/build/bin/clang /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c -O3 /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities/polybench.c -D POLYBENCH_TIME -D POLYBENCH_NO_FLUSH_CACHE -D MINI_DATASET -I /../clang/lib/Headers -I /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities -o /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.exec2 && /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.exec2 > /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.clang.time; cat /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.clang.time | /Users/than/Development/c680/Polygeist/build/bin/FileCheck /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c --check-prefix EXEC
: 'RUN: at line 10';   rm -f /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.exec2 /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.execm
: 'RUN: at line 12';   /Users/than/Development/c680/Polygeist/build/bin/clang /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c -O3 -I /../clang/lib/Headers -I /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities/polybench.c -D POLYBENCH_DUMP_ARRAYS -D POLYBENCH_NO_FLUSH_CACHE -D MINI_DATASET -o /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.exec1 && /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.exec1 &> /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.out1
: 'RUN: at line 13';   /Users/than/Development/c680/Polygeist/build/bin/mlir-clang /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities/polybench.c -D POLYBENCH_DUMP_ARRAYS -D POLYBENCH_NO_FLUSH_CACHE -D MINI_DATASET -I /../clang/lib/Headers -I /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities -detect-reduction -O3 -o /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.execm && /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.execm &> /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.out2
: 'RUN: at line 14';   rm -f /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.exec1 /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.execm
: 'RUN: at line 15';   diff /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.out1 /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.out2
: 'RUN: at line 16';   rm -f /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.out1 /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c.out2
--
Exit Code: 2

Command Output (stderr):
--
RecordType 0x1518703c0 'struct __sFILEX'
`-Record 0x151870338 '__sFILEX'
ST: %struct.__sFILEX = type opaque
fields
types
Assertion failed: (types.size()), function getMLIRType, file clang-mlir.cc, line 6005.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.  Program arguments: /Users/than/Development/c680/Polygeist/build/bin/mlir-clang /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c -I /../clang/lib/Headers -I /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/utilities -S
1.  <eof> parser at end of file
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  mlir-clang               0x0000000102e7aef8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 68
1  mlir-clang               0x0000000102e7b3ec PrintStackTraceSignalHandler(void*) + 28
2  mlir-clang               0x0000000102e79558 llvm::sys::RunSignalHandlers() + 132
3  mlir-clang               0x0000000102e7d0cc SignalHandler(int) + 220
4  libsystem_platform.dylib 0x00000001c459c4e4 _sigtramp + 56
5  libsystem_pthread.dylib  0x00000001c4584eb0 pthread_kill + 288
6  libsystem_c.dylib        0x00000001c44c2314 abort + 164
7  libsystem_c.dylib        0x00000001c44c172c err + 0
8  mlir-clang               0x00000001001e9f4c MLIRASTConsumer::getMLIRType(clang::QualType, bool*, bool) + 3812
9  mlir-clang               0x00000001001e9108 MLIRASTConsumer::getMLIRType(clang::QualType, bool*, bool) + 160
10 mlir-clang               0x00000001001ea8b0 MLIRASTConsumer::getMLIRType(clang::QualType, bool*, bool) + 6216
11 mlir-clang               0x00000001001e9bec MLIRASTConsumer::getMLIRType(clang::QualType, bool*, bool) + 2948
12 mlir-clang               0x00000001001e9108 MLIRASTConsumer::getMLIRType(clang::QualType, bool*, bool) + 160
13 mlir-clang               0x00000001001e92a0 MLIRASTConsumer::getMLIRType(clang::QualType, bool*, bool) + 568
14 mlir-clang               0x00000001001ea8b0 MLIRASTConsumer::getMLIRType(clang::QualType, bool*, bool) + 6216
15 mlir-clang               0x00000001001ea8b0 MLIRASTConsumer::getMLIRType(clang::QualType, bool*, bool) + 6216
16 mlir-clang               0x0000000100223138 MLIRScanner::VisitDeclRefExpr(clang::DeclRefExpr*) + 996
17 mlir-clang               0x00000001001ef700 clang::StmtVisitorBase<std::__1::add_pointer, MLIRScanner, ValueCategory>::Visit(clang::Stmt*) + 5072
18 mlir-clang               0x00000001001fa72c MLIRScanner::VisitCastExpr(clang::CastExpr*) + 5564
19 mlir-clang               0x0000000100276cc4 clang::StmtVisitorBase<std::__1::add_pointer, MLIRScanner, ValueCategory>::VisitImplicitCastExpr(clang::ImplicitCastExpr*) + 32
20 mlir-clang               0x00000001001ef640 clang::StmtVisitorBase<std::__1::add_pointer, MLIRScanner, ValueCategory>::Visit(clang::Stmt*) + 4880
21 mlir-clang               0x0000000100210998 MLIRScanner::VisitCallExpr(clang::CallExpr*)::$_5::operator()(clang::Expr*) const + 48
22 mlir-clang               0x000000010020f138 MLIRScanner::VisitCallExpr(clang::CallExpr*) + 27108
23 mlir-clang               0x00000001001ef4f0 clang::StmtVisitorBase<std::__1::add_pointer, MLIRScanner, ValueCategory>::Visit(clang::Stmt*) + 4544
24 mlir-clang               0x00000001002d8214 MLIRScanner::VisitCompoundStmt(clang::CompoundStmt*) + 136
25 mlir-clang               0x00000001001ee950 clang::StmtVisitorBase<std::__1::add_pointer, MLIRScanner, ValueCategory>::Visit(clang::Stmt*) + 1568
26 mlir-clang               0x00000001001e8928 MLIRScanner::init(mlir::FuncOp, clang::FunctionDecl const*) + 4684
27 mlir-clang               0x000000010022869c MLIRASTConsumer::run() + 696
28 mlir-clang               0x00000001002296bc MLIRASTConsumer::HandleTranslationUnit(clang::ASTContext&) + 28
29 mlir-clang               0x0000000108709378 clang::ParseAST(clang::Sema&, bool, bool) + 732
30 mlir-clang               0x000000010539f2f8 clang::ASTFrontendAction::ExecuteAction() + 264
31 mlir-clang               0x000000010539e9f4 clang::FrontendAction::Execute() + 120
32 mlir-clang               0x000000010022ef98 parseMLIR(char const*, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, mlir::OwningOpRef<mlir::ModuleOp>&, llvm::Triple&, llvm::DataLayout&) + 4204
33 mlir-clang               0x000000010022bb1c main + 2980
34 dyld                     0x000000012b4e90f4 start + 520
FileCheck error: '<stdin>' is empty.
FileCheck command line:  /Users/than/Development/c680/Polygeist/build/bin/FileCheck /Users/than/Development/c680/Polygeist/tools/mlir-clang/Test/polybench/linear-algebra/blas/gemm/gemm.c

--

These are the failed tests.

********************
********************
Failed Tests (32):
  mlir-clang :: Verification/fscanf.c
  mlir-clang :: Verification/gettimeofday.c
  mlir-clang :: polybench/datamining/correlation/correlation.c
  mlir-clang :: polybench/datamining/covariance/covariance.c
  mlir-clang :: polybench/linear-algebra/blas/gemm/gemm.c
  mlir-clang :: polybench/linear-algebra/blas/gemver/gemver.c
  mlir-clang :: polybench/linear-algebra/blas/gesummv/gesummv.c
  mlir-clang :: polybench/linear-algebra/blas/symm/symm.c
  mlir-clang :: polybench/linear-algebra/blas/syr2k/syr2k.c
  mlir-clang :: polybench/linear-algebra/blas/syrk/syrk.c
  mlir-clang :: polybench/linear-algebra/blas/trmm/trmm.c
  mlir-clang :: polybench/linear-algebra/kernels/2mm/2mm.c
  mlir-clang :: polybench/linear-algebra/kernels/3mm/3mm.c
  mlir-clang :: polybench/linear-algebra/kernels/atax/atax.c
  mlir-clang :: polybench/linear-algebra/kernels/bicg/bicg.c
  mlir-clang :: polybench/linear-algebra/kernels/doitgen/doitgen.c
  mlir-clang :: polybench/linear-algebra/kernels/mvt/mvt.c
  mlir-clang :: polybench/linear-algebra/solvers/cholesky/cholesky.c
  mlir-clang :: polybench/linear-algebra/solvers/durbin/durbin.c
  mlir-clang :: polybench/linear-algebra/solvers/gramschmidt/gramschmidt.c
  mlir-clang :: polybench/linear-algebra/solvers/lu/lu.c
  mlir-clang :: polybench/linear-algebra/solvers/ludcmp/ludcmp.c
  mlir-clang :: polybench/linear-algebra/solvers/trisolv/trisolv.c
  mlir-clang :: polybench/medley/deriche/deriche.c
  mlir-clang :: polybench/medley/floyd-warshall/floyd-warshall.c
  mlir-clang :: polybench/medley/nussinov/nussinov.c
  mlir-clang :: polybench/stencils/adi/adi.c
  mlir-clang :: polybench/stencils/fdtd-2d/fdtd-2d.c
  mlir-clang :: polybench/stencils/heat-3d/heat-3d.c
  mlir-clang :: polybench/stencils/jacobi-1d/jacobi-1d.c
  mlir-clang :: polybench/stencils/jacobi-2d/jacobi-2d.c
  mlir-clang :: polybench/stencils/seidel-2d/seidel-2d.c

Testing Time: 11.87s
  Passed           : 92
  Expectedly Failed:  5
  Failed           : 32
FAILED: tools/polygeist/tools/mlir-clang/Test/CMakeFiles/check-mlir-clang /Users/than/Development/c680/Polygeist/build/tools/polygeist/tools/mlir-clang/Test/CMakeFiles/check-mlir-clang
cd /Users/than/Development/c680/Polygeist/build/tools/polygeist/tools/mlir-clang/Test && /opt/homebrew/Frameworks/Python.framework/Versions/3.9/bin/python3.9 /Users/than/Development/c680/Polygeist/build/bin/llvm-lit -sv /Users/than/Development/c680/Polygeist/build/tools/polygeist/tools/mlir-clang/Test
ninja: build stopped: subcommand failed.

Am I missing some information here? Have I done something wrong in the build process?

Any advice would be greatly appreciated.

wsmoses commented 2 years ago

Never tried building on MacOS, but will take a look shortly. My guess from context is that the MacOS file type isn't getting forced to use the LLVM ABI -- at least without something else weird occuring.

pk-218 commented 1 year ago

@ThanHenderson did you find a fix for it? The same tests are failing for me as well

ThanHenderson commented 1 year ago

@pk-218 No I haven't revisited this on the Mac since opening the issue. Our solution was to just only use an x64 Linux machine for any Polygeist stuff.

pk-218 commented 1 year ago

@ThanHenderson thanks for replying! I guess I will resort to another machine as well to work on it