提交 fdb93264 authored 作者: Roy Xue's avatar Roy Xue

Merge pull request #3 from nouiz/GSoC2014_part2

Fix max memory counter.
...@@ -655,20 +655,20 @@ class ProfileStats(object): ...@@ -655,20 +655,20 @@ class ProfileStats(object):
5. node_memory_saved_by_inplace 5. node_memory_saved_by_inplace
The sum of memory saved by reusing the input instead of The sum of memory saved by reusing the input instead of
new allocation new allocation
""" """
node_memory_size = 0 node_memory_size = 0
running_memory_size = 0 running_memory_size = 0
running_max_memory_size = 0 running_max_memory_size = 0
node_memory_saved_by_view = 0 node_memory_saved_by_view = 0
node_memory_saved_by_inplace = 0 node_memory_saved_by_inplace = 0
for node in order: for node in order:
val = nodes_mem[node] val = nodes_mem[node]
dmap = getattr(node.op, 'destroy_map', None) dmap = getattr(node.op, 'destroy_map', None)
vmap = getattr(node.op, 'view_map', None) vmap = getattr(node.op, 'view_map', None)
idx = 0
for idx, v in enumerate(val): for v in val:
# TODO check the op returned a view # TODO check the op returned a view
if dmap and idx in dmap: if dmap and idx in dmap:
node_memory_saved_by_inplace += v node_memory_saved_by_inplace += v
...@@ -678,13 +678,14 @@ class ProfileStats(object): ...@@ -678,13 +678,14 @@ class ProfileStats(object):
elif not isinstance(v, str): elif not isinstance(v, str):
node_memory_size += v node_memory_size += v
running_memory_size += v running_memory_size += v
if running_memory_size > running_max_memory_size: idx += 1
running_max_memory_size = running_memory_size if running_memory_size > running_max_memory_size:
old_storage = thunk_old_storage[order.index(node)] running_max_memory_size = running_memory_size
for old_s in old_storage: old_storage = thunk_old_storage[order.index(node)]
old_v = var_mem[node.inputs[old_s]] for old_s in old_storage:
if not isinstance(old_v, str): old_v = var_mem[node.inputs[old_s]]
running_memory_size -= old_v if not isinstance(old_v, str):
running_memory_size -= old_v
return [node_memory_size, running_memory_size, running_max_memory_size, node_memory_saved_by_inplace, node_memory_saved_by_view] return [node_memory_size, running_memory_size, running_max_memory_size, node_memory_saved_by_inplace, node_memory_saved_by_view]
...@@ -803,7 +804,7 @@ class ProfileStats(object): ...@@ -803,7 +804,7 @@ class ProfileStats(object):
min_order = [] min_order = []
# for count memory # for count memory
# I tested 2 way # I tested 2 way
# 1. create a new simple method # 1. create a new simple method
# 2. using sum(nodes_mem[v[0]]) # 2. using sum(nodes_mem[v[0]])
def count_min_memory(order, thunk_old_storage, nodes_mem): def count_min_memory(order, thunk_old_storage, nodes_mem):
...@@ -815,17 +816,19 @@ class ProfileStats(object): ...@@ -815,17 +816,19 @@ class ProfileStats(object):
dmap = getattr(node.op, 'destroy_map', None) dmap = getattr(node.op, 'destroy_map', None)
vmap = getattr(node.op, 'view_map', None) vmap = getattr(node.op, 'view_map', None)
for idx, v in enumerate(val): idx = o
for v in val:
# TODO check the op returned a view # TODO check the op returned a view
if idx not in dmap and idx not in vmap and not isinstance(v, str): if idx not in dmap and idx not in vmap and not isinstance(v, str):
running_memory_size += v running_memory_size += v
if running_memory_size > running_max_memory_size: idx += 1
running_max_memory_size = running_memory_size if running_memory_size > running_max_memory_size:
old_storage = thunk_old_storage[order.index(node)] running_max_memory_size = running_memory_size
for old_s in old_storage: old_storage = thunk_old_storage[order.index(node)]
old_v = var_mem[node.inputs[old_s]] for old_s in old_storage:
if not isinstance(old_v, str): old_v = var_mem[node.inputs[old_s]]
running_memory_size -= old_v if not isinstance(old_v, str):
running_memory_size -= old_v
return running_max_memory_size return running_max_memory_size
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论