EnzymeAD / Enzyme

High-performance automatic differentiation of LLVM and MLIR.
https://enzyme.mit.edu
Other
1.26k stars 106 forks source link

Integration tests fail on ubuntu 20.04 aarch64 #379

Open tgymnich opened 2 years ago

tgymnich commented 2 years ago

Tested on ghcr.io/tgymnich/enzyme-dev-docker/ubuntu-20-llvm-12:latest

********************
********************
Failed Tests (10):
  Enzyme :: Integration/ReverseMode/cmplx.cpp
  Enzyme :: Integration/ReverseMode/eigensumsq.cpp
  Enzyme :: Integration/ReverseMode/eigensumsqdyn-notmp.cpp
  Enzyme :: Integration/ReverseMode/eigensumsqdyn.cpp
  Enzyme :: Integration/ReverseMode/integrateconst.cpp
  Enzyme :: Integration/ReverseMode/integrateexp.cpp
  Enzyme :: Integration/ReverseMode/simpleeigen-made-part.cpp
  Enzyme :: Integration/ReverseMode/simpleeigen-made.cpp
  Enzyme :: Integration/ReverseMode/simpleeigenstatic-made-odd.cpp
  Enzyme :: Integration/ReverseMode/simpleeigenstatic-made.cpp

Full output

wsmoses commented 2 years ago

The last error ( type not deduced), I'm not concerned about. This one, however I am.

Can you add debug info?

Mp(o=3, i=3)=8.000000
opt: /usr/lib/llvm-12/include/llvm/Support/Casting.h:269: typename llvm::cast_retty<X, Y*>::ret_type llvm::cast(Y*) [with X = llvm::StructType; Y = llvm::Type; typename llvm::cast_retty<X, Y*>::ret_type = llvm::StructType*]: Assertion `isa<X>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /usr/lib/llvm-12/bin/opt - -load=/workspaces/Enzyme/enzyme/build/Enzyme/LLVMEnzyme-12.so -enzyme -S
1.      Running pass 'Enzyme Pass' on module '<stdin>'.
 #0 0x0000ffff9169edbc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-12/lib/libLLVM-12.so.1+0xcecdbc)
 #1 0x0000ffff9169ce74 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-12/lib/libLLVM-12.so.1+0xceae74)
 #2 0x0000ffff9169f57c (/usr/lib/llvm-12/lib/libLLVM-12.so.1+0xced57c)
 #3 0x0000ffff95dbd79c (linux-vdso.so.1+0x79c)
 #4 0x0000ffff90590138 raise (/lib/aarch64-linux-gnu/libc.so.6+0x37138)
 #5 0x0000ffff9057cd68 abort (/lib/aarch64-linux-gnu/libc.so.6+0x23d68)
 #6 0x0000ffff90589674 (/lib/aarch64-linux-gnu/libc.so.6+0x30674)
 #7 0x0000ffff905896dc (/lib/aarch64-linux-gnu/libc.so.6+0x306dc)
 #8 0x0000ffff8e12bfd8 llvm::cast_retty<llvm::StructType, llvm::Type*>::ret_type llvm::cast<llvm::StructType, llvm::Type>(llvm::Type*) (/workspaces/Enzyme/enzyme/build/Enzyme/LLVMEnzyme-12.so+0x493fd8)
 #9 0x0000ffff8e25e348 AdjointGenerator<AugmentedReturn const*>::visitInsertValueInst(llvm::InsertValueInst&) (/workspaces/Enzyme/enzyme/build/Enzyme/LLVMEnzyme-12.so+0x5c6348)
#10 0x0000ffff8e22752c llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visitInsertValue(llvm::InsertValueInst&) (/workspaces/Enzyme/enzyme/build/Enzyme/LLVMEnzyme-12.so+0x58f52c)
#11 0x0000ffff8e214844 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction&) (/workspaces/Enzyme/enzyme/build/Enzyme/LLVMEnzyme-12.so+0x57c844)
tgymnich commented 2 years ago
Mp(o=3, i=3)=8.000000
opt: /usr/lib/llvm-12/include/llvm/Support/Casting.h:269: typename llvm::cast_retty<X, Y*>::ret_type llvm::cast(Y*) [with X = llvm::StructType; Y = llvm::Type; typename llvm::cast_retty<X, Y*>::ret_type = llvm::StructType*]: Assertion `isa<X>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /usr/lib/llvm-12/bin/opt - -load=/workspaces/Enzyme/enzyme/build/Enzyme/LLVMEnzyme-12.so -enzyme -S
1.      Running pass 'Enzyme Pass' on module '<stdin>'.
 #0 0x0000ffff83b6edbc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-12/lib/libLLVM-12.so.1+0xcecdbc)
 #1 0x0000ffff83b6ce74 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-12/lib/libLLVM-12.so.1+0xceae74)
 #2 0x0000ffff83b6f57c (/usr/lib/llvm-12/lib/libLLVM-12.so.1+0xced57c)
 #3 0x0000ffff8828d79c (linux-vdso.so.1+0x79c)
 #4 0x0000ffff82a60138 raise (/lib/aarch64-linux-gnu/libc.so.6+0x37138)
 #5 0x0000ffff82a4cd68 abort (/lib/aarch64-linux-gnu/libc.so.6+0x23d68)
 #6 0x0000ffff82a59674 (/lib/aarch64-linux-gnu/libc.so.6+0x30674)
 #7 0x0000ffff82a596dc (/lib/aarch64-linux-gnu/libc.so.6+0x306dc)
 #8 0x0000ffff805f45b8 llvm::cast_retty<llvm::StructType, llvm::Type*>::ret_type llvm::cast<llvm::StructType, llvm::Type>(llvm::Type*) /usr/lib/llvm-12/include/llvm/Support/Casting.h:269:3
 #9 0x0000ffff8072bac4 AdjointGenerator<AugmentedReturn const*>::visitInsertValueInst(llvm::InsertValueInst&) /workspaces/Enzyme/enzyme/Enzyme/AdjointGenerator.h:1581:31
