enzyme crash for O1, O2, O3 but fine for O0
- Dominant language
- LLVM
- Stars
- 1.7k
- Forks
- 188
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 26
Description
```
cd /home/mixu/dev/vNNN/Cromwell2/Output/3d_release_cpu &&
/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/clang++ ... -O3 -DNDEBUG -std=gnu++17 -fPIC --target=x86_64-pc-linux-gnu --gcc-toolchain=/home/mixu/dev/vNNN/FBU_Dependencies/thirdparty/compilers/gcc/linx64/bin/.. -std=c++17 -stdlib=libstdc++ -Wno-deprecated-builtins -Wno-unknown-warning-option -w -Wno-missing-template-arg-list-after-template-kw -fplugin="/home/mixu/software/Enzyme/enzyme/build-18/Enzyme/ClangEnzyme-18.so" -mllvm -enzyme-loose-types=1 -mllvm -enzyme-detect-readthrow=0 -MD -MT MaterialIdealGas.cxx.o -MF MaterialIdealGas.cxx.o.d -o MaterialIdealGas.cxx.o -c MaterialIdealGas.cxx -O2
```
It crashes with
```
VT: <2 x float> idxs:{i32 0,} start=4 size=4 storeSize=8 val= %133 = tail call { <2 x float>, float } @_ZN8Cromwell9Materials7Physics16StagStaticWorkerINS1_18CPmethod_piecepolyEE21GetTstaticAndVelocityEfffffjPNS_7Buffers15TypedBufferViewIKfEE(ptr noundef nonnull align 8 dereferenceable(16) %132, float noundef %119, float noundef %131, float noundef %69, float noundef %126, float noundef %73, i32 noundef %8, ptr noundef %81) #47
[31mclang++: /home/mixu/software/Enzyme/enzyme/Enzyme/DiffeGradientUtils.cpp:352: llvm::SmallVector DiffeGradientUtils::addToDiffe(llvm::Value*, llvm::Value*, llvm::IRBuilder<>&, llvm::Type*, unsigned int, unsigned int, llvm::ArrayRef, llvm::Value*, size_t): Assertion `0 && "unhandled accumulate with partial sizes"' failed.[0m
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/clang++ -DBOOST_ALL_NO_LIB -DBOOST_NO_AUTO_PTR -DBOOST_STACKTRACE_ADDR2LINE_LOCATION=\"/usr/bin/addr2line\" -DBOOST_STACKTRACE_USE_ADDR2LINE -DBOOST_STACKTRACE_USE_BACKTRACE -DBOOST_STACKTRACE_USE_NOOP -DCONAN_DVS -DCROMWELL_MULTIPORT_AVAILABLE -DCROMWELL_USE_ADJOINT -DCROMWELL_USE_DVS_WRITER -DCROMWELL_USE_METIS -DCromwell_Materials_EXPORTS -D_MaterialsApi -I/home/mixu/dev/vNNN/Cromwell2/Output/3d_release_cpu/generated -I/home/mixu/dev/vNNN/Cromwell2/Cromwell/CFD/Materials/include -I/home/mixu/dev/vNNN/Cromwell2/Cromwell/CFD/CommonModel/include -I/home/mixu/dev/vNNN/Cromwell2/Cromwell/Core/include -I/home/mixu/dev/vNNN/Cromwell2/Cromwell/GeometryTools/include -I/home/mixu/dev/vNNN/Cromwell2/Cromwell/CFD/Solvers/include -I/home/mixu/dev/vNNN/Cromwell2/Cromwell/CFD/Mesh/include -isystem /home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/boost/1.71.0/_/_/package/cfef62e446e1bb07894de4523f2649afdfa94524/include -isystem /home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/bzip2/1.0.8/_/_/package/b27e2b40bcb70be2e7d6f0e0c6e43e35c530f8d3/include -isystem /home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/zlib/1.3.1/_/_/package/d50a0d523d98c15bb147b18fa7d203887c38be8b/include -isystem /home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/ansys.fluids.mpi_wrapper/25.2.20250425/_/_/package/7dfe1fba3a3f4b148e97ec0d94421bb9c475a27b/mpi_wrapper/include -isystem /home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/ansys.fluids.mpi_wrapper/25.2.20250425/_/_/package/7dfe1fba3a3f4b148e97ec0d94421bb9c475a27b/mpi_wrapper/src -isystem /home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/libbacktrace/cci.20210118/_/_/package/d50a0d523d98c15bb147b18fa7d203887c38be8b/include -O3 -DNDEBUG -std=gnu++17 -fPIC --target=x86_64-pc-linux-gnu --gcc-toolchain=/home/mixu/dev/vNNN/FBU_Dependencies/thirdparty/compilers/gcc/linx64/bin/.. -std=c++17 -stdlib=libstdc++ -Wno-deprecated-builtins -Wno-unknown-warning-option -w -Wno-missing-template-arg-list-after-template-kw -fplugin=/home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/enzyme/0.0.203/thirdparty/stable/package/a759b65ce0766f4b1804109cdb2d40af67ab2867/lib/libClangEnzyme.so -mllvm -enzyme-loose-types=1 -mllvm -enzyme-detect-readthrow=0 -MD -MT CFD/Materials/CMakeFiles/Cromwell.Materials.dir/src/BoundaryConditionUDFLibrary/MaterialIdealGas.cxx.o -MF CFD/Materials/CMakeFiles/Cromwell.Materials.dir/src/BoundaryConditionUDFLibrary/MaterialIdealGas.cxx.o.d -o CFD/Materials/CMakeFiles/Cromwell.Materials.dir/src/BoundaryConditionUDFLibrary/MaterialIdealGas.cxx.o -c /home/mixu/dev/vNNN/Cromwell2/Cromwell/CFD/Materials/src/BoundaryConditionUDFLibrary/MaterialIdealGas.cxx
1. parser at end of file
2. Optimizer
#0 0x000014c68955ee2b llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libLLVM.so.18.1+0x802e2b)
#1 0x000014c68955cc54 llvm::sys::CleanupOnSignal(unsigned long) (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libLLVM.so.18.1+0x800c54)
#2 0x000014c68945fd78 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x000014c6912a4d20 __restore_rt (/lib64/libpthread.so.0+0x12d20)
#4 0x000014c68843452f raise (/lib64/libc.so.6+0x4e52f)
#5 0x000014c688407e65 abort (/lib64/libc.so.6+0x21e65)
#6 0x000014c688407d39 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21d39)
#7 0x000014c68842ce86 (/lib64/libc.so.6+0x46e86)
#8 0x000014c6875a22aa DiffeGradientUtils::addToDiffe(llvm::Value*, llvm::Value*, llvm::IRBuilder&, llvm::Type*, unsigned int, unsigned int, llvm::ArrayRef, llvm::Value*, unsigned long) (/home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/enzyme/0.0.203/thirdparty/stable/package/a759b65ce0766f4b1804109cdb2d40af67ab2867/lib/libClangEnzyme.so+0x3392aa)
#9 0x000014c68768cbdc AdjointGenerator::visitExtractValueInst(llvm::ExtractValueInst&) (/home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/enzyme/0.0.203/thirdparty/stable/package/a759b65ce0766f4b1804109cdb2d40af67ab2867/lib/libClangEnzyme.so+0x423bdc)
#10 0x000014c687654943 EnzymeLogic::CreatePrimalAndGradient(RequestContext, ReverseCacheKey const&&, TypeAnalysis&, AugmentedReturn const*, bool) (/home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/enzyme/0.0.203/thirdparty/stable/package/a759b65ce0766f4b1804109cdb2d40af67ab2867/lib/libClangEnzyme.so+0x3eb943)
#11 0x000014c6876951d3 AdjointGenerator::recursivelyHandleSubfunction(llvm::CallInst&, llvm::Function*, bool, std::vector> const&, bool, DIFFE_TYPE, bool) (/home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/enzyme/0.0.203/thirdparty/stable/package/a759b65ce0766f4b1804109cdb2d40af67ab2867/lib/libClangEnzyme.so+0x42c1d3)
#12 0x000014c687699873 AdjointGenerator::visitCallInst(llvm::CallInst&) (/home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/enzyme/0.0.203/thirdparty/stable/package/a759b65ce0766f4b1804109cdb2d40af67ab2867/lib/libClangEnzyme.so+0x430873)
#13 0x000014c687654943 EnzymeLogic::CreatePrimalAndGradient(RequestContext, ReverseCacheKey const&&, TypeAnalysis&, AugmentedReturn const*, bool) (/home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/enzyme/0.0.203/thirdparty/stable/package/a759b65ce0766f4b1804109cdb2d40af67ab2867/lib/libClangEnzyme.so+0x3eb943)
#14 0x000014c6875faec0 (anonymous namespace)::EnzymeBase::HandleAutoDiff(llvm::Instruction*, unsigned int, llvm::Value*, llvm::Type*, llvm::SmallVectorImpl&, std::map, std::allocator>> const&, std::vector> const&, llvm::Function*, DerivativeMode, (anonymous namespace)::EnzymeBase::Options&, bool, llvm::SmallVectorImpl&) Enzyme.cpp:0:0
#15 0x000014c6875fd431 (anonymous namespace)::EnzymeBase::HandleAutoDiffArguments(llvm::CallInst*, DerivativeMode, bool, llvm::SmallVectorImpl&) Enzyme.cpp:0:0
#16 0x000014c687605df1 (anonymous namespace)::EnzymeBase::lowerEnzymeCalls(llvm::Function&, std::set, std::allocator>&) Enzyme.cpp:0:0
#17 0x000014c687609102 (anonymous namespace)::EnzymeBase::run(llvm::Module&) Enzyme.cpp:0:0
#18 0x000014c68761bf50 llvm::detail::PassModel>::run(llvm::Module&, llvm::AnalysisManager&) (/home/mixu/dev/vNNN/Cromwell2/Cromwell/Build/conan/.conan/data/enzyme/0.0.203/thirdparty/stable/package/a759b65ce0766f4b1804109cdb2d40af67ab2867/lib/libClangEnzyme.so+0x3b2f50)
#19 0x000014c68973fea3 llvm::PassManager>::run(llvm::Module&, llvm::AnalysisManager&) (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libLLVM.so.18.1+0x9e3ea3)
#20 0x000014c68f021d3c (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr>&, std::unique_ptr>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#21 0x000014c68f025140 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr, std::unique_ptr>, clang::BackendConsumer*) (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libclang-cpp.so.18.1+0x1e05140)
#22 0x000014c68f491769 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libclang-cpp.so.18.1+0x2271769)
#23 0x000014c68fe59e48 clang::MultiplexConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libclang-cpp.so.18.1+0x2c39e48)
#24 0x000014c68dd391a9 clang::ParseAST(clang::Sema&, bool, bool) (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libclang-cpp.so.18.1+0xb191a9)
#25 0x000014c68fe1bd61 clang::FrontendAction::Execute() (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libclang-cpp.so.18.1+0x2bfbd61)
#26 0x000014c68fd99dcb clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libclang-cpp.so.18.1+0x2b79dcb)
#27 0x000014c68fea8ab7 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libclang-cpp.so.18.1+0x2c88ab7)
#28 0x00000000004139c5 cc1_main(llvm::ArrayRef, char const*, void*) (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/clang+++0x4139c5)
#29 0x000000000040c727 ExecuteCC1Tool(llvm::SmallVectorImpl&, llvm::ToolContext const&) driver.cpp:0:0
#30 0x000014c68f9e82f9 void llvm::function_ref::callback_fn>, std::__cxx11::basic_string, std::allocator>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#31 0x000014c6894601b3 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref) (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libLLVM.so.18.1+0x7041b3)
#32 0x000014c68f9e8689 clang::driver::CC1Command::Execute(llvm::ArrayRef>, std::__cxx11::basic_string, std::allocator>*, bool*) const (.part.0) Job.cpp:0:0
#33 0x000014c68f9b1725 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libclang-cpp.so.18.1+0x2791725)
#34 0x000014c68f9b21ad clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl>&, bool) const (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libclang-cpp.so.18.1+0x27921ad)
#35 0x000014c68f9c41fc clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl>&) (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/../lib/libclang-cpp.so.18.1+0x27a41fc)
#36 0x000000000041127d clang_main(int, char**, llvm::ToolContext const&) (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/clang+++0x41127d)
#37 0x000000000040bbd3 main (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/clang+++0x40bbd3)
#38 0x000014c6884207e5 __libc_start_main (/lib64/libc.so.6+0x3a7e5)
#39 0x000000000040bc1e _start (/home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/clang+++0x40bc1e)
[31mclang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)[0m
clang version 18.1.8
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin
clang++: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++: note: diagnostic msg: /tmp/MaterialIdealGas-a072b9.cpp
clang++: note: diagnostic msg: /tmp/MaterialIdealGas-a072b9.sh
clang++: note: diagnostic msg:
********************
```
Contributor guide
Research direction
Reproduce the crash with the provided clang++ command, comparing the O0 and optimized builds of MaterialIdealGas.cxx. Then inspect Enzyme's DiffeGradientUtils.cpp around addToDiffe and the partial-size accumulation assertion; done means the reported optimized compilation no longer aborts while the existing behavior remains intact.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100