You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by GitBox <gi...@apache.org> on 2020/05/01 17:19:51 UTC
[GitHub] [incubator-tvm] weberlo commented on a change in pull request #5417: [RUNTIME][uTVM] AutoTVM + uTVM for Cortex-M7
weberlo commented on a change in pull request #5417:
URL: https://github.com/apache/incubator-tvm/pull/5417#discussion_r418642066
##########
File path: python/tvm/micro/base.py
##########
@@ -133,44 +152,91 @@ def __exit__(self, exc_type, exc_value, exc_traceback):
self._exit()
-def create_micro_mod(c_mod, dev_config):
+def _calc_max_workspace_usage(src):
+ # TODO factor in alignment to the calculation (alloc sizes will be aligned up to the word size)
+ alloc_re = re.compile(
+ r'.*\* ?(.+) = (\(.+\))? TVMBackendAllocWorkspace\(.+, .+, \(uint64_t\)(.+), .+, .+\).*')
+ free_re = re.compile(r'.*if \(TVMBackendFreeWorkspace\(.+, .+, (\(void\*\))? (.+)\) != 0\) {.*')
+ max_usage = 0
+ alloc_map = {}
+ for line in src.split('\n'):
+ if line.strip().startswith('//'):
+ continue
+ match = alloc_re.match(line)
+ if match is not None:
+ alloc_map[match.group(1)] = int(match.group(3))
+ max_usage = max(max_usage, sum(alloc_map.values()))
+ else:
+ match = free_re.match(line)
+ if match is not None:
+ print(alloc_map)
+ del alloc_map[match.group(2)]
+ return max_usage
+
+
Review comment:
for posterity, i think it would crash if `free_re` matches, but `alloc_re` doesn't, so it would attempt to delete an entry in the alloc_map that isn't there. C that's coming from codegen should never have this problem, but I remember running into it when writing wrappers for CMSIS-NN by hand.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org