Skip to content

[P1] Fix the bug and reduce the running time in resource aware task opt pass #296

@ShangkunLi

Description

@ShangkunLi

We have two things that urgently need to be done:

  1. We utilize the map-to-accelerator pass for virtual mapping during the optimization process. The architecture spec generated during the optimization process may trigger the assertions in Architecture.cpp, so we need to fix these bugs.

The assertions when we run the resource-aware task optimization pass look like:

[MapToAcceleratorPass] Using Mapping Mode: spatial-temporal                                                                                                                                                                          
mlir-neura-opt: /home/lucas/Project/dataflow/lib/NeuraDialect/Architecture/Architecture.cpp:604: mlir::neura::Tile* mlir::neura::Architecture::getTile(int, int): Assertion `it != coord_to_tile_.end() && "Tile with given coordinat
es not found"' failed.                                                                                                                                                                                                               
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.                                                                                                                          
Stack dump:                                                                                                                                                                                                                          
0.      Program arguments: /home/lucas/Project/dataflow/build/tools/mlir-neura-opt/mlir-neura-opt /home/lucas/Project/dataflow/test/multi-cgra/taskflow/resnet/Output/simple_resnet_tosa.mlir.tmp.stream.mlir --affine-loop-tree-seri
alization --affine-loop-perfection --construct-hyperblock-from-task --classify-counters --convert-taskflow-to-neura --lower-affine --convert-scf-to-cf --convert-cf-to-llvm --assign-accelerator --lower-memref-to-neura --lower-arit
h-to-neura --lower-builtin-to-neura --lower-llvm-to-neura --promote-input-arg-to-const --fold-constant --canonicalize-return --canonicalize-live-in --leverage-predicated-value --transform-ctrl-to-data-flow --fold-constant --resou
rce-aware-task-optimization=balance-skip-mapper=false -o /home/lucas/Project/dataflow/test/multi-cgra/taskflow/resnet/Output/simple_resnet_tosa.mlir.tmp.resopt.mlir                                                                 
 #0 0x00005c554753b8f7 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/lucas/Project/dataflow/build/tools/mlir-neura-opt/mlir-neura-opt+0x35228f7)                                                                        
 #1 0x00005c55475393de llvm::sys::RunSignalHandlers() (/home/lucas/Project/dataflow/build/tools/mlir-neura-opt/mlir-neura-opt+0x35203de)                                                                                             
 #2 0x00005c554753bfaa SignalHandler(int) Signals.cpp:0:0                                                                                                                                                                            
 #3 0x0000718a1d242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)                                                                                                                                                                     
 #4 0x0000718a1d2969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76                                                                                                                                                     
 #5 0x0000718a1d2969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10                                                                                                                                                           
 #6 0x0000718a1d2969fc pthread_kill ./nptl/pthread_kill.c:89:10                                                                                                                                                                      
 #7 0x0000718a1d242476 gsignal ./signal/../sysdeps/posix/raise.c:27:6                                                                                                                                                                
 #8 0x0000718a1d2287f3 abort ./stdlib/abort.c:81:7                                                                                                                                                                                   
 #9 0x0000718a1d22871b _nl_load_domain ./intl/loadmsgcat.c:1177:9                                                                                                                                                                    
#10 0x0000718a1d239e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)                                                                                                                                                                     
#11 0x00005c5545f6e940 mlir::neura::Architecture::getTile(int, int) /home/lucas/Project/dataflow/lib/NeuraDialect/Architecture/Architecture.cpp:605:12                                                                               
#12 0x00005c5545f6d288 mlir::neura::Architecture::applyTileOverrides(std::vector<mlir::neura::TileOverride, std::allocator<mlir::neura::TileOverride>> const&) /home/lucas/Project/dataflow/lib/NeuraDialect/Architecture/Architectur
e.cpp:317:21                                                                              
  1. The running time is too long for even a small application; this is not acceptable. The problem might be introducing too many low-level mapping processes, we need to somehow avoid this.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingenhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions