Skip to content

enzyme crash for O1, O2, O3 but fine for O0 #2506

@superustc

Description

@superustc
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<llvm::SelectInst*, 4> DiffeGradientUtils::addToDiffe(llvm::Value*, llvm::Value*, llvm::IRBuilder<>&, llvm::Type*, unsigned int, unsigned int, llvm::ArrayRef<llvm::Value*>, 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.    <eof> 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::ConstantFolder, llvm::IRBuilderDefaultInserter>&, llvm::Type*, unsigned int, unsigned int, llvm::ArrayRef<llvm::Value*>, 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<bool, std::allocator<bool>> 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<llvm::Value*>&, std::map<int, llvm::Type*, std::less<int>, std::allocator<std::pair<int const, llvm::Type*>>> const&, std::vector<DIFFE_TYPE, std::allocator<DIFFE_TYPE>> const&, llvm::Function*, DerivativeMode, (anonymous namespace)::EnzymeBase::Options&, bool, llvm::SmallVectorImpl<llvm::CallInst*>&) Enzyme.cpp:0:0
#15 0x000014c6875fd431 (anonymous namespace)::EnzymeBase::HandleAutoDiffArguments(llvm::CallInst*, DerivativeMode, bool, llvm::SmallVectorImpl<llvm::CallInst*>&) Enzyme.cpp:0:0
#16 0x000014c687605df1 (anonymous namespace)::EnzymeBase::lowerEnzymeCalls(llvm::Function&, std::set<llvm::Function*, std::less<llvm::Function*>, std::allocator<llvm::Function*>>&) Enzyme.cpp:0:0
#17 0x000014c687609102 (anonymous namespace)::EnzymeBase::run(llvm::Module&) Enzyme.cpp:0:0
#18 0x000014c68761bf50 llvm::detail::PassModel<llvm::Module, EnzymeNewPM, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/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<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/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<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, 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<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, 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*>, 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<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#30 0x000014c68f9e82f9 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#31 0x000014c6894601b3 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/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::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, 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<std::pair<int, 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+0x27921ad)
#35 0x000014c68f9c41fc clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/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:
********************

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions