move pre-execution of debugger from rungraph to build/compile graph
support partial mem reuse for a scope of nodes
set default mem reuse to be true for debugger
remove some redundant lines
remove redundant code and fix a bug for supporting partial no mem reuse a scope of nodes
resolve CI errors
Solve CI errors
solve cpplint errors
solve CI build error
manually fix the CI compile UT error
Optimize code for mem reuse support
Debug optimization of debugger memory reuse
debug code for debugger memory reuse part2
address clang-format errors
Switch memory reuse on and off based on environment variable
Fix typo
Fix typo
Load watchpoint value only
fix bugs
Addressed comments from lupengcheng
fix typo
Fix typo
fix CI errors
refactor some code
fix typo
addressed comments from canadian teamates
remove locking from TensorLoader
fix CI errors
add lock to tensor_loader
fix rebase-to-master conflict
fix rebase conflicts
fix rebase conflicts part 2
fix rebase conflicts part 3
- It provides a unified style to express graph and kernel for user.
- It provides a unified IR to represent graph and kernel for developer.
- It breaks the boundary between graph and kernel.
- It provides more opportunities to do compile optimization.
* add infer_value for common math ops
* convert constant bool tensor to bool value
* do not infer value when encounter 0 as division
for while condition, do not unrool if condition is a tensor
modify infer to get abstract value and attr value map together
support get attr in specialize
clone primitive when specialize if attribute is not the same with
infered attribute
To handle 'break' and 'continue' statement, a loop context is pushed
to a stack before we parse the loop body, and pop it after body parsed.
When a 'break', 'continue' statement is encountered, we retrieve current
loop contex from the stack, and let the current block jump to the end
block or header block;
For 'break' statement, we added an extra 'end_block' follow the 'after_block',
because 'after_block' is called from a ContionalJump in 'header_block', it can
not be set as jump target from other place. to support 'break', we let loop
body jump to the 'end_block' at the 'break' point. and 'after_block'
maybe a good place to handle loop 'else' clause in the future.
Handle 'pass' is simple, just bypass it when doing parse.