From 404db0358aacc0fc2319fc333df4cc5bc0fc404a Mon Sep 17 00:00:00 2001 From: "A. Unique TensorFlower" Date: Fri, 24 Mar 2017 12:46:58 -0800 Subject: [PATCH] Fix tfprof to measure the actual kernel execution time. Change: 151166174 --- tensorflow/tools/tfprof/README.md | 11 +- tensorflow/tools/tfprof/internal/BUILD | 12 +- .../tools/tfprof/internal/testdata/ckpt | Bin 2059 -> 0 bytes .../testdata/ckpt.data-00000-of-00001 | Bin 0 -> 1480 bytes .../tools/tfprof/internal/testdata/ckpt.index | Bin 0 -> 239 bytes .../tools/tfprof/internal/testdata/ckpt.meta | Bin 0 -> 11285 bytes .../tfprof/internal/testdata/graph.pbtxt | 1451 ++++++++++++++--- .../tools/tfprof/internal/testdata/run_meta | Bin 915 -> 3444 bytes .../tools/tfprof/internal/testdata/tfprof_log | 24 +- .../tools/tfprof/internal/tfprof_node.cc | 6 +- .../tools/tfprof/internal/tfprof_node.h | 16 +- .../tools/tfprof/internal/tfprof_show.cc | 2 +- .../tools/tfprof/internal/tfprof_show_test.cc | 11 +- .../tools/tfprof/internal/tfprof_stats.cc | 14 + .../tfprof/internal/tfprof_stats_test.cc | 84 +- .../tfprof/internal/tfprof_tensor_test.cc | 403 ++--- 16 files changed, 1498 insertions(+), 536 deletions(-) delete mode 100644 tensorflow/tools/tfprof/internal/testdata/ckpt create mode 100644 tensorflow/tools/tfprof/internal/testdata/ckpt.data-00000-of-00001 create mode 100644 tensorflow/tools/tfprof/internal/testdata/ckpt.index create mode 100644 tensorflow/tools/tfprof/internal/testdata/ckpt.meta diff --git a/tensorflow/tools/tfprof/README.md b/tensorflow/tools/tfprof/README.md index 3a55fe8ece4..c83cdd45b6c 100644 --- a/tensorflow/tools/tfprof/README.md +++ b/tensorflow/tools/tfprof/README.md @@ -52,6 +52,7 @@ sys.stdout.write('total_params: %d\n' % param_stats.total_parameters) # also requires complete shape information. It is common that shape is unknown # statically. To complete the shape, provide run-time shape information with # tf.RunMetadata to the API (See next example on how to provide RunMetadata). +# tf.contrib.tfprof.model_analyzer.print_model_analysis( tf.get_default_graph(), tfprof_options=tf.contrib.tfprof.model_analyzer.FLOAT_OPS_OPTIONS) @@ -64,8 +65,16 @@ compute the memory and timing statistics. ```python # Generate the meta information for the model that contains the memory usage # and timing information. +# +# Note: When run on GPU, a kernel is first scheduled (enqueued) and then +# executed asynchronously. tfprof only tracks the execution time. +# Which is from proto CostGraphDef::Node::compute_cost. +# In addition, a substantial of time might be spent between Python and +# TensorFlow runtime, which is also not tracked by tfprof. +# +config = tf.ConfigProto(graph_options=tf.GraphOptions(build_cost_model=1)) run_metadata = tf.RunMetadata() -with tf.Session() as sess: +with tf.Session(config=config) as sess: _ = sess.run(train_op, options=tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE), run_metadata=run_metadata) diff --git a/tensorflow/tools/tfprof/internal/BUILD b/tensorflow/tools/tfprof/internal/BUILD index 7476a5ad412..c5482a97769 100644 --- a/tensorflow/tools/tfprof/internal/BUILD +++ b/tensorflow/tools/tfprof/internal/BUILD @@ -102,7 +102,9 @@ tf_cc_test( name = "tfprof_show_test", srcs = ["tfprof_show_test.cc"], data = [ - "testdata/ckpt", + "testdata/ckpt.data-00000-of-00001", + "testdata/ckpt.index", + "testdata/ckpt.meta", "testdata/graph.pbtxt", "testdata/run_meta", "testdata/tfprof_log", @@ -176,7 +178,9 @@ tf_cc_test( name = "tfprof_stats_test", srcs = ["tfprof_stats_test.cc"], data = [ - "testdata/ckpt", + "testdata/ckpt.data-00000-of-00001", + "testdata/ckpt.index", + "testdata/ckpt.meta", "testdata/graph.pbtxt", "testdata/run_meta", "testdata/tfprof_log", @@ -212,7 +216,9 @@ tf_cc_test( name = "tfprof_tensor_test", srcs = ["tfprof_tensor_test.cc"], data = [ - "testdata/ckpt", + "testdata/ckpt.data-00000-of-00001", + "testdata/ckpt.index", + "testdata/ckpt.meta", "testdata/graph.pbtxt", ], deps = [ diff --git a/tensorflow/tools/tfprof/internal/testdata/ckpt b/tensorflow/tools/tfprof/internal/testdata/ckpt deleted file mode 100644 index 2f59f071c59be56c9ebe67abdd0ce784f5904a53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2059 zcmZ`)do=`-hYbaHtdu^)%aRol7a z&lVo#eLe7PnURcVmB{N|m4$)EfRX0UutUj3m;2kvvj{aBt2Gtvo4DAwC>-;*^r1oE zUBZbyh9`F(z?oxx==#`MkeZM}+sa--$E7&9S^pM=Cl6uq2?2(2JZV{9prhnzIxT$E zMSb!*=;f;wj(6u=gRbtC=+;z$mTRq0YVi^5dnAlzOEY0VnTYIO_Tqwn&cmvpE4a!@ zRb+P51fpbRU^=D=jzJvS9^7n`MWb<%oD-T zy_=`$6!>#=IAl}2xi+#Xz79^lHOZ@;W5i;t$#O-a}Qyz?an5A#Uij8 za>rQxKiIbeyBP1ZS+I&+z(Xgh9ba&AAS9w3CsbGBk{3QCtKS2Sy}Uuvb{4I&xQy_V z1)kP16kRsAK&4Rzt|>Uqlm}`%99ol24et4q!?&hG*v22wD(Na4sNRJ%N)26$CPBTV z8k6`kNND%M^EoQOyPiQ`PaGp3b-9iW9OFaA^+@H%Qd{x5yc}juA0=Ng;)-Y9tVX3m zie^sV(ed(PeCqK4>|H8IN|Ha0(-O1EZ6+eOOZOorS`E{qM5OFf5I$+SjY&Zdu-rg| zGh~LOJ(4Gyc;^8Ac({=r*eZmDIiaBGX9L}CzmwhnGKHIZB~*1(2H);~@|w>7GwlBj z>@L35PJU211HngmWNqg@sJHGQuq~dxx)_9M4Ku-HFpXTak%8g705sChL^WS$ut=PS zOC<-XUR)RLe8a^Ujv7tcD#A-Q_M=mx3shLwk>LIhz}tuh4}#bLBgtYllx zIN+q0DKz}aape1@VdTJb8dq?e#(z>$%l8k_CM_1XCACmxnu#b>FC1&~mgBsjTM*1T zq1h=3l%{=TpA6;Ft~t%jw828`nK%v~A92RpRyBCz{xoorMnHG(1ZvanNlNoCP_c6} zdU(vKtWUfTFJ5&*s;4*YYZSng(z!5qT^YRo{v4#pUXnINJlWr#0ByIMu~6j<>C)xm zvjY*ZsF4wApY%s7ZBw-E&IeWR2zcy=PwR ze@#CGtYU+f9>n@#BS=lYMKq!-al38+uGzl_o|Y$~1+mAUm|2c9e0t#NLM=EoHx}RI zq+?cg0&$Q3g;Xdqps8;^nf?84%s2lPt;ZY6Ju)uQWzYC1v(u*if|JBIQ$?Qdv>Zng zC!@J=A5?BR51rxNc=1XxwBC2XLyHcR`V4*IY+wKn+PfK_#~N~h@FEU*jgYZwO7vm| zXmg@1d{CTo%w%}-A2y$2T4U}2@ROXi8 z0_XDIG0vsGQ`f;8j_X$K1&^!x*z0Hk?|;_Ahtw8sc$i@5hCO)L+!EwRT48j@W>R$P z5Tvf24}Z)XqSq&f(EdhkymDF>cFl`{)I5Tg?VG`gtVMQL2aRyoZiD$#DD{l252fAJzLGfjlV!A|;I zt^r4%_+fmBD|Vp(K15xm8=A5mYXd5w;j}va<-;8ss68DW5;>6InT;~*)wsuVBdqbO zBhwmcAaBViG8CLeH`y6raAN_uAd3>iP&k-*n1sL825GS>S^wlRQFyu07wW0-_k2@S zE^ot+&vjAYHJ@5H*vLbt4wGLWi^<0n6}j)}E#Mn-hpcIti7$&4u+`%{cHGQ`;l*dE zxXzfIEe)UrIWjuFx)iUKEMdGaXhDFEExjofqyEkcZ77$kYJ%v2VLKt1NM?7G^}2oAg_%sjNDE`gDlwL_A0m#Iv$^EUAGh8Cv2u7j}Mry<(q2;ALQj3I+_ z96~JpV8Cq!NVn@_L*eHqQe}gj&&B;R8kBD$zmb|ZdFMG?RW9eE&NofN&47zKn%8x{ SN?+vvUw$8V$|glimH!678Ke3D diff --git a/tensorflow/tools/tfprof/internal/testdata/ckpt.data-00000-of-00001 b/tensorflow/tools/tfprof/internal/testdata/ckpt.data-00000-of-00001 new file mode 100644 index 0000000000000000000000000000000000000000..045063943f9711d25028437e1d3d38cc40674cf9 GIT binary patch literal 1480 zcmZXSYgEj67=UM)lFr1?m1M^XWg3P`xB0!2WY{Saabzpy8fBFd+l9Z$r8be!Dq&pq zAVyKy=>NV(l6Ft6sjTgy%xO!ll|{@l*-?IoJqT& zLs7QlII}tx2q(hpS)(WyLdVKUa3G&g9$Zbvu&rQM_>?_rOoJAa4P>~iXZnRLKG)n& z;+rL&WVSS$2Kjy9RJR|!hv%dG?G;>Qei={XRkCOYCB6Qnp<&}nG3lch`Q^uxT6sxP z*3F>gd^U=!J@L#b2hw+S@&0LcpuTdH&y2Dnd9E!Bxl+hVyy94^|2h({xThGH(1NK; z8qgq}OxpXz8$KG@X~h`&^h^YLk0H$axSUo-oMh_m2&xVbB5u5roL@2Gg68{796Cf5 zohneOYtZD6on$B84#(fdlYf>BuHF0!xIAy@3-95*YjPlMpEFe~OULF`Ag3BrRxmRQ zjz#F$y1nhFGEDmo8kZ}7f@^$FMv0H3F-zH^dvm~rYC!)s`3X(;c*kyJc^%!^4Ie?gvtdlA}+LH&X3U7pDGT$^5M6 zQFHuF{!-v@n$~Vh+%pjg^QNQKt{BvI4Ki`WbY}WE8MvnjJ`&Yvdg;!=NVi1tdz*{u zCt|+qOQ%G&7=L!tz@z(K6ej%#N7l;8*X%IsJaQc;9(IAYm-Zx6$I^U-hP;=*K)FiF z>ej2sbC{IeD(8~+f>vR=D+q$zEoor36bhJ-l5{cf==xi%%lLrCd44=+{aj&?CE(&1 zS1QV1Ng@j=(7|xhFDd2Mj7=uF#ub#4_A}MLQnb=Ep}IPQ#?_Nz zPh_yh&7siOR*i<{Zk+vUHyFBKut<-3w7V<-3rRYOZR^;&rBd)c+g(ZhJ3v0FoE^LK zfZ64I<{f1+>tSV8BXgS6#D=Qe$uql&Us-BGv5zK`=+B2J z&=n|5Qyjr8buJSs10W#xHpVS;V{5B4bYxf(Wh`1n1+H$;TwBkV1m9)S9wqgvr-AW^ zoUi?k!%oLklK*sosouY1$-)FMywI`E$P6?-3}%J*EoqN9o?NmwVn3F#&*Q_XsO1LU z$jnAAWr*4k2G-jq)M56#JW-Z)bGf5Q*^VGYC$nK0!u2`WodaN@pH=zTbo5)#K#O1lMp z{bMqfy*bOEHWcEfYuR$AITY6IOlh;6=<0hXs0iN<+V%)KGck&~E?#EbrrAD`xkB_8 krPG|DZLlH#7fgM#1J!H`2+w}ToR(tdc_|ipH!ouU0hk-I?f?J) literal 0 HcmV?d00001 diff --git a/tensorflow/tools/tfprof/internal/testdata/ckpt.index b/tensorflow/tools/tfprof/internal/testdata/ckpt.index new file mode 100644 index 0000000000000000000000000000000000000000..908198167da66769efd31c90ef7c63ab0fe1a91b GIT binary patch literal 239 zcmZQzVB=tvV&Y(A;O0-x&nq)Z(ND@uEaqSoVi98EVAT*YO-f<#XJ?bkPA$qy%>jxF z0L7V+Fsp)y#vB&Yesvu&Hg=(SLlpfA8(5%5aI(o`HG&mnjlvNYjTUy(1LA+(8GwKh wM8w)ZJPhX?__S~X10!<^!%VOon0T?Sc-K5ej@69(AZ7SL`0s{pl~VWH0RG)3jsO4v literal 0 HcmV?d00001 diff --git a/tensorflow/tools/tfprof/internal/testdata/ckpt.meta b/tensorflow/tools/tfprof/internal/testdata/ckpt.meta new file mode 100644 index 0000000000000000000000000000000000000000..94fe29ad5c8ca902e5173b68fa599e7e1ba9ab7e GIT binary patch literal 11285 zcmeHNO^hQ)6`r!){&}A9cxwK8XUWn6v}rNx*&a4oEI?V$5@jWlpe$@|Y4wbIH=Xsg zC*AGQY!Ffo2oO?Gq(}sb3l}6fZ~+9IA}$;_-RT(~N(ORKsArwG5HAWMY4TEpS6Ypf=>EY)}D;yF> z@8GT0(C|#%ecd=QY3*=49?6yKMA?M)#5MKN_~@}^Kbn5T%Ya8_qb;Z% z;$=2*8|uNt%!sSujC~4StwSoUYHdZTH)(ruX;s;UHX<)d8U&BPN%>dAZbXX2=zlRuS`9Ub8D4q>-z{}1g%$0*Bd+L0}ZFHpCGHPv#kd0!eS6| z-8PO*7q6^A*9WE}T-_a6N9?M+0*&B4SF8J+ag{CLuPFH8WK4ScI@u#&LH)jQdd{h6 zsi|&3_5S2AGddenZ?vJMHIRoa1%M0iz;G<%aD*t)|9%z-D36&y>G0rC9;5hjz!ly) z8rz;>*`_0SDOc!%vJGwYonsDtZ$>}DAgI#K8+$kQw4GD`dDl78c5mL=ee{KA4-buJ z_IHPtgOvQ^J$M78w@hd3(qOr&Z4v6q9#KClmg>$xZW7w1m1YGWP5!8=wFUfBKL;J1 zCon&nF2R>@1J)?T+}D3DHf$VsmDUh%P3cwOD@gTopvQq(q?8ja=*aEKX6<`?rxePsAOd2e6$R!wMoRzuTvI}sHn@2L^ z_>VG19b=th#Y#SB=u4P~{wrf%b~+M-V9yf#jllJyw56>7D*+k3Q|9h+@hfWJuL&&0 z45X1lq%KDb3l@~~Ev74?dIbqT=HUWCTZtDjgaLmcuogqz?Fg8BX66hOPwl8Jg1#Xr*bmXL-ij&dH~&iLUd9q^>8Fb)ciMN~gstOFeWdQyW~Cs;g7Ei!H2NBls8Q zDEJePw-JWvV^Lj6vI##l)4`~%L3TLT#=~_{#DMnP#v6`3Z=|s z3Zayl*$FE~6Zks;wK$mrl~5`^s1r)vUpAga4gDQ~<%FU6Jz2qlYB=4*}HXU z&_xu)PeOIe2g>JbPA41ZXi7uOw_pYmmSdOa`8I=wg|KCkFvln03BAe@ zCiO%de~w-iVGf(cyjfk4ImxshdvQ@!QK-vvL76$}rRs_grv!fpk0`nxo7X2ouhhKV)#;)Qg^F%}|{U^<^=^^MkuMfsbtv z)!~EqR+f0n{V_--_Ux5YgU7HF1?O*rM2^*F0>pCcA3{?)=!O6n2L8VsQCwpuIqk@7 zlpn##5tqxEzLIl+%25X;cE!Y7?jSkkAQ~PMq72r28H}f)n?6)rPM$L!=|l6xwDC~( z=t*SvEed?`wTNlBbs$cgR$+xM`%2UQ+$WZ3oEe*vhe^Sa%^0ruw}(ff^LcYkgk^KE z&ci}tyvd0Tf!E=w#Ds;o5YwLlS;-)8YlOhNxUUeOicU{{V_e8{fjkc`?o^AzUkR!j z?rdzOe2vG?{mK@Bp9*5;?b;aD^2iLrXhjJVcSVXYY0zZ|^Ya8@v?O6fAxaWPD@_;? zlRUy?mwyQ+sjRX;pCq3VS>?)LJIpGnqMAJ|!Jm&Lm+1Z{Nt6AeG>JPSMUyn>GBo*p zf+qVRO_IKplSJ9iAj&7Tz3_miYA5)?mTrtjc>I7rB9nO+6r@VI6ZAwPaVFktiTC^1 zgw!njZ4V!7{WY#-xN_lxu8PYMeJpSCi?|@-cZ)&zO5uAvN~O6j--Sg#ulp@oe~)ha z@6rule~$+sV(vBR*1~f;&)=>n?^K|5%73Wk(*F|r9|B(%yJ8#+4nFg6TBtLDnQ62B z9y}W!z%vu^%i^3UYH{ou|Kb6x1TG8RfM3qo=8{v_`5+;9?y@QPxDN$*aW(k5@_q$Y UJqLey#(ue`|KBrsWFC0te<=1(O#lD@ literal 0 HcmV?d00001 diff --git a/tensorflow/tools/tfprof/internal/testdata/graph.pbtxt b/tensorflow/tools/tfprof/internal/testdata/graph.pbtxt index fd54551776c..e6fae2c4cf6 100644 --- a/tensorflow/tools/tfprof/internal/testdata/graph.pbtxt +++ b/tensorflow/tools/tfprof/internal/testdata/graph.pbtxt @@ -17,10 +17,10 @@ node { size: 2 } dim { - size: 6 + size: 8 } dim { - size: 6 + size: 8 } dim { size: 3 @@ -32,8 +32,203 @@ node { } } node { - name: "DW" - op: "Variable" + name: "conv2d/kernel/Initializer/random_uniform/shape" + op: "Const" + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/kernel" + } + } + } + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 4 + } + } + tensor_content: "\003\000\000\000\003\000\000\000\003\000\000\000\005\000\000\000" + } + } + } +} +node { + name: "conv2d/kernel/Initializer/random_uniform/min" + op: "Const" + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/kernel" + } + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + } + float_val: -0.288675129414 + } + } + } +} +node { + name: "conv2d/kernel/Initializer/random_uniform/max" + op: "Const" + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/kernel" + } + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + } + float_val: 0.288675129414 + } + } + } +} +node { + name: "conv2d/kernel/Initializer/random_uniform/RandomUniform" + op: "RandomUniform" + input: "conv2d/kernel/Initializer/random_uniform/shape" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/kernel" + } + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "seed" + value { + i: 0 + } + } + attr { + key: "seed2" + value { + i: 0 + } + } +} +node { + name: "conv2d/kernel/Initializer/random_uniform/sub" + op: "Sub" + input: "conv2d/kernel/Initializer/random_uniform/max" + input: "conv2d/kernel/Initializer/random_uniform/min" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/kernel" + } + } + } +} +node { + name: "conv2d/kernel/Initializer/random_uniform/mul" + op: "Mul" + input: "conv2d/kernel/Initializer/random_uniform/RandomUniform" + input: "conv2d/kernel/Initializer/random_uniform/sub" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/kernel" + } + } + } +} +node { + name: "conv2d/kernel/Initializer/random_uniform" + op: "Add" + input: "conv2d/kernel/Initializer/random_uniform/mul" + input: "conv2d/kernel/Initializer/random_uniform/min" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/kernel" + } + } + } +} +node { + name: "conv2d/kernel" + op: "VariableV2" + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/kernel" + } + } + } attr { key: "container" value { @@ -60,7 +255,7 @@ node { size: 3 } dim { - size: 6 + size: 5 } } } @@ -73,177 +268,10 @@ node { } } node { - name: "DW/Initializer/random_normal/shape" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@DW" - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 4 - } - } - tensor_content: "\003\000\000\000\003\000\000\000\003\000\000\000\006\000\000\000" - } - } - } -} -node { - name: "DW/Initializer/random_normal/mean" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@DW" - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } -} -node { - name: "DW/Initializer/random_normal/stddev" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@DW" - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0010000000475 - } - } - } -} -node { - name: "DW/Initializer/random_normal/RandomStandardNormal" - op: "RandomStandardNormal" - input: "DW/Initializer/random_normal/shape" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@DW" - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "seed" - value { - i: 87654321 - } - } - attr { - key: "seed2" - value { - i: 5 - } - } -} -node { - name: "DW/Initializer/random_normal/mul" - op: "Mul" - input: "DW/Initializer/random_normal/RandomStandardNormal" - input: "DW/Initializer/random_normal/stddev" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@DW" - } - } - } -} -node { - name: "DW/Initializer/random_normal" - op: "Add" - input: "DW/Initializer/random_normal/mul" - input: "DW/Initializer/random_normal/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@DW" - } - } - } -} -node { - name: "DW/Assign" + name: "conv2d/kernel/Assign" op: "Assign" - input: "DW" - input: "DW/Initializer/random_normal" + input: "conv2d/kernel" + input: "conv2d/kernel/Initializer/random_uniform" attr { key: "T" value { @@ -254,7 +282,7 @@ node { key: "_class" value { list { - s: "loc:@DW" + s: "loc:@conv2d/kernel" } } } @@ -272,9 +300,9 @@ node { } } node { - name: "DW/read" + name: "conv2d/kernel/read" op: "Identity" - input: "DW" + input: "conv2d/kernel" attr { key: "T" value { @@ -285,16 +313,187 @@ node { key: "_class" value { list { - s: "loc:@DW" + s: "loc:@conv2d/kernel" } } } } node { - name: "Conv2D" + name: "conv2d/bias/Initializer/Const" + op: "Const" + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/bias" + } + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + dim { + size: 5 + } + } + float_val: 0.0 + } + } + } +} +node { + name: "conv2d/bias" + op: "VariableV2" + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/bias" + } + } + } + attr { + key: "container" + value { + s: "" + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "shape" + value { + shape { + dim { + size: 5 + } + } + } + } + attr { + key: "shared_name" + value { + s: "" + } + } +} +node { + name: "conv2d/bias/Assign" + op: "Assign" + input: "conv2d/bias" + input: "conv2d/bias/Initializer/Const" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/bias" + } + } + } + attr { + key: "use_locking" + value { + b: true + } + } + attr { + key: "validate_shape" + value { + b: true + } + } +} +node { + name: "conv2d/bias/read" + op: "Identity" + input: "conv2d/bias" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/bias" + } + } + } +} +node { + name: "conv2d/convolution/Shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 4 + } + } + tensor_content: "\003\000\000\000\003\000\000\000\003\000\000\000\005\000\000\000" + } + } + } +} +node { + name: "conv2d/convolution/dilation_rate" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\001\000\000\000\001\000\000\000" + } + } + } +} +node { + name: "conv2d/convolution" op: "Conv2D" input: "zeros" - input: "DW/read" + input: "conv2d/kernel/read" attr { key: "T" value { @@ -310,7 +509,7 @@ node { attr { key: "padding" value { - s: "SAME" + s: "VALID" } } attr { @@ -318,8 +517,8 @@ node { value { list { i: 1 - i: 2 - i: 2 + i: 1 + i: 1 i: 1 } } @@ -332,54 +531,31 @@ node { } } node { - name: "DW2" - op: "Variable" + name: "conv2d/BiasAdd" + op: "BiasAdd" + input: "conv2d/convolution" + input: "conv2d/bias/read" attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" + key: "T" value { type: DT_FLOAT } } attr { - key: "shape" + key: "data_format" value { - shape { - dim { - size: 2 - } - dim { - size: 2 - } - dim { - size: 6 - } - dim { - size: 12 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" + s: "NHWC" } } } node { - name: "DW2/Initializer/random_normal/shape" + name: "conv2d_1/kernel/Initializer/random_uniform/shape" op: "Const" attr { key: "_class" value { list { - s: "loc:@DW2" + s: "loc:@conv2d_1/kernel" } } } @@ -399,19 +575,19 @@ node { size: 4 } } - tensor_content: "\002\000\000\000\002\000\000\000\006\000\000\000\014\000\000\000" + tensor_content: "\003\000\000\000\003\000\000\000\005\000\000\000\005\000\000\000" } } } } node { - name: "DW2/Initializer/random_normal/mean" + name: "conv2d_1/kernel/Initializer/random_uniform/min" op: "Const" attr { key: "_class" value { list { - s: "loc:@DW2" + s: "loc:@conv2d_1/kernel" } } } @@ -428,19 +604,19 @@ node { dtype: DT_FLOAT tensor_shape { } - float_val: 0.0 + float_val: -0.25819888711 } } } } node { - name: "DW2/Initializer/random_normal/stddev" + name: "conv2d_1/kernel/Initializer/random_uniform/max" op: "Const" attr { key: "_class" value { list { - s: "loc:@DW2" + s: "loc:@conv2d_1/kernel" } } } @@ -457,15 +633,15 @@ node { dtype: DT_FLOAT tensor_shape { } - float_val: 0.0010000000475 + float_val: 0.25819888711 } } } } node { - name: "DW2/Initializer/random_normal/RandomStandardNormal" - op: "RandomStandardNormal" - input: "DW2/Initializer/random_normal/shape" + name: "conv2d_1/kernel/Initializer/random_uniform/RandomUniform" + op: "RandomUniform" + input: "conv2d_1/kernel/Initializer/random_uniform/shape" attr { key: "T" value { @@ -476,7 +652,7 @@ node { key: "_class" value { list { - s: "loc:@DW2" + s: "loc:@conv2d_1/kernel" } } } @@ -489,21 +665,41 @@ node { attr { key: "seed" value { - i: 87654321 + i: 0 } } attr { key: "seed2" value { - i: 15 + i: 0 } } } node { - name: "DW2/Initializer/random_normal/mul" + name: "conv2d_1/kernel/Initializer/random_uniform/sub" + op: "Sub" + input: "conv2d_1/kernel/Initializer/random_uniform/max" + input: "conv2d_1/kernel/Initializer/random_uniform/min" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@conv2d_1/kernel" + } + } + } +} +node { + name: "conv2d_1/kernel/Initializer/random_uniform/mul" op: "Mul" - input: "DW2/Initializer/random_normal/RandomStandardNormal" - input: "DW2/Initializer/random_normal/stddev" + input: "conv2d_1/kernel/Initializer/random_uniform/RandomUniform" + input: "conv2d_1/kernel/Initializer/random_uniform/sub" attr { key: "T" value { @@ -514,16 +710,16 @@ node { key: "_class" value { list { - s: "loc:@DW2" + s: "loc:@conv2d_1/kernel" } } } } node { - name: "DW2/Initializer/random_normal" + name: "conv2d_1/kernel/Initializer/random_uniform" op: "Add" - input: "DW2/Initializer/random_normal/mul" - input: "DW2/Initializer/random_normal/mean" + input: "conv2d_1/kernel/Initializer/random_uniform/mul" + input: "conv2d_1/kernel/Initializer/random_uniform/min" attr { key: "T" value { @@ -534,16 +730,65 @@ node { key: "_class" value { list { - s: "loc:@DW2" + s: "loc:@conv2d_1/kernel" } } } } node { - name: "DW2/Assign" + name: "conv2d_1/kernel" + op: "VariableV2" + attr { + key: "_class" + value { + list { + s: "loc:@conv2d_1/kernel" + } + } + } + attr { + key: "container" + value { + s: "" + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "shape" + value { + shape { + dim { + size: 3 + } + dim { + size: 3 + } + dim { + size: 5 + } + dim { + size: 5 + } + } + } + } + attr { + key: "shared_name" + value { + s: "" + } + } +} +node { + name: "conv2d_1/kernel/Assign" op: "Assign" - input: "DW2" - input: "DW2/Initializer/random_normal" + input: "conv2d_1/kernel" + input: "conv2d_1/kernel/Initializer/random_uniform" attr { key: "T" value { @@ -554,7 +799,7 @@ node { key: "_class" value { list { - s: "loc:@DW2" + s: "loc:@conv2d_1/kernel" } } } @@ -572,9 +817,9 @@ node { } } node { - name: "DW2/read" + name: "conv2d_1/kernel/read" op: "Identity" - input: "DW2" + input: "conv2d_1/kernel" attr { key: "T" value { @@ -585,16 +830,187 @@ node { key: "_class" value { list { - s: "loc:@DW2" + s: "loc:@conv2d_1/kernel" } } } } node { - name: "Conv2D_1" + name: "conv2d_1/bias/Initializer/Const" + op: "Const" + attr { + key: "_class" + value { + list { + s: "loc:@conv2d_1/bias" + } + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + dim { + size: 5 + } + } + float_val: 0.0 + } + } + } +} +node { + name: "conv2d_1/bias" + op: "VariableV2" + attr { + key: "_class" + value { + list { + s: "loc:@conv2d_1/bias" + } + } + } + attr { + key: "container" + value { + s: "" + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "shape" + value { + shape { + dim { + size: 5 + } + } + } + } + attr { + key: "shared_name" + value { + s: "" + } + } +} +node { + name: "conv2d_1/bias/Assign" + op: "Assign" + input: "conv2d_1/bias" + input: "conv2d_1/bias/Initializer/Const" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@conv2d_1/bias" + } + } + } + attr { + key: "use_locking" + value { + b: true + } + } + attr { + key: "validate_shape" + value { + b: true + } + } +} +node { + name: "conv2d_1/bias/read" + op: "Identity" + input: "conv2d_1/bias" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@conv2d_1/bias" + } + } + } +} +node { + name: "conv2d_2/convolution/Shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 4 + } + } + tensor_content: "\003\000\000\000\003\000\000\000\005\000\000\000\005\000\000\000" + } + } + } +} +node { + name: "conv2d_2/convolution/dilation_rate" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\001\000\000\000\001\000\000\000" + } + } + } +} +node { + name: "conv2d_2/convolution" op: "Conv2D" - input: "Conv2D" - input: "DW2/read" + input: "conv2d/BiasAdd" + input: "conv2d_1/kernel/read" attr { key: "T" value { @@ -610,7 +1026,7 @@ node { attr { key: "padding" value { - s: "SAME" + s: "VALID" } } attr { @@ -618,8 +1034,8 @@ node { value { list { i: 1 - i: 2 - i: 2 + i: 1 + i: 1 i: 1 } } @@ -631,6 +1047,537 @@ node { } } } -versions { - producer: 13 +node { + name: "conv2d_2/BiasAdd" + op: "BiasAdd" + input: "conv2d_2/convolution" + input: "conv2d_1/bias/read" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "data_format" + value { + s: "NHWC" + } + } +} +node { + name: "save/Const" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + } + string_val: "model" + } + } + } +} +node { + name: "save/SaveV2/tensor_names" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + dim { + size: 4 + } + } + string_val: "conv2d/bias" + string_val: "conv2d/kernel" + string_val: "conv2d_1/bias" + string_val: "conv2d_1/kernel" + } + } + } +} +node { + name: "save/SaveV2/shape_and_slices" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + dim { + size: 4 + } + } + string_val: "" + string_val: "" + string_val: "" + string_val: "" + } + } + } +} +node { + name: "save/SaveV2" + op: "SaveV2" + input: "save/Const" + input: "save/SaveV2/tensor_names" + input: "save/SaveV2/shape_and_slices" + input: "conv2d/bias" + input: "conv2d/kernel" + input: "conv2d_1/bias" + input: "conv2d_1/kernel" + attr { + key: "dtypes" + value { + list { + type: DT_FLOAT + type: DT_FLOAT + type: DT_FLOAT + type: DT_FLOAT + } + } + } +} +node { + name: "save/control_dependency" + op: "Identity" + input: "save/Const" + input: "^save/SaveV2" + attr { + key: "T" + value { + type: DT_STRING + } + } + attr { + key: "_class" + value { + list { + s: "loc:@save/Const" + } + } + } +} +node { + name: "save/RestoreV2/tensor_names" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + dim { + size: 1 + } + } + string_val: "conv2d/bias" + } + } + } +} +node { + name: "save/RestoreV2/shape_and_slices" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + dim { + size: 1 + } + } + string_val: "" + } + } + } +} +node { + name: "save/RestoreV2" + op: "RestoreV2" + input: "save/Const" + input: "save/RestoreV2/tensor_names" + input: "save/RestoreV2/shape_and_slices" + attr { + key: "dtypes" + value { + list { + type: DT_FLOAT + } + } + } +} +node { + name: "save/Assign" + op: "Assign" + input: "conv2d/bias" + input: "save/RestoreV2" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/bias" + } + } + } + attr { + key: "use_locking" + value { + b: true + } + } + attr { + key: "validate_shape" + value { + b: true + } + } +} +node { + name: "save/RestoreV2_1/tensor_names" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + dim { + size: 1 + } + } + string_val: "conv2d/kernel" + } + } + } +} +node { + name: "save/RestoreV2_1/shape_and_slices" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + dim { + size: 1 + } + } + string_val: "" + } + } + } +} +node { + name: "save/RestoreV2_1" + op: "RestoreV2" + input: "save/Const" + input: "save/RestoreV2_1/tensor_names" + input: "save/RestoreV2_1/shape_and_slices" + attr { + key: "dtypes" + value { + list { + type: DT_FLOAT + } + } + } +} +node { + name: "save/Assign_1" + op: "Assign" + input: "conv2d/kernel" + input: "save/RestoreV2_1" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@conv2d/kernel" + } + } + } + attr { + key: "use_locking" + value { + b: true + } + } + attr { + key: "validate_shape" + value { + b: true + } + } +} +node { + name: "save/RestoreV2_2/tensor_names" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + dim { + size: 1 + } + } + string_val: "conv2d_1/bias" + } + } + } +} +node { + name: "save/RestoreV2_2/shape_and_slices" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + dim { + size: 1 + } + } + string_val: "" + } + } + } +} +node { + name: "save/RestoreV2_2" + op: "RestoreV2" + input: "save/Const" + input: "save/RestoreV2_2/tensor_names" + input: "save/RestoreV2_2/shape_and_slices" + attr { + key: "dtypes" + value { + list { + type: DT_FLOAT + } + } + } +} +node { + name: "save/Assign_2" + op: "Assign" + input: "conv2d_1/bias" + input: "save/RestoreV2_2" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@conv2d_1/bias" + } + } + } + attr { + key: "use_locking" + value { + b: true + } + } + attr { + key: "validate_shape" + value { + b: true + } + } +} +node { + name: "save/RestoreV2_3/tensor_names" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + dim { + size: 1 + } + } + string_val: "conv2d_1/kernel" + } + } + } +} +node { + name: "save/RestoreV2_3/shape_and_slices" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + dim { + size: 1 + } + } + string_val: "" + } + } + } +} +node { + name: "save/RestoreV2_3" + op: "RestoreV2" + input: "save/Const" + input: "save/RestoreV2_3/tensor_names" + input: "save/RestoreV2_3/shape_and_slices" + attr { + key: "dtypes" + value { + list { + type: DT_FLOAT + } + } + } +} +node { + name: "save/Assign_3" + op: "Assign" + input: "conv2d_1/kernel" + input: "save/RestoreV2_3" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@conv2d_1/kernel" + } + } + } + attr { + key: "use_locking" + value { + b: true + } + } + attr { + key: "validate_shape" + value { + b: true + } + } +} +node { + name: "save/restore_all" + op: "NoOp" + input: "^save/Assign" + input: "^save/Assign_1" + input: "^save/Assign_2" + input: "^save/Assign_3" +} +node { + name: "init" + op: "NoOp" + input: "^conv2d/kernel/Assign" + input: "^conv2d/bias/Assign" + input: "^conv2d_1/kernel/Assign" + input: "^conv2d_1/bias/Assign" +} +versions { + producer: 21 } diff --git a/tensorflow/tools/tfprof/internal/testdata/run_meta b/tensorflow/tools/tfprof/internal/testdata/run_meta index 2d5bb7ddaffa5ba08b5201f7c7dd5e873a289427..6e9e0c38729e81ab892faf194d8a5d94037855d5 100644 GIT binary patch literal 3444 zcmbW3--{bn6vy{YGMnkmuVGBt>|mQ|M3}5CiFqg`RK;wC6rlyHMG6wKo1k$+W=Yaw zONFVse?So*`>?H6R0Lnd=lUSN6cL}aR#7aJ3gRDNVLf;5kGXed1G8Ni0(&Rt^F7~l z?m5A`1^l>xpRK>^t+htpdT;cOH=WfdgU!)!z1M2gXT9kLe5`L?Y&ERoIMY3M_Knw8 zUor3AynX%tKR;=%*3@wdj@u?Xa$a!GcxN}=TIXB#j(BLuHld2vx{G93MY!ce3H2gcC|LXr;X%~YyfLQg$(-|;+;EeZie%%{iYWC|J zgUNU>GJj?#W#k}N=e)XojPX*y;*VZkGH#^J8)?crVQk#icJ+NfS*v^>S8QKJgNmV}E`hZmBa3t>B%3Q@JbBMG7_25CM z0lA_qb6i*^E(D#xtrmge9t5o|Iq(s}rHE20;bB+?At2rt)P#eI3BrQLUV-D1g!Q$~ zU%W84L~qnd5N~vGHuT1(}25;S|Nv2=+1U9 z7mhRAB>;$9B_rsR8%(LA4ts^RMqo^>!yDB41mOaEp$(;bx!*TGy+wzrlXDACAnyo~ zcbCe0Q4I~!7=%}uoHJvDP*M3>=VK`+CGnGVJKUTQYpz z^mXcGmCm5R%T+42s{leb)l|4zQFvzT*IelIYT39GzzEG`Xi@U6?RLMT& zv3HRj+qjNGK?``qHyRslNm(gi!Jv<@lvUsiDeYQ%U0*5SJL1*{@kSJdQ2aq|gHZgPkflMmn8$M6hsT?rC_q z_ZmwI#gOFz=s(!xaazRA_XJ9rc1clLKoMgxk|*gvF>lol%;PS<(Cn8?Qe-Y^ z4_@F`ivjl4g?UISH@^#KyuZVlo>YGUA`{#4`?XBNuj6ueIvDr6(UIS6B&8RDTxf)K HI)VNNM%i)< literal 915 zcmd;@z|Pgn&ZVlKm7ipllb@WJlaXIsqF>9ttqg>$xY*-^ z{X>JCT?KwG>{!0N?L3nNqXLr#yAdlFGf;_>090DRR>3ddzd%FN<0({~P$Cy=RccXw zvA~o?aGi`A98jHB8d7Q;j6woJOdL!=%m&5GN&*}Y*rY&a8#MfVaq`=5c_)6bF+dxf z^Ye;JfL1g@4HSywVsZ%=m*pS7=?h+0R z{lpZ3jWAn40nCaSOfWBiXl&jPgBk?1$ulK2uOzdiQo|)&(_<;jH@RFKK!-pq+X1r- z6lQFgmJ#xj1k5B<+l(|lmcy(o=3)azSecQFz)q-;LV!l75eGQo2y9?RO93$NfxNbX z85%>Y8y?pq9oo>VA5iEy5rX1gIU~wZZXWO z;FyD1yaQsfGR!c9)esSo-H@Qv^yq`yBV@+K8XxTG=Pj@qVKbu!3oNhjfhB<^L37Gl Gs44&-j|9#D diff --git a/tensorflow/tools/tfprof/internal/testdata/tfprof_log b/tensorflow/tools/tfprof/internal/testdata/tfprof_log index c35d4338e97..2a317207c4e 100644 --- a/tensorflow/tools/tfprof/internal/testdata/tfprof_log +++ b/tensorflow/tools/tfprof/internal/testdata/tfprof_log @@ -1,9 +1,17 @@ - -Conv2D_1€$ - -DW2_trainable_variables - -DW_trainable_variables - -Conv2DÈ- \ No newline at end of file + +conv2d_2/BiasAdd  + +conv2d/BiasAddè +% + conv2d_1/bias_trainable_variables + +conv2d_2/convolutionÀp + +conv2d/convolutionð— +# + conv2d/bias_trainable_variables +' +conv2d_1/kernel_trainable_variables +% + conv2d/kernel_trainable_variables \ No newline at end of file diff --git a/tensorflow/tools/tfprof/internal/tfprof_node.cc b/tensorflow/tools/tfprof/internal/tfprof_node.cc index 0e77439231d..08bd91d99c6 100644 --- a/tensorflow/tools/tfprof/internal/tfprof_node.cc +++ b/tensorflow/tools/tfprof/internal/tfprof_node.cc @@ -29,7 +29,7 @@ void TFNode::AddStepStat(const string& device, const NodeExecStats* step_stat) { op_start_micros_ = step_stat_->all_start_micros(); if (step_stat_->op_end_rel_micros() && step_stat_->op_start_rel_micros()) { - op_exec_micros_ = + op_schedule_micros_ = step_stat_->op_end_rel_micros() - step_stat_->op_start_rel_micros(); } all_spent_micros_ = step_stat_->all_end_rel_micros(); @@ -43,5 +43,9 @@ void TFNode::AddStepStat(const string& device, const NodeExecStats* step_stat) { } } } + +void TFNode::AddNodeStat(const CostGraphDef::Node* cost_node) { + kernel_compute_micros_ = cost_node->compute_cost(); +} } // namespace tfprof } // namespace tensorflow diff --git a/tensorflow/tools/tfprof/internal/tfprof_node.h b/tensorflow/tools/tfprof/internal/tfprof_node.h index 666ee0767e7..677c8d3c870 100644 --- a/tensorflow/tools/tfprof/internal/tfprof_node.h +++ b/tensorflow/tools/tfprof/internal/tfprof_node.h @@ -23,6 +23,7 @@ limitations under the License. #include "tensorflow/core/framework/allocation_description.pb.h" #include "tensorflow/core/framework/attr_value.pb.h" +#include "tensorflow/core/framework/cost_graph.pb.h" #include "tensorflow/core/framework/node_def.pb.h" #include "tensorflow/core/framework/step_stats.pb.h" #include "tensorflow/core/framework/tensor_description.pb.h" @@ -39,7 +40,8 @@ class TFNode { : node_(node), step_stat_(nullptr), op_start_micros_(0), - op_exec_micros_(0), + op_schedule_micros_(0), + kernel_compute_micros_(0), all_spent_micros_(0), requested_bytes_(0), float_ops_(0) { @@ -76,12 +78,19 @@ class TFNode { void AddStepStat(const string& device, const NodeExecStats* step_stat); + // Add CostGraphDef::Node. + void AddNodeStat(const CostGraphDef::Node* cost_node); + void AddFloatOps(int64 float_ops) { float_ops_ = float_ops; } const NodeDef* node_def() { return node_; } const std::map& inputs() { return inputs_; } int64 op_start_micros() { return op_start_micros_; } - int64 op_exec_micros() { return op_exec_micros_; } + // This is time spent in Op::Compute(), which is GPU kernel schedule time. + // Currently not used. + int64 op_schedule_micros() { return op_schedule_micros_; } + // This is time spent in kernel execution. + int64 kernel_compute_micros() { return kernel_compute_micros_; } int64 all_spent_micros() { return all_spent_micros_; } int64 requested_byptes() { return requested_bytes_; } int64 float_ops() { return float_ops_; } @@ -101,7 +110,8 @@ class TFNode { std::set op_types_; string device_; int64 op_start_micros_; - int64 op_exec_micros_; + int64 op_schedule_micros_; + int64 kernel_compute_micros_; int64 all_spent_micros_; int64 requested_bytes_; int64 float_ops_; diff --git a/tensorflow/tools/tfprof/internal/tfprof_show.cc b/tensorflow/tools/tfprof/internal/tfprof_show.cc index a8f1ac6ae94..08ae82fea43 100644 --- a/tensorflow/tools/tfprof/internal/tfprof_show.cc +++ b/tensorflow/tools/tfprof/internal/tfprof_show.cc @@ -30,7 +30,7 @@ ShowNode::ShowNode(TFNode* node) : node(node), account(true) { if (!node->device().empty()) { mutable_proto()->set_device(node->device()); } - mutable_proto()->set_exec_micros(node->op_exec_micros()); + mutable_proto()->set_exec_micros(node->kernel_compute_micros()); mutable_proto()->set_requested_bytes(node->requested_byptes()); mutable_proto()->set_float_ops(node->float_ops()); diff --git a/tensorflow/tools/tfprof/internal/tfprof_show_test.cc b/tensorflow/tools/tfprof/internal/tfprof_show_test.cc index 820647f6271..ffaa576639e 100644 --- a/tensorflow/tools/tfprof/internal/tfprof_show_test.cc +++ b/tensorflow/tools/tfprof/internal/tfprof_show_test.cc @@ -72,7 +72,7 @@ class TFProfShowTest : public ::testing::Test { TEST_F(TFProfShowTest, DumpScopeMode) { string dump_file = io::JoinPath(testing::TmpDir(), "dump"); Options opts(5, 0, 0, 0, 0, {".*"}, "name", - {"Variable"}, // accout_type_regexes + {"VariableV2"}, // accout_type_regexes {".*"}, {""}, {".*"}, {""}, false, {"params", "bytes", "micros", "float_ops", "num_hidden_ops"}, false, dump_file); @@ -81,9 +81,12 @@ TEST_F(TFProfShowTest, DumpScopeMode) { string dump_str; TF_CHECK_OK(ReadFileToString(Env::Default(), dump_file, &dump_str)); EXPECT_EQ( - "_TFProfRoot (--/450 params, --/0 flops, --/1.80KB, --/0us)\n DW " - "(3x3x3x6, 162/162 params, 0/0 flops, 648B/648B, 0us/0us)\n DW2 " - "(2x2x6x12, 288/288 params, 0/0 flops, 1.15KB/1.15KB, 0us/0us)\n", + "_TFProfRoot (--/370 params, --/0 flops, --/1.48KB, --/5us)\n " + "conv2d/bias (5, 5/5 params, 0/0 flops, 20B/20B, 1us/1us)\n " + "conv2d/kernel (3x3x3x5, 135/135 params, 0/0 flops, 540B/540B, " + "1us/1us)\n conv2d_1/bias (5, 5/5 params, 0/0 flops, 20B/20B, " + "1us/1us)\n conv2d_1/kernel (3x3x5x5, 225/225 params, 0/0 flops, " + "900B/900B, 2us/2us)\n", dump_str); } diff --git a/tensorflow/tools/tfprof/internal/tfprof_stats.cc b/tensorflow/tools/tfprof/internal/tfprof_stats.cc index 4bb3a07eafa..edc0689d699 100644 --- a/tensorflow/tools/tfprof/internal/tfprof_stats.cc +++ b/tensorflow/tools/tfprof/internal/tfprof_stats.cc @@ -125,6 +125,20 @@ void TFStats::ParseRunMeta() { node->second.AddStepStat(dev_stat.device(), &node_stat); } } + + if (!run_meta_->has_cost_graph()) { + fprintf(stderr, + "Missing CostGraphDef in RunMetadata.\nMaybe you forget to" + "set tf.ConfigProto(graph_options=tf.GraphOptions(" + "build_cost_model=1)) to Session()\n"); + } + for (const auto& node_pb : run_meta_->cost_graph().node()) { + auto node = nodes_map_.find(node_pb.name()); + if (node == nodes_map_.end()) { + continue; + } + node->second.AddNodeStat(&node_pb); + } } } // namespace tfprof } // namespace tensorflow diff --git a/tensorflow/tools/tfprof/internal/tfprof_stats_test.cc b/tensorflow/tools/tfprof/internal/tfprof_stats_test.cc index 2aa282ac127..3c97f0eb65a 100644 --- a/tensorflow/tools/tfprof/internal/tfprof_stats_test.cc +++ b/tensorflow/tools/tfprof/internal/tfprof_stats_test.cc @@ -81,16 +81,24 @@ TEST_F(TFProfStatsTest, CustomOpType) { TFProfNode expected; CHECK(protobuf::TextFormat::ParseFromString( "name: \"_TFProfRoot\"\nexec_micros: 0\nrequested_bytes: " - "0\ntotal_exec_micros: 0\ntotal_requested_bytes: 1800\ntotal_parameters: " - "450\nchildren {\n name: \"DW\"\n exec_micros: 0\n requested_bytes: " - "648\n parameters: 162\n total_exec_micros: 0\n " - "total_requested_bytes: 648\n total_parameters: 162\n device: " + "0\ntotal_exec_micros: 5\ntotal_requested_bytes: 1480\ntotal_parameters: " + "370\nchildren {\n name: \"conv2d/bias\"\n exec_micros: 1\n " + "requested_bytes: 20\n parameters: 5\n total_exec_micros: 1\n " + "total_requested_bytes: 20\n total_parameters: 5\n device: " "\"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: 0\n " - "total_float_ops: 0\n}\nchildren {\n name: \"DW2\"\n exec_micros: 0\n " - "requested_bytes: 1152\n parameters: 288\n total_exec_micros: 0\n " - "total_requested_bytes: 1152\n total_parameters: 288\n device: " - "\"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: 0\n " - "total_float_ops: 0\n}\nfloat_ops: 0\ntotal_float_ops: 0\n", + "total_float_ops: 0\n}\nchildren {\n name: \"conv2d/kernel\"\n " + "exec_micros: 1\n requested_bytes: 540\n parameters: 135\n " + "total_exec_micros: 1\n total_requested_bytes: 540\n total_parameters: " + "135\n device: \"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: " + "0\n total_float_ops: 0\n}\nchildren {\n name: \"conv2d_1/bias\"\n " + "exec_micros: 1\n requested_bytes: 20\n parameters: 5\n " + "total_exec_micros: 1\n total_requested_bytes: 20\n total_parameters: " + "5\n device: \"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: " + "0\n total_float_ops: 0\n}\nchildren {\n name: \"conv2d_1/kernel\"\n " + "exec_micros: 2\n requested_bytes: 900\n parameters: 225\n " + "total_exec_micros: 2\n total_requested_bytes: 900\n total_parameters: " + "225\n device: \"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: " + "0\n total_float_ops: 0\n}\nfloat_ops: 0\ntotal_float_ops: 0\n", &expected)); EXPECT_EQ(expected.DebugString(), root.DebugString()); } @@ -105,16 +113,24 @@ TEST_F(TFProfStatsTest, CheckPointOpType) { TFProfNode expected; CHECK(protobuf::TextFormat::ParseFromString( "name: \"_TFProfRoot\"\nexec_micros: 0\nrequested_bytes: " - "0\ntotal_exec_micros: 0\ntotal_requested_bytes: 1800\ntotal_parameters: " - "450\nchildren {\n name: \"DW\"\n exec_micros: 0\n requested_bytes: " - "648\n parameters: 162\n total_exec_micros: 0\n " - "total_requested_bytes: 648\n total_parameters: 162\n device: " + "0\ntotal_exec_micros: 5\ntotal_requested_bytes: 1480\ntotal_parameters: " + "370\nchildren {\n name: \"conv2d/bias\"\n exec_micros: 1\n " + "requested_bytes: 20\n parameters: 5\n total_exec_micros: 1\n " + "total_requested_bytes: 20\n total_parameters: 5\n device: " "\"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: 0\n " - "total_float_ops: 0\n}\nchildren {\n name: \"DW2\"\n exec_micros: 0\n " - "requested_bytes: 1152\n parameters: 288\n total_exec_micros: 0\n " - "total_requested_bytes: 1152\n total_parameters: 288\n device: " - "\"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: 0\n " - "total_float_ops: 0\n}\nfloat_ops: 0\ntotal_float_ops: 0\n", + "total_float_ops: 0\n}\nchildren {\n name: \"conv2d/kernel\"\n " + "exec_micros: 1\n requested_bytes: 540\n parameters: 135\n " + "total_exec_micros: 1\n total_requested_bytes: 540\n total_parameters: " + "135\n device: \"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: " + "0\n total_float_ops: 0\n}\nchildren {\n name: \"conv2d_1/bias\"\n " + "exec_micros: 1\n requested_bytes: 20\n parameters: 5\n " + "total_exec_micros: 1\n total_requested_bytes: 20\n total_parameters: " + "5\n device: \"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: " + "0\n total_float_ops: 0\n}\nchildren {\n name: \"conv2d_1/kernel\"\n " + "exec_micros: 2\n requested_bytes: 900\n parameters: 225\n " + "total_exec_micros: 2\n total_requested_bytes: 900\n total_parameters: " + "225\n device: \"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: " + "0\n total_float_ops: 0\n}\nfloat_ops: 0\ntotal_float_ops: 0\n", &expected)); EXPECT_EQ(expected.DebugString(), root.DebugString()); } @@ -144,16 +160,24 @@ TEST_F(TFProfStatsTest, TestFloatOps) { TFProfNode expected; CHECK(protobuf::TextFormat::ParseFromString( "name: \"_TFProfRoot\"\nexec_micros: 0\nrequested_bytes: " - "0\ntotal_exec_micros: 11\ntotal_requested_bytes: " - "5280\ntotal_parameters: 450\nchildren {\n name: \"Conv2D\"\n " - "exec_micros: 0\n requested_bytes: 432\n total_exec_micros: 0\n " - "total_requested_bytes: 432\n total_parameters: 0\n device: " - "\"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: 5832\n " - "total_float_ops: 5832\n}\nchildren {\n name: \"Conv2D_1\"\n " - "exec_micros: 10\n requested_bytes: 384\n total_exec_micros: 10\n " - "total_requested_bytes: 384\n total_parameters: 0\n device: " - "\"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: 4608\n " - "total_float_ops: 4608\n}\nfloat_ops: 0\ntotal_float_ops: 10440\n", + "0\ntotal_exec_micros: 96\ntotal_requested_bytes: " + "8656\ntotal_parameters: 370\nchildren {\n name: \"conv2d/BiasAdd\"\n " + "exec_micros: 12\n requested_bytes: 1440\n total_exec_micros: 12\n " + "total_requested_bytes: 1440\n total_parameters: 0\n device: " + "\"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: 360\n " + "total_float_ops: 360\n}\nchildren {\n name: \"conv2d/convolution\"\n " + "exec_micros: 60\n requested_bytes: 1440\n total_exec_micros: 60\n " + "total_requested_bytes: 1440\n total_parameters: 0\n device: " + "\"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: 19440\n " + "total_float_ops: 19440\n}\nchildren {\n name: \"conv2d_2/BiasAdd\"\n " + "exec_micros: 2\n requested_bytes: 640\n total_exec_micros: 2\n " + "total_requested_bytes: 640\n total_parameters: 0\n device: " + "\"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: 160\n " + "total_float_ops: 160\n}\nchildren {\n name: \"conv2d_2/convolution\"\n " + " exec_micros: 13\n requested_bytes: 640\n total_exec_micros: 13\n " + "total_requested_bytes: 640\n total_parameters: 0\n device: " + "\"/job:localhost/replica:0/task:0/cpu:0\"\n float_ops: 14400\n " + "total_float_ops: 14400\n}\nfloat_ops: 0\ntotal_float_ops: 34360\n", &expected)); EXPECT_EQ(expected.DebugString(), root.DebugString()); } @@ -183,8 +207,8 @@ TEST_F(TFProfStatsTest, TestShowTensorValue) { TFProfNode expected; CHECK(protobuf::TextFormat::ParseFromString( "name: \"_TFProfRoot\"\nexec_micros: 0\nrequested_bytes: " - "0\ntotal_exec_micros: 11\ntotal_requested_bytes: " - "5280\ntotal_parameters: 450\nfloat_ops: 0\ntotal_float_ops: 10440\n", + "0\ntotal_exec_micros: 96\ntotal_requested_bytes: " + "8656\ntotal_parameters: 370\nfloat_ops: 0\ntotal_float_ops: 34360\n", &expected)); EXPECT_EQ(expected.DebugString(), root.DebugString()); } diff --git a/tensorflow/tools/tfprof/internal/tfprof_tensor_test.cc b/tensorflow/tools/tfprof/internal/tfprof_tensor_test.cc index baa9fce1102..8c19910355b 100644 --- a/tensorflow/tools/tfprof/internal/tfprof_tensor_test.cc +++ b/tensorflow/tools/tfprof/internal/tfprof_tensor_test.cc @@ -55,7 +55,7 @@ class TFProfTensorTest : public ::testing::Test { }; TEST_F(TFProfTensorTest, Basics) { - Options opts(3, 0, 0, 0, 0, {".*"}, "name", {"Variable"}, {".*"}, {""}, + Options opts(3, 0, 0, 0, 0, {".*"}, "name", {"VariableV2"}, {".*"}, {""}, {".*"}, {""}, false, {"tensor_value"}, // show the tensor value. false); const TFProfNode& root = tf_stats_->PrintGraph("scope", opts); @@ -64,239 +64,176 @@ TEST_F(TFProfTensorTest, Basics) { CHECK(protobuf::TextFormat::ParseFromString( "name: \"_TFProfRoot\"\nexec_micros: 0\nrequested_bytes: " "0\ntotal_exec_micros: 0\ntotal_requested_bytes: 0\ntotal_parameters: " - "450\nchildren {\n name: \"DW\"\n exec_micros: 0\n requested_bytes: " - "0\n parameters: 162\n total_exec_micros: 0\n total_requested_bytes: " - "0\n total_parameters: 162\n float_ops: 0\n total_float_ops: 0\n " - "tensor_value {\n dtype: DT_FLOAT\n value_double: -0.00117808\n " - "value_double: -0.000709941\n value_double: -0.00174816\n " - "value_double: -0.000495372\n value_double: 0.000243039\n " - "value_double: -0.000126313\n value_double: -0.000663929\n " - "value_double: -0.000495198\n value_double: -0.000893934\n " - "value_double: -0.00179659\n value_double: 0.000408874\n " - "value_double: -0.00120166\n value_double: -0.00109484\n " - "value_double: -0.000200362\n value_double: 0.000726721\n " - "value_double: -0.000277568\n value_double: 0.00180584\n " - "value_double: 0.000997271\n value_double: -0.00185987\n " - "value_double: -0.00113401\n value_double: -0.000528852\n " - "value_double: -0.000197412\n value_double: 1.32871e-05\n " - "value_double: -0.000285896\n value_double: -0.000428898\n " - "value_double: -0.000424633\n value_double: 2.15488e-05\n " - "value_double: 0.00149753\n value_double: -0.000884576\n " - "value_double: -0.0013795\n value_double: -0.000650125\n " - "value_double: 0.00191612\n value_double: 4.71838e-05\n " - "value_double: 0.000400201\n value_double: 0.00239555\n " - "value_double: -0.00177706\n value_double: -0.000781899\n " - "value_double: -0.00145247\n value_double: 0.0020025\n " - "value_double: 0.000597419\n value_double: 0.00135456\n " - "value_double: 0.0015876\n value_double: -0.000993568\n " - "value_double: 0.0006509\n value_double: -0.000894533\n " - "value_double: -0.00129322\n value_double: 0.0003859\n " - "value_double: 0.000415186\n value_double: -0.000439212\n " - "value_double: 0.000442138\n value_double: 0.00212353\n " - "value_double: 0.000702953\n value_double: 0.000713424\n " - "value_double: -0.000304877\n value_double: -9.17046e-05\n " - "value_double: -0.000801103\n value_double: 0.000304854\n " - "value_double: -0.00070527\n value_double: -0.00106408\n " - "value_double: -0.000909906\n value_double: -4.49183e-05\n " - "value_double: 0.000104172\n value_double: -0.000438067\n " - "value_double: -0.000317689\n value_double: -0.000769914\n " - "value_double: -0.00157729\n value_double: 0.000220733\n " - "value_double: 0.00107268\n value_double: -0.000186449\n " - "value_double: -0.000807328\n value_double: 0.000456308\n " - "value_double: -0.000593729\n value_double: -0.000954873\n " - "value_double: -0.000268676\n value_double: 9.06328e-05\n " - "value_double: -0.000323473\n value_double: -0.000628768\n " - "value_double: 0.000664985\n value_double: 0.0020999\n " - "value_double: -0.000932228\n value_double: -0.00203203\n " - "value_double: 0.000565405\n value_double: 0.000167899\n " - "value_double: 0.00054897\n value_double: 0.000612407\n " - "value_double: -0.000619301\n value_double: 0.00169361\n " - "value_double: -0.000188057\n value_double: 0.000267652\n " - "value_double: -0.00127341\n value_double: -0.000218836\n " - "value_double: -0.000431722\n value_double: 5.41867e-05\n " - "value_double: 0.000296628\n value_double: 0.000819415\n " - "value_double: -0.000758993\n value_double: -0.000114477\n " - "value_double: 6.29219e-05\n value_double: 0.000726988\n " - "value_double: -0.00135974\n value_double: 2.28447e-05\n " - "value_double: 0.00120547\n value_double: -0.00136907\n " - "value_double: -0.00140188\n value_double: 0.000201145\n " - "value_double: -0.000774109\n value_double: 0.000798465\n " - "value_double: -0.00131861\n value_double: 3.08996e-05\n " - "value_double: -0.000637026\n value_double: 0.00228975\n " - "value_double: -0.000633757\n value_double: -0.00116047\n " - "value_double: 7.66039e-05\n value_double: 2.09167e-06\n " - "value_double: -0.000296448\n value_double: 0.000206795\n " - "value_double: 0.000674405\n value_double: -0.000722742\n " - "value_double: -9.32443e-05\n value_double: -0.00170917\n " - "value_double: -0.000505279\n value_double: 0.000628132\n " - "value_double: -0.00145929\n value_double: 0.00106077\n " - "value_double: -0.000796743\n value_double: 0.000498275\n " - "value_double: -0.0002914\n value_double: -0.00230622\n " - "value_double: -9.42872e-05\n value_double: 0.000200359\n " - "value_double: -0.00305027\n value_double: -0.0016218\n " - "value_double: 0.00137126\n value_double: -0.00215436\n " - "value_double: -0.000743827\n value_double: -0.00090007\n " - "value_double: -0.000762207\n value_double: -0.000149951\n " - "value_double: -0.0013102\n value_double: 0.00165781\n " - "value_double: 0.000343809\n value_double: -0.000826069\n " - "value_double: -4.67404e-05\n value_double: 0.0023931\n " - "value_double: 0.00165338\n value_double: -0.00050529\n " - "value_double: 0.000178771\n value_double: -0.000858287\n " - "value_double: -0.00157031\n value_double: -0.00165846\n " - "value_double: -0.000713672\n value_double: 0.00014357\n " - "value_double: 0.00203632\n value_double: -0.0010973\n " - "value_double: -9.89852e-05\n value_double: 0.000558808\n " - "value_double: 0.00087211\n value_double: 0.000661239\n " - "value_double: 0.000389605\n value_double: 0.00060653\n " - "value_double: -0.000330104\n }\n}\nchildren {\n name: \"DW2\"\n " - "exec_micros: 0\n requested_bytes: 0\n parameters: 288\n " + "370\nchildren {\n name: \"conv2d/bias\"\n exec_micros: 0\n " + "requested_bytes: 0\n parameters: 5\n total_exec_micros: 0\n " + "total_requested_bytes: 0\n total_parameters: 5\n float_ops: 0\n " + "total_float_ops: 0\n tensor_value {\n dtype: DT_FLOAT\n " + "value_double: 0\n value_double: 0\n value_double: 0\n " + "value_double: 0\n value_double: 0\n }\n}\nchildren {\n name: " + "\"conv2d/kernel\"\n exec_micros: 0\n requested_bytes: 0\n " + "parameters: 135\n total_exec_micros: 0\n total_requested_bytes: 0\n " + "total_parameters: 135\n float_ops: 0\n total_float_ops: 0\n " + "tensor_value {\n dtype: DT_FLOAT\n value_double: -0.113138\n " + "value_double: 0.261431\n value_double: 0.215777\n value_double: " + "0.24135\n value_double: -0.113195\n value_double: -0.212639\n " + "value_double: -0.0907301\n value_double: 0.0221634\n " + "value_double: 0.21821\n value_double: 0.22715\n value_double: " + "-0.108698\n value_double: 0.240911\n value_double: -0.138626\n " + "value_double: -0.144752\n value_double: -0.00962037\n " + "value_double: 0.0971008\n value_double: 0.00264764\n " + "value_double: -0.272929\n value_double: 0.0129845\n value_double: " + "0.0466554\n value_double: -0.229184\n value_double: 0.153576\n " + "value_double: -0.169218\n value_double: -0.112991\n value_double: " + "0.205739\n value_double: 0.257844\n value_double: 0.107455\n " + "value_double: -0.207914\n value_double: 0.15211\n value_double: " + "0.277932\n value_double: 0.145986\n value_double: -0.0883989\n " + "value_double: 0.167506\n value_double: 0.10237\n value_double: " + "0.0542143\n value_double: 0.0334378\n value_double: 0.159489\n " + "value_double: 0.246583\n value_double: 0.0154283\n value_double: " + "0.0872411\n value_double: -0.25732\n value_double: 0.0499355\n " + "value_double: 0.0266221\n value_double: 0.088801\n value_double: " + "-0.0794552\n value_double: -0.00383255\n value_double: " + "-0.165267\n value_double: 0.0271328\n value_double: 0.0729822\n " + " value_double: 0.200795\n value_double: 0.100276\n value_double: " + "0.285254\n value_double: -0.171945\n value_double: -0.0187411\n " + " value_double: -0.218729\n value_double: 0.233753\n value_double: " + "0.109184\n value_double: 0.247875\n value_double: -0.224632\n " + "value_double: 0.0940739\n value_double: 0.00663087\n " + "value_double: -0.075786\n value_double: -0.179992\n value_double: " + "-0.276016\n value_double: 0.261207\n value_double: -0.0658191\n " + " value_double: -0.0747132\n value_double: -0.0839638\n " + "value_double: -0.0825393\n value_double: 0.0915958\n " + "value_double: -0.195425\n value_double: -0.255836\n value_double: " + "-0.08745\n value_double: -0.181623\n value_double: -0.235936\n " + "value_double: 0.0205423\n value_double: 0.185447\n value_double: " + "-0.0691599\n value_double: -0.0451089\n value_double: -0.153922\n " + " value_double: -0.0279411\n value_double: 0.148915\n " + "value_double: -0.018026\n value_double: -0.144903\n value_double: " + "0.0370046\n value_double: 0.0764987\n value_double: 0.0586488\n " + " value_double: -0.222919\n value_double: 0.0238447\n " + "value_double: -0.106012\n value_double: -0.102202\n value_double: " + "-0.159347\n value_double: -0.0232876\n value_double: 0.109855\n " + " value_double: -0.141833\n value_double: 0.1376\n value_double: " + "-0.12413\n value_double: -0.208968\n value_double: 0.0758635\n " + "value_double: -0.217672\n value_double: -0.20153\n value_double: " + "-0.195414\n value_double: -0.18549\n value_double: 0.00298014\n " + " value_double: -0.279283\n value_double: 0.200084\n value_double: " + "-0.0968328\n value_double: -0.243\n value_double: 0.239319\n " + "value_double: -0.236288\n value_double: 0.169477\n value_double: " + "0.126673\n value_double: 0.182215\n value_double: -0.028243\n " + "value_double: 0.282762\n value_double: -0.165548\n value_double: " + "-0.0641245\n value_double: -0.186382\n value_double: 0.0329038\n " + " value_double: 0.271848\n value_double: 0.084653\n value_double: " + "-0.108163\n value_double: 0.247094\n value_double: 0.192687\n " + "value_double: 0.171922\n value_double: -0.187649\n value_double: " + "0.251253\n value_double: 0.272077\n value_double: 0.19068\n " + "value_double: 0.220352\n value_double: -0.255741\n value_double: " + "0.110853\n value_double: 0.146625\n value_double: 0.167754\n " + "value_double: 0.249554\n }\n}\nchildren {\n name: \"conv2d_1/bias\"\n " + " exec_micros: 0\n requested_bytes: 0\n parameters: 5\n " "total_exec_micros: 0\n total_requested_bytes: 0\n total_parameters: " - "288\n float_ops: 0\n total_float_ops: 0\n tensor_value {\n dtype: " - "DT_FLOAT\n value_double: 0.000704577\n value_double: " - "0.000127421\n value_double: 0.00105952\n value_double: " - "0.000423765\n value_double: -0.00025461\n value_double: " - "-0.000857203\n value_double: 0.000693494\n value_double: " - "0.000282214\n value_double: 0.00106185\n value_double: " - "-0.000836552\n value_double: -0.00116766\n value_double: " - "0.000733674\n value_double: -0.000669601\n value_double: " - "-0.000275175\n value_double: -0.000428215\n value_double: " - "-0.000495715\n value_double: -0.000125887\n value_double: " - "-0.000715204\n value_double: -0.00108936\n value_double: " - "0.000738267\n value_double: 0.000376081\n value_double: " - "0.00191442\n value_double: 0.001423\n value_double: -0.00093811\n " - " value_double: -5.91421e-05\n value_double: -0.000221507\n " - "value_double: -0.000104555\n value_double: -0.00069682\n " - "value_double: -0.000278325\n value_double: -0.00122748\n " - "value_double: -0.00112411\n value_double: -0.000440511\n " - "value_double: -0.000392247\n value_double: -0.000419606\n " - "value_double: -0.00167063\n value_double: -0.000988578\n " - "value_double: -0.00040159\n value_double: 0.00238918\n " - "value_double: -0.000892898\n value_double: -0.000875976\n " - "value_double: 0.00154401\n value_double: -0.000719911\n " - "value_double: 0.000753941\n value_double: -0.000119961\n " - "value_double: -0.000305115\n value_double: 9.97947e-05\n " - "value_double: -0.00128908\n value_double: -0.000584184\n " - "value_double: -0.000734685\n value_double: -0.00146612\n " - "value_double: 0.000670802\n value_double: 0.000924219\n " - "value_double: -0.000154409\n value_double: 0.000198231\n " - "value_double: -0.000340742\n value_double: -0.00159646\n " - "value_double: -1.19382e-05\n value_double: 0.00165203\n " - "value_double: 0.0017085\n value_double: -0.000199614\n " - "value_double: 0.000529526\n value_double: 0.000769364\n " - "value_double: 0.00135369\n value_double: 0.00132873\n " - "value_double: 0.000451174\n value_double: 0.000255218\n " - "value_double: 0.00102891\n value_double: -0.00160068\n " - "value_double: 0.000324269\n value_double: -0.000492347\n " - "value_double: 0.000925301\n value_double: 0.00281998\n " - "value_double: -0.000826404\n value_double: -0.000602903\n " - "value_double: 0.00126559\n value_double: 0.000924364\n " - "value_double: -9.19827e-05\n value_double: -5.59275e-05\n " - "value_double: 0.00107971\n value_double: -9.91756e-05\n " - "value_double: 0.000864708\n value_double: 0.00121747\n " - "value_double: 0.00146338\n value_double: 0.000186883\n " - "value_double: -0.00168195\n value_double: -0.00062029\n " - "value_double: 0.000658127\n value_double: 0.00115682\n " - "value_double: -0.00178359\n value_double: 0.000685606\n " - "value_double: -0.000503373\n value_double: -0.000312999\n " - "value_double: 0.000335383\n value_double: -1.08597e-05\n " - "value_double: -8.2499e-05\n value_double: -0.000469726\n " - "value_double: -0.00170868\n value_double: 0.000118957\n " - "value_double: -0.000460736\n value_double: -5.56372e-05\n " - "value_double: -0.00110148\n value_double: 0.00059123\n " - "value_double: 0.000386339\n value_double: -0.00139967\n " - "value_double: -0.000835664\n value_double: 0.00103421\n " - "value_double: -0.00104296\n value_double: -0.000687497\n " - "value_double: 1.1338e-05\n value_double: 0.00176484\n " - "value_double: 0.000531523\n value_double: -0.000986387\n " - "value_double: -0.00114152\n value_double: 0.000256744\n " - "value_double: 0.000228425\n value_double: 0.00116583\n " - "value_double: 0.0002726\n value_double: -0.00100828\n " - "value_double: -0.000950376\n value_double: -0.00229074\n " - "value_double: -0.000348272\n value_double: -0.000526032\n " - "value_double: -0.000133703\n value_double: 0.000310979\n " - "value_double: -0.00199278\n value_double: -0.000874469\n " - "value_double: -0.000631466\n value_double: 0.0010534\n " - "value_double: 0.00134646\n value_double: -0.00172743\n " - "value_double: 0.00131031\n value_double: -0.000697506\n " - "value_double: 0.000286747\n value_double: 0.000140759\n " - "value_double: 0.000568707\n value_double: 0.000108177\n " - "value_double: -0.00207337\n value_double: -0.00138146\n " - "value_double: 0.000483162\n value_double: -0.00167096\n " - "value_double: -0.000465813\n value_double: 0.00067724\n " - "value_double: 2.08388e-05\n value_double: -0.00203279\n " - "value_double: 7.8429e-05\n value_double: 0.00161337\n " - "value_double: -0.000269005\n value_double: 0.000217822\n " - "value_double: 0.000599886\n value_double: 0.000317549\n " - "value_double: 0.00146597\n value_double: -0.00210947\n " - "value_double: -0.000823917\n value_double: -6.83766e-05\n " - "value_double: 0.000656085\n value_double: 0.000117134\n " - "value_double: -0.000390405\n value_double: 2.39565e-05\n " - "value_double: 0.00104837\n value_double: -0.000563671\n " - "value_double: 0.000634073\n value_double: -0.000554531\n " - "value_double: 0.000677971\n value_double: -0.000596207\n " - "value_double: -0.00103335\n value_double: 0.000645199\n " - "value_double: 0.00162195\n value_double: 0.000239246\n " - "value_double: 0.00113519\n value_double: 0.000787431\n " - "value_double: -0.000471688\n value_double: -0.000216625\n " - "value_double: -0.000537156\n value_double: 0.000551816\n " - "value_double: 0.00094337\n value_double: -0.000708127\n " - "value_double: 0.000956955\n value_double: -0.000904936\n " - "value_double: -0.000424413\n value_double: 0.000106455\n " - "value_double: -0.000443952\n value_double: 0.000185436\n " - "value_double: 0.000944397\n value_double: -0.000760572\n " - "value_double: 0.000560002\n value_double: 4.09886e-05\n " - "value_double: -0.00075076\n value_double: -0.000701856\n " - "value_double: -0.000234851\n value_double: -0.000131515\n " - "value_double: -0.000761718\n value_double: -0.000267808\n " - "value_double: -0.00039682\n value_double: 0.000542953\n " - "value_double: -0.000817685\n value_double: 0.00103851\n " - "value_double: -0.000427176\n value_double: 0.000517784\n " - "value_double: -0.000823552\n value_double: -0.000742637\n " - "value_double: 0.000529213\n value_double: -0.000372805\n " - "value_double: 1.85745e-05\n value_double: 0.00139891\n " - "value_double: -0.000128417\n value_double: -0.000404316\n " - "value_double: -0.000671571\n value_double: 0.000490311\n " - "value_double: -0.00118493\n value_double: -0.000897118\n " - "value_double: 0.000939601\n value_double: 0.000376399\n " - "value_double: 0.0014709\n value_double: 0.000134806\n " - "value_double: -0.000294469\n value_double: -0.000569142\n " - "value_double: 0.00127266\n value_double: -0.00140936\n " - "value_double: 0.000870083\n value_double: 0.000287246\n " - "value_double: 0.000537685\n value_double: 0.000125569\n " - "value_double: 0.000360276\n value_double: -0.000186268\n " - "value_double: 0.0011141\n value_double: -0.000605185\n " - "value_double: -0.0016281\n value_double: -0.000552758\n " - "value_double: -0.000196755\n value_double: -0.00265188\n " - "value_double: 0.000480997\n value_double: 0.00018776\n " - "value_double: -0.00199234\n value_double: 0.000959982\n " - "value_double: 0.00040334\n value_double: -0.000693596\n " - "value_double: 0.00157678\n value_double: -0.00134499\n " - "value_double: 0.00121909\n value_double: -0.000328734\n " - "value_double: 0.000148554\n value_double: -0.000209509\n " - "value_double: -0.000266303\n value_double: -0.00134084\n " - "value_double: 5.21371e-05\n value_double: 0.0005329\n " - "value_double: -0.000168858\n value_double: -0.00074875\n " - "value_double: 0.000959397\n value_double: -0.00159476\n " - "value_double: -0.000368838\n value_double: 0.0006077\n " - "value_double: -0.00117243\n value_double: -0.00146013\n " - "value_double: 0.00031519\n value_double: -0.000167911\n " - "value_double: 0.000482571\n value_double: -0.000752268\n " - "value_double: -0.00042363\n value_double: 0.00121219\n " - "value_double: -0.000208159\n value_double: 0.000128531\n " - "value_double: -0.000406308\n value_double: -0.000242663\n " - "value_double: -3.96673e-05\n value_double: 0.00144854\n " - "value_double: -0.000787328\n value_double: -0.000401958\n " - "value_double: 0.00114091\n value_double: -0.000739546\n " - "value_double: 0.000483236\n value_double: -0.000916945\n " - "value_double: -0.00129577\n value_double: -0.00186504\n " - "value_double: 0.000806804\n value_double: -0.000152251\n " - "value_double: 0.000662576\n value_double: -0.000533236\n " - "value_double: 0.00151019\n value_double: 0.00127805\n " - "value_double: 0.00115399\n value_double: -0.00130876\n " - "value_double: 2.99457e-06\n value_double: 0.000820777\n " - "value_double: 0.000878393\n value_double: -0.000562642\n " - "value_double: -0.00070442\n value_double: -0.00066277\n " - "}\n}\nfloat_ops: 0\ntotal_float_ops: 0\n", + "5\n float_ops: 0\n total_float_ops: 0\n tensor_value {\n dtype: " + "DT_FLOAT\n value_double: 0\n value_double: 0\n value_double: " + "0\n value_double: 0\n value_double: 0\n }\n}\nchildren {\n " + "name: \"conv2d_1/kernel\"\n exec_micros: 0\n requested_bytes: 0\n " + "parameters: 225\n total_exec_micros: 0\n total_requested_bytes: 0\n " + "total_parameters: 225\n float_ops: 0\n total_float_ops: 0\n " + "tensor_value {\n dtype: DT_FLOAT\n value_double: -0.00170514\n " + "value_double: 0.138601\n value_double: -0.224822\n value_double: " + "-0.0848449\n value_double: 0.170551\n value_double: 0.147666\n " + "value_double: -0.0570606\n value_double: -0.132805\n " + "value_double: -0.172013\n value_double: 0.249707\n value_double: " + "0.149734\n value_double: 0.0365986\n value_double: -0.0923146\n " + " value_double: -0.17745\n value_double: -0.169978\n value_double: " + "-0.173298\n value_double: -0.110407\n value_double: 0.1469\n " + "value_double: 0.0419576\n value_double: 0.0391093\n value_double: " + "-0.137381\n value_double: 0.212642\n value_double: -0.067034\n " + "value_double: -0.0727709\n value_double: -0.0276531\n " + "value_double: 0.218212\n value_double: 0.0596479\n value_double: " + "-0.0468102\n value_double: -0.0250467\n value_double: -0.20391\n " + " value_double: -0.233801\n value_double: 0.135615\n " + "value_double: -0.182124\n value_double: 0.254205\n value_double: " + "0.0819146\n value_double: -0.146696\n value_double: -0.20095\n " + "value_double: -0.250555\n value_double: -0.226406\n value_double: " + "0.0421331\n value_double: 0.0361264\n value_double: -0.188558\n " + " value_double: -0.0222711\n value_double: -0.128226\n " + "value_double: -0.148305\n value_double: -0.137598\n value_double: " + "-0.041647\n value_double: -0.0574933\n value_double: 0.122506\n " + " value_double: 0.0415936\n value_double: 0.244957\n value_double: " + "0.00372121\n value_double: -0.139939\n value_double: 0.250411\n " + " value_double: -0.23848\n value_double: -0.0717569\n " + "value_double: -0.00884159\n value_double: 0.135616\n " + "value_double: -0.0493895\n value_double: 0.254308\n value_double: " + "-0.181419\n value_double: -0.114829\n value_double: -0.172638\n " + " value_double: 0.06984\n value_double: -0.086704\n value_double: " + "0.168515\n value_double: -0.152275\n value_double: -0.230775\n " + "value_double: -0.254366\n value_double: -0.115397\n value_double: " + "0.0418207\n value_double: -0.199607\n value_double: -0.167001\n " + " value_double: -0.187238\n value_double: 0.0196097\n " + "value_double: 0.201653\n value_double: -0.143758\n value_double: " + "0.167187\n value_double: -0.129141\n value_double: 0.230154\n " + "value_double: -0.119968\n value_double: -0.121843\n value_double: " + "-0.0118565\n value_double: 0.0285747\n value_double: -0.0593699\n " + " value_double: -0.175214\n value_double: -0.211524\n " + "value_double: 0.167042\n value_double: -0.216357\n value_double: " + "-0.0218886\n value_double: -0.244211\n value_double: 0.175301\n " + " value_double: 0.0654932\n value_double: -0.0419763\n " + "value_double: -0.103275\n value_double: -0.0848433\n " + "value_double: -0.0845421\n value_double: -0.00269318\n " + "value_double: -0.145978\n value_double: -0.217061\n value_double: " + "-0.0937043\n value_double: 0.235796\n value_double: -0.0893372\n " + " value_double: 0.000827968\n value_double: 0.0172743\n " + "value_double: -0.234205\n value_double: -0.0867703\n " + "value_double: 0.131704\n value_double: 0.134143\n value_double: " + "-0.162257\n value_double: -0.129706\n value_double: 0.0763288\n " + " value_double: 0.156988\n value_double: 0.220033\n value_double: " + "-0.179884\n value_double: 0.066697\n value_double: 0.212322\n " + "value_double: -0.0961226\n value_double: -0.11223\n value_double: " + "0.249944\n value_double: 0.115673\n value_double: -0.100203\n " + "value_double: 0.125645\n value_double: -0.256104\n value_double: " + "0.0996534\n value_double: 0.167306\n value_double: -0.00700775\n " + " value_double: 0.242145\n value_double: 0.088406\n value_double: " + "0.0975334\n value_double: -0.0309525\n value_double: -0.0422794\n " + " value_double: 0.20739\n value_double: 0.113992\n value_double: " + "0.253818\n value_double: -0.0857835\n value_double: 0.223902\n " + "value_double: 0.10291\n value_double: 0.103091\n value_double: " + "-0.177502\n value_double: -0.0258242\n value_double: -0.130567\n " + " value_double: -0.15999\n value_double: -0.101484\n " + "value_double: 0.0188813\n value_double: 0.160626\n value_double: " + "0.0467491\n value_double: 0.193634\n value_double: -0.0910993\n " + " value_double: 0.0440249\n value_double: -0.255389\n " + "value_double: -0.240244\n value_double: -0.213171\n value_double: " + "0.175978\n value_double: -0.0251202\n value_double: 0.0943941\n " + " value_double: -0.196194\n value_double: 0.163395\n value_double: " + "-0.010777\n value_double: -0.0626751\n value_double: -0.246234\n " + " value_double: 0.0662063\n value_double: 0.120589\n " + "value_double: 0.237322\n value_double: 0.0849243\n value_double: " + "-0.066591\n value_double: 0.0512236\n value_double: -0.144309\n " + " value_double: -0.235415\n value_double: -0.0565311\n " + "value_double: 0.0882529\n value_double: -0.215923\n value_double: " + "-0.0873292\n value_double: -0.0691103\n value_double: " + "-0.00238678\n value_double: 0.147789\n value_double: -0.124451\n " + " value_double: 0.205044\n value_double: -0.0596834\n " + "value_double: 0.0268479\n value_double: 0.0857448\n value_double: " + "-0.0923855\n value_double: -0.0960547\n value_double: 0.169869\n " + " value_double: 0.16988\n value_double: -0.032271\n value_double: " + "-0.120731\n value_double: -0.199086\n value_double: 0.181199\n " + "value_double: 0.00897732\n value_double: -0.257469\n " + "value_double: -0.135556\n value_double: -0.149663\n value_double: " + "-0.00990398\n value_double: 0.221165\n value_double: 0.0327134\n " + " value_double: -0.0392821\n value_double: -0.0614503\n " + "value_double: 0.246602\n value_double: -0.171692\n value_double: " + "-0.150835\n value_double: -0.13854\n value_double: -0.244668\n " + "value_double: 0.0790781\n value_double: 0.212678\n value_double: " + "0.0782059\n value_double: -0.177888\n value_double: -0.165914\n " + " value_double: -0.164251\n value_double: 0.165007\n value_double: " + "0.239615\n value_double: -0.217642\n value_double: -0.219843\n " + "value_double: 0.0828398\n value_double: 0.00272235\n " + "value_double: -0.0323662\n value_double: -0.255953\n " + "value_double: 0.237298\n value_double: -0.0896481\n value_double: " + "-0.0605349\n value_double: 0.231679\n value_double: -0.123842\n " + " value_double: 0.0858642\n value_double: 0.23111\n value_double: " + "0.0491742\n }\n}\nfloat_ops: 0\ntotal_float_ops: 0\n", &expected)); EXPECT_EQ(expected.DebugString(), root.DebugString()); }