#10 0x0000ffff806f59bc llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visitInsertValue(llvm::InsertValueInst&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:218:1
#11 0x0000ffff806e1cb0 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:218:1
#12 0x0000ffff806d3590 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction*) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:112:52
#13 0x0000ffff806ae724 EnzymeLogic::CreatePrimalAndGradient(ReverseCacheKey const&&, llvm::TargetLibraryInfo&, TypeAnalysis&, AugmentedReturn const*, bool, bool) (.localalias) /workspaces/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:3414:7
#14 0x0000ffff80728044 AdjointGenerator<AugmentedReturn const*>::visitCallInst(llvm::CallInst&) /workspaces/Enzyme/enzyme/Enzyme/AdjointGenerator.h:8919:56
#15 0x0000ffff80718130 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::delegateCallInst(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:300:3
#16 0x0000ffff806f5878 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visitCall(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#17 0x0000ffff806e1c20 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#18 0x0000ffff806d3590 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction*) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:112:52
#19 0x0000ffff806ae724 EnzymeLogic::CreatePrimalAndGradient(ReverseCacheKey const&&, llvm::TargetLibraryInfo&, TypeAnalysis&, AugmentedReturn const*, bool, bool) (.localalias) /workspaces/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:3414:7
#20 0x0000ffff80728044 AdjointGenerator<AugmentedReturn const*>::visitCallInst(llvm::CallInst&) /workspaces/Enzyme/enzyme/Enzyme/AdjointGenerator.h:8919:56
#21 0x0000ffff80718130 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::delegateCallInst(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:300:3
#22 0x0000ffff806f5878 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visitCall(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#23 0x0000ffff806e1c20 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#24 0x0000ffff806d3590 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction*) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:112:52
#25 0x0000ffff806ae724 EnzymeLogic::CreatePrimalAndGradient(ReverseCacheKey const&&, llvm::TargetLibraryInfo&, TypeAnalysis&, AugmentedReturn const*, bool, bool) (.localalias) /workspaces/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:3414:7
#26 0x0000ffff80728044 AdjointGenerator<AugmentedReturn const*>::visitCallInst(llvm::CallInst&) /workspaces/Enzyme/enzyme/Enzyme/AdjointGenerator.h:8919:56
#27 0x0000ffff80718130 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::delegateCallInst(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:300:3
#28 0x0000ffff806f5878 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visitCall(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#29 0x0000ffff806e1c20 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#30 0x0000ffff806d3590 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction*) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:112:52
#31 0x0000ffff806ae724 EnzymeLogic::CreatePrimalAndGradient(ReverseCacheKey const&&, llvm::TargetLibraryInfo&, TypeAnalysis&, AugmentedReturn const*, bool, bool) (.localalias) /workspaces/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:3414:7
#32 0x0000ffff80728044 AdjointGenerator<AugmentedReturn const*>::visitCallInst(llvm::CallInst&) /workspaces/Enzyme/enzyme/Enzyme/AdjointGenerator.h:8919:56
#33 0x0000ffff80718130 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::delegateCallInst(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:300:3
#34 0x0000ffff806f5878 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visitCall(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#35 0x0000ffff806e1c20 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#36 0x0000ffff806d3590 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction*) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:112:52
#37 0x0000ffff806ae724 EnzymeLogic::CreatePrimalAndGradient(ReverseCacheKey const&&, llvm::TargetLibraryInfo&, TypeAnalysis&, AugmentedReturn const*, bool, bool) (.localalias) /workspaces/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:3414:7
#38 0x0000ffff80728044 AdjointGenerator<AugmentedReturn const*>::visitCallInst(llvm::CallInst&) /workspaces/Enzyme/enzyme/Enzyme/AdjointGenerator.h:8919:56
#39 0x0000ffff80718130 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::delegateCallInst(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:300:3
#40 0x0000ffff806f5878 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visitCall(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#41 0x0000ffff806e1c20 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#42 0x0000ffff806d3590 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction*) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:112:52
#43 0x0000ffff806ae724 EnzymeLogic::CreatePrimalAndGradient(ReverseCacheKey const&&, llvm::TargetLibraryInfo&, TypeAnalysis&, AugmentedReturn const*, bool, bool) (.localalias) /workspaces/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:3414:7
#44 0x0000ffff80728044 AdjointGenerator<AugmentedReturn const*>::visitCallInst(llvm::CallInst&) /workspaces/Enzyme/enzyme/Enzyme/AdjointGenerator.h:8919:56
#45 0x0000ffff80718130 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::delegateCallInst(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:300:3
#46 0x0000ffff806f5878 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visitCall(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#47 0x0000ffff806e1c20 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#48 0x0000ffff806d3590 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction*) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:112:52
#49 0x0000ffff806ae724 EnzymeLogic::CreatePrimalAndGradient(ReverseCacheKey const&&, llvm::TargetLibraryInfo&, TypeAnalysis&, AugmentedReturn const*, bool, bool) (.localalias) /workspaces/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:3414:7
#50 0x0000ffff80728044 AdjointGenerator<AugmentedReturn const*>::visitCallInst(llvm::CallInst&) /workspaces/Enzyme/enzyme/Enzyme/AdjointGenerator.h:8919:56
#51 0x0000ffff80718130 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::delegateCallInst(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:300:3
#52 0x0000ffff806f5878 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visitCall(llvm::CallInst&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#53 0x0000ffff806e1c20 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction&) /usr/lib/llvm-12/include/llvm/IR/Instruction.def:209:1
#54 0x0000ffff806d3590 llvm::InstVisitor<AdjointGenerator<AugmentedReturn const*>, void>::visit(llvm::Instruction*) /usr/lib/llvm-12/include/llvm/IR/InstVisitor.h:112:52
#55 0x0000ffff806ae724 EnzymeLogic::CreatePrimalAndGradient(ReverseCacheKey const&&, llvm::TargetLibraryInfo&, TypeAnalysis&, AugmentedReturn const*, bool, bool) (.localalias) /workspaces/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:3414:7
#56 0x0000ffff80682abc (anonymous namespace)::Enzyme::HandleAutoDiff(llvm::CallInst*, llvm::TargetLibraryInfo&, bool, DerivativeMode, bool) /workspaces/Enzyme/enzyme/Enzyme/Enzyme.cpp:777:46
#57 0x0000ffff80686914 (anonymous namespace)::Enzyme::lowerEnzymeCalls(llvm::Function&, bool, bool&, std::set<llvm::Function*, std::less<llvm::Function*>, std::allocator<llvm::Function*> >&) /workspaces/Enzyme/enzyme/Enzyme/Enzyme.cpp:1485:35
#58 0x0000ffff806872b4 (anonymous namespace)::Enzyme::runOnModule(llvm::Module&) /workspaces/Enzyme/enzyme/Enzyme/Enzyme.cpp:1647:34
#59 0x0000ffff83c9106c llvm::legacy::PassManagerImpl::run(llvm::Module&) (/usr/lib/llvm-12/lib/libLLVM-12.so.1+0xe0f06c)
#60 0x000000000042e8e0 main (/usr/lib/llvm-12/bin/opt+0x42e8e0)
#61 0x0000ffff82a4d090 __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x24090)
#62 0x000000000041c07c _start (/usr/lib/llvm-12/bin/opt+0x41c07c)
/usr/lib/llvm-12/bin/lli: error: 'main' function not found in module.

--

also updated gist

tgymnich commented 2 years ago

380 leaves us with:

********************
********************
Failed Tests (7):
  Enzyme :: Integration/ReverseMode/cmplx.cpp <-- subdata missing
  Enzyme :: Integration/ReverseMode/integrateconst.cpp <-- could not deduce type of integer
  Enzyme :: Integration/ReverseMode/integrateexp.cpp <-- could not deduce type of integer
  Enzyme :: Integration/ReverseMode/simpleeigen-made-part.cpp <-- type results missing
  Enzyme :: Integration/ReverseMode/simpleeigen-made.cpp <-- type results missing
  Enzyme :: Integration/ReverseMode/simpleeigenstatic-made-odd.cpp  <-- type results missing
  Enzyme :: Integration/ReverseMode/simpleeigenstatic-made.cpp <-- type results missing

gist