aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/contrib/tfprof
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <gardener@tensorflow.org>2017-06-22 20:41:27 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2017-06-22 20:45:31 -0700
commit5af6b3e40161ead74390278053de81908bfd7674 (patch)
tree76c0a146ec3d6357a450c66c6e65bf97d32711ce /tensorflow/contrib/tfprof
parent5b40328addf40a221d3ef717e2ac707f64973dd9 (diff)
Make occurence (op run times and op definition) selectable
in all views to address the loop problem. When a node is in loop, its execution times are accumulated, its run times will increase. PiperOrigin-RevId: 159912429
Diffstat (limited to 'tensorflow/contrib/tfprof')
-rw-r--r--tensorflow/contrib/tfprof/python/tools/tfprof/internal/BUILD2
-rw-r--r--tensorflow/contrib/tfprof/python/tools/tfprof/internal/print_model_analysis_test.py41
-rw-r--r--tensorflow/contrib/tfprof/python/tools/tfprof/internal/run_metadata_test.py80
-rw-r--r--tensorflow/contrib/tfprof/python/tools/tfprof/model_analyzer_test.py16
4 files changed, 127 insertions, 12 deletions
diff --git a/tensorflow/contrib/tfprof/python/tools/tfprof/internal/BUILD b/tensorflow/contrib/tfprof/python/tools/tfprof/internal/BUILD
index e844046811..7abfb62214 100644
--- a/tensorflow/contrib/tfprof/python/tools/tfprof/internal/BUILD
+++ b/tensorflow/contrib/tfprof/python/tools/tfprof/internal/BUILD
@@ -65,6 +65,7 @@ cuda_py_test(
name = "run_metadata_test",
srcs = ["run_metadata_test.py"],
additional_deps = [
+ ":model_analyzer_testlib",
"//tensorflow/contrib/tfprof/python/tools/tfprof:model_analyzer",
"//tensorflow/python:array_ops",
"//tensorflow/python:client_testlib",
@@ -72,6 +73,7 @@ cuda_py_test(
"//tensorflow/python:random_ops",
"//tensorflow/tools/tfprof:protos_all_py",
],
+ tags = ["no_pip"],
)
# -----------------------------------------------------------------------------
diff --git a/tensorflow/contrib/tfprof/python/tools/tfprof/internal/print_model_analysis_test.py b/tensorflow/contrib/tfprof/python/tools/tfprof/internal/print_model_analysis_test.py
index 091fcdef88..84a37e087b 100644
--- a/tensorflow/contrib/tfprof/python/tools/tfprof/internal/print_model_analysis_test.py
+++ b/tensorflow/contrib/tfprof/python/tools/tfprof/internal/print_model_analysis_test.py
@@ -157,6 +157,9 @@ class PrintModelAnalysisTest(test.TestCase):
cpu_exec_micros: 0
total_accelerator_exec_micros: 0
total_cpu_exec_micros: 0
+ run_count: 0
+ total_run_count: 0
+ total_definition_count: 1
}
children {
name: "DW"
@@ -213,6 +216,9 @@ class PrintModelAnalysisTest(test.TestCase):
cpu_exec_micros: 0
total_accelerator_exec_micros: 0
total_cpu_exec_micros: 0
+ run_count: 0
+ total_run_count: 0
+ total_definition_count: 1
}
children {
name: "DW/Initializer"
@@ -249,6 +255,9 @@ class PrintModelAnalysisTest(test.TestCase):
cpu_exec_micros: 0
total_accelerator_exec_micros: 0
total_cpu_exec_micros: 0
+ run_count: 0
+ total_run_count: 0
+ total_definition_count: 1
}
children {
name: "DW/Initializer/random_normal/mean"
@@ -263,6 +272,9 @@ class PrintModelAnalysisTest(test.TestCase):
cpu_exec_micros: 0
total_accelerator_exec_micros: 0
total_cpu_exec_micros: 0
+ run_count: 0
+ total_run_count: 0
+ total_definition_count: 1
}
children {
name: "DW/Initializer/random_normal/mul"
@@ -302,6 +314,9 @@ class PrintModelAnalysisTest(test.TestCase):
cpu_exec_micros: 0
total_accelerator_exec_micros: 0
total_cpu_exec_micros: 0
+ run_count: 0
+ total_run_count: 0
+ total_definition_count: 1
}
children {
name: "DW/Initializer/random_normal/shape"
@@ -316,6 +331,9 @@ class PrintModelAnalysisTest(test.TestCase):
cpu_exec_micros: 0
total_accelerator_exec_micros: 0
total_cpu_exec_micros: 0
+ run_count: 0
+ total_run_count: 0
+ total_definition_count: 1
}
children {
name: "DW/Initializer/random_normal/stddev"
@@ -330,6 +348,9 @@ class PrintModelAnalysisTest(test.TestCase):
cpu_exec_micros: 0
total_accelerator_exec_micros: 0
total_cpu_exec_micros: 0
+ run_count: 0
+ total_run_count: 0
+ total_definition_count: 1
}
float_ops: 0
total_float_ops: 0
@@ -362,6 +383,9 @@ class PrintModelAnalysisTest(test.TestCase):
cpu_exec_micros: 0
total_accelerator_exec_micros: 0
total_cpu_exec_micros: 0
+ run_count: 0
+ total_run_count: 0
+ total_definition_count: 6
}
float_ops: 0
total_float_ops: 0
@@ -369,6 +393,9 @@ class PrintModelAnalysisTest(test.TestCase):
cpu_exec_micros: 0
total_accelerator_exec_micros: 0
total_cpu_exec_micros: 0
+ run_count: 0
+ total_run_count: 0
+ total_definition_count: 7
}
children {
name: "DW/read"
@@ -400,6 +427,9 @@ class PrintModelAnalysisTest(test.TestCase):
cpu_exec_micros: 0
total_accelerator_exec_micros: 0
total_cpu_exec_micros: 0
+ run_count: 0
+ total_run_count: 0
+ total_definition_count: 1
}
float_ops: 0
total_float_ops: 0
@@ -407,6 +437,9 @@ class PrintModelAnalysisTest(test.TestCase):
cpu_exec_micros: 0
total_accelerator_exec_micros: 0
total_cpu_exec_micros: 0
+ run_count: 0
+ total_run_count: 0
+ total_definition_count: 10
}
children {
name: "zeros"
@@ -421,13 +454,19 @@ class PrintModelAnalysisTest(test.TestCase):
cpu_exec_micros: 0
total_accelerator_exec_micros: 0
total_cpu_exec_micros: 0
+ run_count: 0
+ total_run_count: 0
+ total_definition_count: 1
}
float_ops: 0
total_float_ops: 0
accelerator_exec_micros: 0
cpu_exec_micros: 0
total_accelerator_exec_micros: 0
- total_cpu_exec_micros: 0""", expected_pb)
+ total_cpu_exec_micros: 0
+ run_count: 0
+ total_run_count: 0
+ total_definition_count: 13""", expected_pb)
self.assertEqual(expected_pb, tfprof_pb)
diff --git a/tensorflow/contrib/tfprof/python/tools/tfprof/internal/run_metadata_test.py b/tensorflow/contrib/tfprof/python/tools/tfprof/internal/run_metadata_test.py
index feb20dc0f4..9c59df3117 100644
--- a/tensorflow/contrib/tfprof/python/tools/tfprof/internal/run_metadata_test.py
+++ b/tensorflow/contrib/tfprof/python/tools/tfprof/internal/run_metadata_test.py
@@ -27,12 +27,13 @@ from tensorflow.python.client import session
from tensorflow.python.framework import ops
from tensorflow.python.ops import math_ops
from tensorflow.python.ops import random_ops
+from tensorflow.python.ops import variables
from tensorflow.python.platform import test
# pylint: disable=g-bad-import-order
# XXX: this depends on pywrap_tensorflow and must come later
from tensorflow.contrib.tfprof.python.tools.tfprof import model_analyzer
-
+from tensorflow.contrib.tfprof.python.tools.tfprof.internal import model_analyzer_testlib as lib
SIZE = 1300
@@ -68,15 +69,32 @@ def _run_model():
return tfprof_node, run_metadata
+def _run_loop_model():
+ with session.Session() as sess:
+ x = lib.BuildFullModel()
+
+ sess.run(variables.global_variables_initializer())
+ run_meta = config_pb2.RunMetadata()
+ _ = sess.run(x,
+ options=config_pb2.RunOptions(
+ trace_level=config_pb2.RunOptions.FULL_TRACE),
+ run_metadata=run_meta)
+
+ tfprof_node = model_analyzer.print_model_analysis(
+ sess.graph, run_meta,
+ tfprof_options=model_analyzer.PRINT_ALL_TIMING_MEMORY)
+ return tfprof_node, run_meta
+
+
class RunMetadataTest(test.TestCase):
def testGPU(self):
if not test.is_gpu_available():
return
+ ops.reset_default_graph()
with ops.device('/gpu:0'):
tfprof_node, run_meta = _run_model()
-
self.assertEqual(tfprof_node.children[0].name, 'MatMul')
self.assertGreater(tfprof_node.children[0].exec_micros, 10)
@@ -94,9 +112,9 @@ class RunMetadataTest(test.TestCase):
self.assertTrue(has_all_stream)
def testCPU(self):
+ ops.reset_default_graph()
with ops.device('/cpu:0'):
tfprof_node, run_meta = _run_model()
-
self.assertEqual(tfprof_node.children[0].name, 'MatMul')
self.assertGreater(tfprof_node.children[0].exec_micros, 10)
@@ -107,5 +125,61 @@ class RunMetadataTest(test.TestCase):
ret = _extract_node(run_meta, 'MatMul:MatMul')
self.assertEqual(len(ret), 0)
+ def testLoopCPU(self):
+ ops.reset_default_graph()
+ with ops.device('/cpu:0'):
+ tfprof_node, run_meta = _run_loop_model()
+ # The while-loop caused a node to appear 4 times in scheduling.
+ ret = _extract_node(run_meta,
+ 'rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul')
+ self.assertEqual(len(ret['/job:localhost/replica:0/task:0/cpu:0']), 4)
+
+ total_cpu_execs = 0
+ for node in ret['/job:localhost/replica:0/task:0/cpu:0']:
+ total_cpu_execs += node.op_end_rel_micros
+
+ mm_node = lib.SearchTFProfNode(
+ tfprof_node,
+ 'rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul')
+
+ self.assertEqual(mm_node.run_count, 4)
+ self.assertEqual(mm_node.cpu_exec_micros, total_cpu_execs)
+ self.assertEqual(mm_node.exec_micros, total_cpu_execs)
+
+ def testLoopGPU(self):
+ if not test.is_gpu_available():
+ return
+
+ ops.reset_default_graph()
+ with ops.device('/gpu:0'):
+ tfprof_node, run_meta = _run_loop_model()
+ # The while-loop caused a node to appear 4 times in scheduling.
+ ret = _extract_node(run_meta,
+ 'rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul')
+ self.assertEqual(len(ret['/job:localhost/replica:0/task:0/gpu:0']), 4)
+
+ total_cpu_execs = 0
+ for node in ret['/job:localhost/replica:0/task:0/gpu:0']:
+ total_cpu_execs += node.op_end_rel_micros
+
+ ret = _extract_node(
+ run_meta,
+ 'rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul:MatMul')
+ self.assertGreaterEqual(len(ret['/gpu:0/stream:all']), 4)
+
+ total_accelerator_execs = 0
+ for node in ret['/gpu:0/stream:all']:
+ total_accelerator_execs += node.op_end_rel_micros
+
+ mm_node = lib.SearchTFProfNode(
+ tfprof_node,
+ 'rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul')
+
+ self.assertEqual(mm_node.run_count, 4)
+ self.assertEqual(mm_node.accelerator_exec_micros, total_accelerator_execs)
+ self.assertEqual(mm_node.cpu_exec_micros, total_cpu_execs)
+ self.assertEqual(mm_node.exec_micros,
+ total_cpu_execs + total_accelerator_execs)
+
if __name__ == '__main__':
test.main()
diff --git a/tensorflow/contrib/tfprof/python/tools/tfprof/model_analyzer_test.py b/tensorflow/contrib/tfprof/python/tools/tfprof/model_analyzer_test.py
index ec7540a657..fea27a82a5 100644
--- a/tensorflow/contrib/tfprof/python/tools/tfprof/model_analyzer_test.py
+++ b/tensorflow/contrib/tfprof/python/tools/tfprof/model_analyzer_test.py
@@ -34,7 +34,7 @@ class PrintModelAnalysisTest(test.TestCase):
def testDumpToFile(self):
ops.reset_default_graph()
- opts = model_analyzer.TRAINABLE_VARS_PARAMS_STAT_OPTIONS
+ opts = model_analyzer.TRAINABLE_VARS_PARAMS_STAT_OPTIONS.copy()
outfile = os.path.join(test.get_temp_dir(), 'dump')
opts['output'] = 'file:outfile=' + outfile
@@ -52,7 +52,7 @@ class PrintModelAnalysisTest(test.TestCase):
def testSelectEverything(self):
ops.reset_default_graph()
- opts = model_analyzer.TRAINABLE_VARS_PARAMS_STAT_OPTIONS
+ opts = model_analyzer.TRAINABLE_VARS_PARAMS_STAT_OPTIONS.copy()
outfile = os.path.join(test.get_temp_dir(), 'dump')
opts['output'] = 'file:outfile=' + outfile
opts['account_type_regexes'] = ['.*']
@@ -77,7 +77,7 @@ class PrintModelAnalysisTest(test.TestCase):
with gfile.Open(outfile, 'r') as f:
# pylint: disable=line-too-long
self.assertEqual(
- 'node name | # parameters | # float_ops | assigned devices | op types | input shapes\n_TFProfRoot (--/451 params, --/10.44k flops, _kTFScopeParent, )\n Conv2D (0/0 params, 5.83k/5.83k flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Conv2D, 0:2x6x6x3|1:3x3x3x6)\n Conv2D_1 (0/0 params, 4.61k/4.61k flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Conv2D, 0:2x3x3x6|1:2x2x6x12)\n DW (3x3x3x6, 162/162 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|VariableV2|_trainable_variables, )\n DW/Assign (0/0 params, 0/0 flops, Assign, 0:3x3x3x6|1:3x3x3x6)\n DW/Initializer (0/0 params, 0/0 flops, _kTFScopeParent, )\n DW/Initializer/random_normal (0/0 params, 0/0 flops, Add, 0:3x3x3x6|1:1)\n DW/Initializer/random_normal/RandomStandardNormal (0/0 params, 0/0 flops, RandomStandardNormal, 0:4)\n DW/Initializer/random_normal/mean (0/0 params, 0/0 flops, Const, )\n DW/Initializer/random_normal/mul (0/0 params, 0/0 flops, Mul, 0:3x3x3x6|1:1)\n DW/Initializer/random_normal/shape (0/0 params, 0/0 flops, Const, )\n DW/Initializer/random_normal/stddev (0/0 params, 0/0 flops, Const, )\n DW/read (0/0 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Identity, 0:3x3x3x6)\n DW2 (2x2x6x12, 288/288 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|VariableV2|_trainable_variables, )\n DW2/Assign (0/0 params, 0/0 flops, Assign, 0:2x2x6x12|1:2x2x6x12)\n DW2/Initializer (0/0 params, 0/0 flops, _kTFScopeParent, )\n DW2/Initializer/random_normal (0/0 params, 0/0 flops, Add, 0:2x2x6x12|1:1)\n DW2/Initializer/random_normal/RandomStandardNormal (0/0 params, 0/0 flops, RandomStandardNormal, 0:4)\n DW2/Initializer/random_normal/mean (0/0 params, 0/0 flops, Const, )\n DW2/Initializer/random_normal/mul (0/0 params, 0/0 flops, Mul, 0:2x2x6x12|1:1)\n DW2/Initializer/random_normal/shape (0/0 params, 0/0 flops, Const, )\n DW2/Initializer/random_normal/stddev (0/0 params, 0/0 flops, Const, )\n DW2/read (0/0 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Identity, 0:2x2x6x12)\n ScalarW (1, 1/1 params, 0/0 flops, VariableV2|_trainable_variables, )\n ScalarW/Assign (0/0 params, 0/0 flops, Assign, 0:1|1:1)\n ScalarW/Initializer (0/0 params, 0/0 flops, _kTFScopeParent, )\n ScalarW/Initializer/random_normal (0/0 params, 0/0 flops, Add, 0:1|1:1)\n ScalarW/Initializer/random_normal/RandomStandardNormal (0/0 params, 0/0 flops, RandomStandardNormal, 0:0)\n ScalarW/Initializer/random_normal/mean (0/0 params, 0/0 flops, Const, )\n ScalarW/Initializer/random_normal/mul (0/0 params, 0/0 flops, Mul, 0:1|1:1)\n ScalarW/Initializer/random_normal/shape (0/0 params, 0/0 flops, Const, )\n ScalarW/Initializer/random_normal/stddev (0/0 params, 0/0 flops, Const, )\n ScalarW/read (0/0 params, 0/0 flops, Identity, 0:1)\n init (0/0 params, 0/0 flops, NoOp, 0:1|1:3x3x3x6|2:2x2x6x12)\n zeros (0/0 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Const, )\n',
+ 'node name | # parameters | # float_ops | assigned devices | op types | op count (run|defined) | input shapes\n_TFProfRoot (--/451 params, --/10.44k flops, _kTFScopeParent, --/7|--/35, )\n Conv2D (0/0 params, 5.83k/5.83k flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Conv2D, 1/1|1/1, 0:2x6x6x3|1:3x3x3x6)\n Conv2D_1 (0/0 params, 4.61k/4.61k flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Conv2D, 1/1|1/1, 0:2x3x3x6|1:2x2x6x12)\n DW (3x3x3x6, 162/162 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|VariableV2|_trainable_variables, 1/2|1/10, )\n DW/Assign (0/0 params, 0/0 flops, Assign, 0/0|1/1, 0:3x3x3x6|1:3x3x3x6)\n DW/Initializer (0/0 params, 0/0 flops, _kTFScopeParent, 0/0|1/7, )\n DW/Initializer/random_normal (0/0 params, 0/0 flops, Add, 0/0|1/6, 0:3x3x3x6|1:1)\n DW/Initializer/random_normal/RandomStandardNormal (0/0 params, 0/0 flops, RandomStandardNormal, 0/0|1/1, 0:4)\n DW/Initializer/random_normal/mean (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n DW/Initializer/random_normal/mul (0/0 params, 0/0 flops, Mul, 0/0|1/1, 0:3x3x3x6|1:1)\n DW/Initializer/random_normal/shape (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n DW/Initializer/random_normal/stddev (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n DW/read (0/0 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Identity, 1/1|1/1, 0:3x3x3x6)\n DW2 (2x2x6x12, 288/288 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|VariableV2|_trainable_variables, 1/2|1/10, )\n DW2/Assign (0/0 params, 0/0 flops, Assign, 0/0|1/1, 0:2x2x6x12|1:2x2x6x12)\n DW2/Initializer (0/0 params, 0/0 flops, _kTFScopeParent, 0/0|1/7, )\n DW2/Initializer/random_normal (0/0 params, 0/0 flops, Add, 0/0|1/6, 0:2x2x6x12|1:1)\n DW2/Initializer/random_normal/RandomStandardNormal (0/0 params, 0/0 flops, RandomStandardNormal, 0/0|1/1, 0:4)\n DW2/Initializer/random_normal/mean (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n DW2/Initializer/random_normal/mul (0/0 params, 0/0 flops, Mul, 0/0|1/1, 0:2x2x6x12|1:1)\n DW2/Initializer/random_normal/shape (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n DW2/Initializer/random_normal/stddev (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n DW2/read (0/0 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Identity, 1/1|1/1, 0:2x2x6x12)\n ScalarW (1, 1/1 params, 0/0 flops, VariableV2|_trainable_variables, 0/0|1/10, )\n ScalarW/Assign (0/0 params, 0/0 flops, Assign, 0/0|1/1, 0:1|1:1)\n ScalarW/Initializer (0/0 params, 0/0 flops, _kTFScopeParent, 0/0|1/7, )\n ScalarW/Initializer/random_normal (0/0 params, 0/0 flops, Add, 0/0|1/6, 0:1|1:1)\n ScalarW/Initializer/random_normal/RandomStandardNormal (0/0 params, 0/0 flops, RandomStandardNormal, 0/0|1/1, 0:0)\n ScalarW/Initializer/random_normal/mean (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n ScalarW/Initializer/random_normal/mul (0/0 params, 0/0 flops, Mul, 0/0|1/1, 0:1|1:1)\n ScalarW/Initializer/random_normal/shape (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n ScalarW/Initializer/random_normal/stddev (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n ScalarW/read (0/0 params, 0/0 flops, Identity, 0/0|1/1, 0:1)\n init (0/0 params, 0/0 flops, NoOp, 0/0|1/1, 0:1|1:3x3x3x6|2:2x2x6x12)\n zeros (0/0 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Const, 1/1|1/1, )\n',
f.read())
# pylint: enable=line-too-long
@@ -143,12 +143,12 @@ class PrintModelAnalysisTest(test.TestCase):
with gfile.Open(outfile, 'r') as f:
lines = f.read().split('\n')
result = '\n'.join([l[:min(len(l), 80)] for l in lines])
- self.assertEqual('node name | # parameters | # float_ops\n_TFProfRoot (--/2.84k params, --/54.08k flops)\n model_analyzer_testlib.py:58:BuildFullModel:seq.append(array_... (0/1.80k para\n model_analyzer_testlib.py:35:BuildSmallModel:image = array_ops... (0/0 param\n model_analyzer_testlib.py:39:BuildSmallModel:initializer=init_... (0/4 param\n model_analyzer_testlib.py:43:BuildSmallModel:initializer=init_... (0/648 par\n model_analyzer_testlib.py:44:BuildSmallModel:x = nn_ops.conv2d... (0/0 param\n model_analyzer_testlib.py:48:BuildSmallModel:initializer=init_... (0/1.15k p\n model_analyzer_testlib.py:49:BuildSmallModel:x = nn_ops.conv2d... (0/0 param\n model_analyzer_testlib.py:62:BuildFullModel:cell, array_ops.c... (0/1.04k para\n model_analyzer_testlib.py:64:BuildFullModel:target = array_op... (0/0 params, \n model_analyzer_testlib.py:65:BuildFullModel:loss = nn_ops.l2_... (0/0 params, \n model_analyzer_testlib.py:67:BuildFullModel:return sgd_op.min... (0/0 params, \n',
+ self.assertEqual('node name | # parameters | # float_ops\n_TFProfRoot (--/2.84k params, --/91.04k flops)\n model_analyzer_testlib.py:58:BuildFullModel:seq.append(array_... (0/1.80k para\n model_analyzer_testlib.py:35:BuildSmallModel:image = array_ops... (0/0 param\n model_analyzer_testlib.py:39:BuildSmallModel:initializer=init_... (0/4 param\n model_analyzer_testlib.py:43:BuildSmallModel:initializer=init_... (0/648 par\n model_analyzer_testlib.py:44:BuildSmallModel:x = nn_ops.conv2d... (0/0 param\n model_analyzer_testlib.py:48:BuildSmallModel:initializer=init_... (0/1.15k p\n model_analyzer_testlib.py:49:BuildSmallModel:x = nn_ops.conv2d... (0/0 param\n model_analyzer_testlib.py:62:BuildFullModel:cell, array_ops.c... (0/1.04k para\n model_analyzer_testlib.py:64:BuildFullModel:target = array_op... (0/0 params, \n model_analyzer_testlib.py:65:BuildFullModel:loss = nn_ops.l2_... (0/0 params, \n model_analyzer_testlib.py:67:BuildFullModel:return sgd_op.min... (0/0 params, \n',
result)
self.assertLess(0, tfprof_node.total_exec_micros)
self.assertEqual(2844, tfprof_node.total_parameters)
- self.assertEqual(54080, tfprof_node.total_float_ops)
+ self.assertEqual(91040, tfprof_node.total_float_ops)
self.assertEqual(5, len(tfprof_node.children))
self.assertEqual('_TFProfRoot', tfprof_node.name)
self.assertEqual(
@@ -226,7 +226,7 @@ class PrintModelAnalysisTest(test.TestCase):
def testOpView(self):
ops.reset_default_graph()
- opts = model_analyzer.TRAINABLE_VARS_PARAMS_STAT_OPTIONS
+ opts = model_analyzer.TRAINABLE_VARS_PARAMS_STAT_OPTIONS.copy()
outfile = os.path.join(test.get_temp_dir(), 'dump')
opts['output'] = 'file:outfile=' + outfile
opts['account_type_regexes'] = ['.*']
@@ -250,8 +250,8 @@ class PrintModelAnalysisTest(test.TestCase):
with gfile.Open(outfile, 'r') as f:
# pylint: disable=line-too-long
self.assertEqual(
- 'nodename|totalexecutiontime|acceleratorexecutiontime|cpuexecutiontime|#parameters|opoccurrence|input',
- f.read().replace('\t', '').replace(' ', '')[0:100])
+ 'nodename|totalexecutiontime|acceleratorexecutiontime|cpuexecutiontime|#parameters|opoccurrence(run|defined)|inputshapes\n',
+ f.read().replace('\t', '').replace(' ', '')[0:120])
# pylint: enable=line-too-long
total_children = 0