On 6/19/19 10:50 AM, luoxhu wrote: > Hi Martin, > > On 2019/6/18 18:21, Martin Liška wrote: >> On 6/18/19 3:45 AM, Xiong Hu Luo wrote: >>> 6.2. SPEC2017 peakrate: >>> 523.xalancbmk_r (+4.87%); 538.imagick_r (+4.59%); 511.povray_r >>> (+13.33%); >>> 525.x264_r (-5.29%). >> >> Can you please elaborate what are the key indirect call promotions that are >> needed >> to achieve such a significant speed up? Are we talking about calls to >> virtual functions >> or C-style indirect calls? > > For benchmark 511.povray_r, no speculations and indirect call promotion > happened from povray_r.wpa.069i.profile_estimate: > > 994 171 indirect calls trained. > 995 0 (0.00%) have common target. > 996 0 (0.00%) targets was not found. > 997 0 (0.00%) targets had parameter count mismatch. > 998 0 (0.00%) targets was not in polymorphic call target list. > 999 0 (0.00%) speculations seems useless. > 1000 0 (0.00%) speculations produced. > > > After applying my patch: > > 1259 171 indirect calls trained. > 1260 60 (35.09%) have common target. > 1261 41 (23.98%) targets was not found. > 1262 0 (0.00%) targets had parameter count mismatch. > 1263 0 (0.00%) targets was not in polymorphic call target list. > 1264 57 (33.33%) speculations seems useless. > 1265 5 (2.92%) speculations produced. > > Below indirect calls conversion will take effect, as all of these calls > are hot functions, performance boosts a lot by the combination optimization > of later stage ipa/inline/clone. > > ls *.*i.* | xargs grep "Expanding speculative call" > povray_r.ltrans5.076i.inline:Expanding speculative call of > create_ray.constprop/75445 -> Inside_CSG_Intersection/76219 count: 291083 > (adjusted) > povray_r.ltrans5.076i.inline:Expanding speculative call of > create_ray.constprop/75445 -> Inside_Plane/76221 count: 387811 (adjusted) > povray_r.ltrans5.076i.inline:Expanding speculative call of > initialize_ray_container_state_tree/54575 -> Inside_CSG_Intersection/75997 > count: 3784081 (adjusted) > povray_r.ltrans5.076i.inline:Expanding speculative call of > initialize_ray_container_state_tree/54575 -> Inside_Plane/76062 count: > 5041557 (adjusted) > povray_r.ltrans5.076i.inline:Expanding speculative call of Trace/54564 -> > All_CSG_Intersect_Intersections/76183 count: 8983544 (adjusted) > povray_r.ltrans5.076i.inline:Expanding speculative call of Trace/54564 -> > All_Sphere_Intersections/76184 count: 31488162 (adjusted) > povray_r.ltrans5.076i.inline:Expanding speculative call of Trace/54564 -> > Inside_Plane/76197 count: 19044626 (adjusted) > povray_r.ltrans5.076i.inline:Expanding speculative call of > All_CSG_Intersect_Intersections/9843 -> All_Sphere_Intersections/76011 count: > 22068935 (adjusted) > povray_r.ltrans5.076i.inline:Expanding speculative call of > All_CSG_Intersect_Intersections/9843 -> Inside_Plane/76031 count: 13347702 > (adjusted) > povray_r.ltrans6.076i.inline:Expanding speculative call of > block_light_source/26304 -> All_CSG_Intersect_Intersections/76130 count: > 5434215 (adjusted) > povray_r.ltrans6.076i.inline:Expanding speculative call of > block_light_source/26304 -> All_Sphere_Intersections/76139 count: 19047432 > (adjusted) > povray_r.ltrans6.076i.inline:Expanding speculative call of > block_light_source/26304 -> Inside_Plane/76134 count: 11520241 (adjusted) > povray_r.ltrans6.076i.inline:Expanding speculative call of > Inside_CSG_Union/9845 -> Inside_Plane/76081 count: 830538 (adjusted) > povray_r.ltrans6.076i.inline:Expanding speculative call of > All_CSG_Union_Intersections/9842 -> All_Plane_Intersections/76049 count: > 1636158 (adjusted) > >> >> Thanks, >> Martin >> >
Thank you very much for the numbers. Today, I'm going to prepare the generalization of single-value counter to track N values. Martin