Open tafk7 opened 6 months ago
Follow up, attempting to run scalehls-opt on the resnet18 sample, I get this error:
(torch-mlir) user@system:~/ScaleHLS-HIDA/samples/pytorch/resnet18$ scalehls-opt resnet18.mlir \
> -scaleflow-pytorch-pipeline="top-func=forward loop-tile-size=8 loop-unroll-factor=4" \
> | scalehls-translate -scalehls-emit-hlscpp > resnet18.cpp
scalehls-opt: /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/include/llvm/ADT/SmallVector.h:303: reference llvm::SmallVectorTemplateCommon<std::tuple<long, long, bool, long>>::front() [T = std::tuple<long, long, bool, long>]: Assertion `!empty()' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: scalehls-opt resnet18.mlir "-scaleflow-pytorch-pipeline=top-func=forward loop-tile-size=8 loop-unroll-factor=4"
#0 0x0000555c9d1b61ea llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/lib/Support/Unix/Signals.inc:569:11
#1 0x0000555c9d1b639b PrintStackTraceSignalHandler(void*) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/lib/Support/Unix/Signals.inc:636:1
#2 0x0000555c9d1b4a16 llvm::sys::RunSignalHandlers() /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/lib/Support/Signals.cpp:104:5
#3 0x0000555c9d1b6a85 SignalHandler(int) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
#4 0x00007f7256242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#5 0x00007f72562969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#6 0x00007f7256242476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#7 0x00007f72562287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#8 0x00007f725622871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#9 0x00007f7256239e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#10 0x0000555c9c104c7c llvm::SmallVectorTemplateCommon<std::tuple<long, long, bool, long>, void>::front() /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/include/llvm/ADT/SmallVector.h:0:5
#11 0x0000555c9c102632 getBufferIndexDepthsAndStrides(mlir::scalehls::hls::NodeOp, mlir::Value) /home/user/ScaleHLS-HIDA/lib/Dialect/HLS/Analysis.cpp:173:45
#12 0x0000555c9c101924 mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp)::$_0::operator()(mlir::scalehls::hls::BufferLikeInterface) const /home/user/ScaleHLS-HIDA/lib/Dialect/HLS/Analysis.cpp:221:15
#13 0x0000555c9c1016a3 std::enable_if<!llvm::is_one_of<mlir::scalehls::hls::BufferLikeInterface, mlir::Operation*, mlir::Region*, mlir::Block*>::value && std::is_same<mlir::WalkResult, mlir::WalkResult>::value, mlir::WalkResult>::type mlir::detail::walk<(mlir::WalkOrder)1, mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp)::$_0, mlir::scalehls::hls::BufferLikeInterface, mlir::WalkResult>(mlir::Operation*, mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp)::$_0&&)::'lambda'(mlir::Operation*)::operator()(mlir::Operation*) const /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/../mlir/include/mlir/IR/Visitors.h:230:14
#14 0x0000555c9c10162d mlir::WalkResult llvm::function_ref<mlir::WalkResult (mlir::Operation*)>::callback_fn<std::enable_if<!llvm::is_one_of<mlir::scalehls::hls::BufferLikeInterface, mlir::Operation*, mlir::Region*, mlir::Block*>::value && std::is_same<mlir::WalkResult, mlir::WalkResult>::value, mlir::WalkResult>::type mlir::detail::walk<(mlir::WalkOrder)1, mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp)::$_0, mlir::scalehls::hls::BufferLikeInterface, mlir::WalkResult>(mlir::Operation*, mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp)::$_0&&)::'lambda'(mlir::Operation*)>(long, mlir::Operation*) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#15 0x0000555c9d01e1d1 llvm::function_ref<mlir::WalkResult (mlir::Operation*)>::operator()(mlir::Operation*) const /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#16 0x0000555c9d01de20 mlir::detail::walk(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/IR/Visitors.cpp:181:12
#17 0x0000555c9d01dd9e mlir::detail::walk(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/IR/Visitors.cpp:174:13
#18 0x0000555c9d01dd9e mlir::detail::walk(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/IR/Visitors.cpp:174:13
#19 0x0000555c9c1015ca std::enable_if<!llvm::is_one_of<mlir::scalehls::hls::BufferLikeInterface, mlir::Operation*, mlir::Region*, mlir::Block*>::value && std::is_same<mlir::WalkResult, mlir::WalkResult>::value, mlir::WalkResult>::type mlir::detail::walk<(mlir::WalkOrder)1, mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp)::$_0, mlir::scalehls::hls::BufferLikeInterface, mlir::WalkResult>(mlir::Operation*, mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp)::$_0&&) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/../mlir/include/mlir/IR/Visitors.h:233:10
#20 0x0000555c9c10156d std::enable_if<llvm::function_traits<std::decay<mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp)::$_0>::type>::num_args == 1, mlir::WalkResult>::type mlir::Operation::walk<(mlir::WalkOrder)1, mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp)::$_0, mlir::WalkResult>(mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp)::$_0&&) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/../mlir/include/mlir/IR/Operation.h:575:12
#21 0x0000555c9c1012f0 std::enable_if<llvm::function_traits<std::decay<mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp)::$_0>::type>::num_args == 1, mlir::WalkResult>::type mlir::OpState::walk<(mlir::WalkOrder)1, mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp)::$_0, mlir::WalkResult>(mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp)::$_0&&) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/../mlir/include/mlir/IR/OpDefinition.h:153:19
#22 0x0000555c9c1012c4 mlir::scalehls::CorrelationAnalysis::CorrelationAnalysis(mlir::func::FuncOp) /home/user/ScaleHLS-HIDA/lib/Dialect/HLS/Analysis.cpp:206:8
#23 0x0000555c9c0f2b4c (anonymous namespace)::ParallelizeDataflowNode::applyCorrelationAwareUnroll(mlir::func::FuncOp) /home/user/ScaleHLS-HIDA/lib/Transforms/Dataflow/ParallelizeDataflowNode.cpp:198:46
#24 0x0000555c9c0f2707 (anonymous namespace)::ParallelizeDataflowNode::runOnOperation() /home/user/ScaleHLS-HIDA/lib/Transforms/Dataflow/ParallelizeDataflowNode.cpp:325:7
#25 0x0000555c9cd17dca mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Pass/Pass.cpp:462:21
#26 0x0000555c9cd183a4 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Pass/Pass.cpp:525:16
#27 0x0000555c9cd1d4a5 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Pass/Pass.cpp:745:36
#28 0x0000555c9cd1d129 mlir::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/include/mlir/IR/Threading.h:46:18
#29 0x0000555c9cd195eb mlir::LogicalResult mlir::failableParallelForEach<std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>&, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&>(mlir::MLIRContext*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>&, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/include/mlir/IR/Threading.h:92:10
#30 0x0000555c9cd18ef8 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Pass/Pass.cpp:755:14
#31 0x0000555c9cd18057 mlir::detail::OpToOpPassAdaptor::runOnOperation(bool) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Pass/Pass.cpp:646:5
#32 0x0000555c9cd17dbb mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Pass/Pass.cpp:459:5
#33 0x0000555c9cd183a4 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Pass/Pass.cpp:525:16
#34 0x0000555c9cd19bb8 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Pass/Pass.cpp:828:10
#35 0x0000555c9cd19aef mlir::PassManager::run(mlir::Operation*) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Pass/Pass.cpp:808:60
#36 0x0000555c9bfcdff2 performActions(llvm::raw_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:91:17
#37 0x0000555c9bfcdc58 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:139:12
#38 0x0000555c9bfcda39 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:181:12
#39 0x0000555c9bfcd946 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#40 0x0000555c9d0406f2 llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const /home/user/ScaleHLS-HIDA/polygeist/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#41 0x0000555c9d03fd0d mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Support/ToolUtilities.cpp:28:12
#42 0x0000555c9bfcc9ca mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:186:10
#43 0x0000555c9bfccb63 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool, bool) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:209:10
#44 0x0000555c9bfcd76f mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) /home/user/ScaleHLS-HIDA/polygeist/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:306:14
#45 0x0000555c99b82dbc main /home/user/ScaleHLS-HIDA/tools/scalehls-opt/scalehls-opt.cpp:16:23
#46 0x00007f7256229d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#47 0x00007f7256229e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#48 0x0000555c99b82c85 _start (/home/user/ScaleHLS-HIDA/build/bin/scalehls-opt+0x1d20c85)
I got through the whole build (after quite a number of failures), but it now seems that I likely need to use a version different than Python3.11... once I built everything, installed torch-mlir in the venv, etc., I ran in to a segmentation fault after running command:
$ python3 resnet18.py > resnet18.mlir
I was using python3.11 and it seems everything went well until this last step. I'm going to try python3.8 tomorrow. Note I am unaffiliated with scalehls...
Also: for torch-mlir you can only use either python3.8 or python3.11 according to this github comment. I found this to be true (I compiled everything with 3.10 and it ended up complaining when I tried to install torch-mlir with pip).
I'm getting two unexpected failures when attempting to build scalehls:
Are these expected? Any guidance would be greatly appreciated.