Intel┬о рд╕рдВрдЧреАрддрдХрд╛рд░ XE 2015 рдмреАрдЯрд╛: рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдареАрдХ рд╣реИ!



рдЕрдВрдд рдореЗрдВ, рдЗрдВрдЯреЗрд▓ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреАрдЯрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд╣реИрдВред рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдХрд▓рдХ рдХреА рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рд╣рдореЗрдВ рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд▓рд╛рдПрдЧреАред



рддреЛ, 2015 рдореЗрдВ, рдХрдореНрдкреЛрдЬрд╝рд░ рдХреЗ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ C ++ рдФрд░ рдлреЛрд░рдЯреНрд░рд╛рди рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ v.15.0 рдмреАрдЯрд╛, рдореИрде рдХрд░реНрдиреЗрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА 11.2 рдмреАрдЯрд╛, рдЗрдВрдЯреАрдЧреНрд░реЗрдЯреЗрдб рдкрд░рдлреЙрд░рдореЗрдВрд╕ рдкреНрд░рд╛рдЗрдорд┐рдЯрд┐рд╡реНрд╕ 8.1 рдФрд░ рдереНрд░реЗрдбрд┐рдВрдЧ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХреНрд╕ 4.2 рдЕрдкрдбреЗрдЯ 3 рд╢рд╛рдорд┐рд▓ рдереЗред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ - рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдУрдПрд╕ рдПрдХреНрд╕ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЛрдИ рд╕рдВрдХрд▓рдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рдХ рд╕рдВрд╕реНрдХрд░рдг 14.1 рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдкрд┐рдЫрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг 14.0 рд╣реИ)ред



рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдПрдХреАрдХреГрдд рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ - рдЗрдВрдЯреЗрд▓ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд╣рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд┐рдЫрд▓реЗ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреАред рдЪрд▓реЛ рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдмрд╛рд░ рд╡рд╣ рдкреНрд░рдХрд╛рд╢ рдХреЛ рджреЗрдЦреЗрдЧрд╛ред рдЕрд╡рд╕рд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рдФрд░ рдПрдХ рдЕрд▓рдЧ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХреЗ рдпреЛрдЧреНрдп рд╣реИред рдЗрдВрдЯреЗрд▓ Xeon Phi рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди IPP рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣рд╛рдБ рдХреЛрдИ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, OS X рдкрд░ рдирдП "icl" рдФрд░ "icl ++" рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреНрд▓реИрдВрдЧ / LLVM рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВред рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП, -ansi-alias рд╡рд┐рдХрд▓реНрдк рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдерд╛, рдФрд░ C ++ 11 рдорд╛рдирдХ рдЕрдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИред



рд╢рд╛рдпрдж рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдиреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛, рдЬреИрд╕реЗ рдСрдкреНрдЯ-рд░рд┐рдкреЛрд░реНрдЯ, рд╡реАрд╕реА-рд░рд┐рдкреЛрд░реНрдЯ, рдУрдкрди-рд░рд┐рдкреЛрд░реНрдЯ рдФрд░ рдкреИрд░-рд░рд┐рдкреЛрд░реНрдЯред рд╣рдо рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред



рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддреЗ рд╣реИрдВред рд╡рд░реНрд╖реЛрдВ рд╕реЗ, рд╣рдордиреЗ рдЗрди рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реБрдирд╛ рд╣реИ - рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рдкрдардиреАрдп, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рд╡реЗрдХреНрдЯрд░рд╛рдЗрдЬреЗрд╢рди рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЪрд┐рдВрддрд┐рдд рд╣реИ, рдЬреЛ рдЫреЛрд░реЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЫреЛрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдХреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ:



void foo0(int n, int *a) { for (int i = 0; i < n; ++i) { if (n & 1) { a[i] = a[i+1]; } } } void foo1(int n, int *a) { // will not be vectorized due to data dependency. for (int i = 1; i < n; ++i) { if (n & 1) { a[i] = a[i-1]; } } }
      
      





рд╕рдВрдХрд▓рдХ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдХреЗ, рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЗрд╕рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рд╣реЛ рдЧрдпрд╛ред



 >icl -Qopt-report -c test.cpp
      
      





рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдВрддрд░рд┐рдХ, рдбреАрдмрдЧрд┐рдВрдЧ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рдорд┐рд▓рд╛:



 <;-1:-1;IPO ROUTINE ATTRIBUTES PROPAGATION;;0> ROUTINE ATTRIBUTE PROPAGATION TOTALS: RDECL: NSE(0->0), AR(0->0) ENTRY: SE(0->0), DSE(0->0), AR(0->0) <;-1:-1;IPO MODREF;;0> CI-MOD: TOTAL(2):OTHER(2) CI-REF: TOTAL(2):OTHER(2) <;-1:-1;IPO;;0>
      
      





рд╕рд╣рдордд рд╣реВрдБ, рд╕рдВрдХрд▓рдХ рдХреЗ рдХреЛрдб рдХреЗ рдмрд┐рдирд╛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЖрдИрдкреАрдУ рдЕрдиреБрдХреВрд▓рди, рдПрдХ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдереЛрдбрд╝рд╛ рдХрдо рд╣рдо рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:



 INLINING OPTION VALUES: -Qinline-factor: 100 -Qinline-min-size: 30 -Qinline-max-size: 230 -Qinline-max-total-size: 2000 -Qinline-max-per-routine: 10000 -Qinline-max-per-compile: 500000 < test.cpp;2:8;IPO INLINING;?foo0@@YAXHPEAH@Z;0> INLINING REPORT: (?foo0@@YAXHPEAH@Z) [1/2=50.0%]
      
      





рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлреВ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдХреНрдЯрд░рдХрд░рдг рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ:



 HPO VECTORIZER REPORT (?foo0@@YAXHPEAH@Z) LOG OPENED ON Wed May 14 14:38:33 2014 < test.cpp;-1:-1;hpo_vectorization;?foo0@@YAXHPEAH@Z;0> HPO Vectorizer Report (?foo0@@YAXHPEAH@Z) test.cpp(3:5-3:5):VEC:?foo0@@YAXHPEAH@Z: vectorization support: unroll factor set to 2 LOOP WAS VECTORIZED loop was not vectorized: nonstandard loop is not a vectorization candidate HLO REPORT LOG OPENED ON Wed May 14 14:38:33 2014
      
      





рдФрд░ HLO рд░рд┐рдкреЛрд░реНрдЯ:



 <test.cpp;-1:-1;hlo;?foo0@@YAXHPEAH@Z;0> High Level Optimizer Report (?foo0@@YAXHPEAH@Z) Predicate unswitching Report: (Condition and loop line numbers) <test.cpp;3:4;hlo_opt_pred;?foo0@@YAXHPEAH@Z;0> Condition at line 4 hoisted from loop at line 3
      
      





рдореИрдВ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЬрд╛рд░реА рдирд╣реАрдВ рд░рдЦреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдмреЗрд╣рдж рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╣рдореЗрдВ рдХрд┐рди рд░реБрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдвреЗрд░ рд╕реЗ рджреЗрдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдлрд┐рд░ рднреА, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрднреА рднреА рд╕рдВрднрд╡ рдерд╛ - рдореБрдЭреЗ рд▓реВрдк рд╡реЗрдХреНрдЯрд░рд╛рдЗрдЬреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдЬреЛ рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рд┐рдП рдереА, рдФрд░ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рд▓реВрдк рдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓реА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реВрдк рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╕реНрдерд┐рддрд┐ рдлреВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдкреНрд░рдзрд╛рдирддрд╛ рдЕрдзрд┐рдХ рджрд┐рдЦрддреА рд╣реИред



рдЗрд╕рд▓рд┐рдП, рдХрд▓рд╛рдИ рдХреЗ рдПрдХ рдЧреБрдЪреНрдЫреЗ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рд╕рдВрдХрд▓рдХ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрдВрд╕реЛрд▓ рдХреЛ рдЦреЛрд▓рд╛ рдФрд░ рдРрд╕рд╛ рд╣реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:



 >icl -Qopt-report -c test.cpp
      
      





рдкрд░рд┐рдгрд╛рдо рдиреЗ рдореБрдЭреЗ рдХреБрдЫ рд╣рдж рддрдХ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреБрдЫ рднреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╕рдВрдХрд▓рдХ рдлрд╛рдЗрд▓ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлреЙрд▓реНрдЯ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП .optrpt рдФрд░ рдпрд╣ рдХрд╣рддрд╛ рд╣реИ:



 icl: remark #10398: optimization reports are generated in *.optrpt files in the output directory
      
      





рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ, рдФрд░ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ test.optrpt рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЖрдк рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ STDERR рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд░рд┐рдЯрд░реНрди-рдСрдл-рд░рд┐рдкреЛрд░реНрдЯ-рдлрд╝рд╛рдЗрд▓: stderr рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЦреИрд░, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ рдХреНрдпрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдлреЙрд░реНрдо рдореЗрдВ рд╕рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА <; - 1: -1; IPO MODREF ;; 0> рдФрд░ рдЗрддрдиреЗ рдкрд░ рддреБрд░рдВрдд рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд░рд┐рдкреЛрд░реНрдЯ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╣реИ рдФрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ IPO рдЕрдиреБрдХреВрд▓рди рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ:



 Report from: Interprocedural optimizations [ipo] IPO OPTIMIZATION REPORT: INLINING OPTION VALUES: -Qinline-factor: 100 -Qinline-min-size: 30 -Qinline-max-size: 230 -Qinline-max-total-size: 2000 -Qinline-max-per-routine: 10000 -Qinline-max-per-compile: 500000
      
      





рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╢рдмреНрдж рдЬреЛрдбрд╝реЗ рдЧрдП рдереЗ рдХрд┐ рдХреМрди рд╕реА рд░рд┐рдкреЛрд░реНрдЯ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╣реЛрддреА рд╣реИред рдЖрдЗрдП рдмрддрд╛рддреЗ рд╣реИрдВ рдРрд╕реЗ:

 Begin optimization report for: foo0 Report from: Interprocedural optimizations [ipo] INLINE REPORT: (foo0) [1] Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, vec, par] тАж =========================================================================== Begin optimization report for: foo1 Report from: Interprocedural optimizations [ipo] INLINE REPORT: (foo1) [2] Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, vec, par] тАж
      
      





рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рд╡реЗрдХреНрдЯрд░ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдкреНрд░рд╕рдиреНрди рдерд╛:

 LOOP BEGIN at C:\Users\ivorobts\Desktop\opt-report\test.cpp(13,5) Predicate Optimized v1 remark #25426: Invariant Condition at line 14 hoisted out of this loop remark #15046: loop was not vectorized: existence of vector dependence remark #25443: unrolled with remainder by 2 remark #25014: Number of Array Refs Scalar Replaced In Loop: 2 LOOP END
      
      





рдкреНрд░рддреНрдпреЗрдХ рдЪрдХреНрд░ рдХреЗ рд▓рд┐рдП, рдЕрдм LOOP BEGIN ... LOOP END рдлрд╝реЙрд░реНрдо рдХреЗ "рдмреАрдХрди" рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рднреЗрдж рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╡реИрд╕реЗ, рдСрдкреНрдЯ-рд░рд┐рдкреЛрд░реНрдЯ рд╡рд┐рдХрд▓реНрдк рдХреЛ vec-report7 рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛, рдкрд╣рд▓реЗ рдпрд╣ рдХреЗрд╡рд▓ рд╡реИрд╢реНрд╡реАрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рдФрд░ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╕рдВрднрд╡ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рдеред

рд╕рдВрдХрд▓рдХ рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде, vec-report рдЕрднреА рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд▓реНрдж рд╣реА "рд╕рджрд┐рдпреЛрдВ" рдЪрд▓рд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдСрдкреНрдЯ-рд░рд┐рдкреЛрд░реНрдЯ-рдЪрд░рдг рдХреА рд╕рднреА рд╢рдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: vecред рд╣рд╛рдВ, рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЕрдзрд┐рдХрддрдо рд╕реНрддрд░ рдЕрдм 7 рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди 5. рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 14.0 рдореЗрдВ, рд╕реЗрдЯрд┐рдВрдЧ 7 (рдЕрдзрд┐рдХрддрдо) рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп, рдкрдардиреАрдп рд░реВрдк рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЕрдм рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЕрдзрд┐рдХрддрдо рд╕реНрддрд░ рдЕрдм 5 рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдХреВрд▓ рдореЗрдВ рд╣реИред



рддреЛ, рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:



 icl -Qopt-report:vec5 -c test.cpp
      
      





рдУрд╣ ... рд╡реИрд╕реЗ рднреА, рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рд╣рдо рдЖрдИрдкреАрдУ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рджреЗрдЦрддреЗ рд╣реИрдВред рдПрдХ рдмрдЧ рдЬреЛ рдЬрд▓реНрдж рд╣реА рдареАрдХ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ vec-report рдиреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд┐рдпрд╛, рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╡реЗрдХреНрдЯрд░-рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдерд╛:



 >icl -Qvec-report5 -c test.cpp
      
      





рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреВрд░ рдордд рдЬрд╛рдУ - рдЬрд▓реНрдж рд╣реА рдЙрдиреНрд╣реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕реНрддрд░ 5 рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдлреВ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓реВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓реА:



 LOOP BEGIN at C:\Users\ivorobts\Desktop\opt-report\test.cpp(3,5) remark #15134: vectorization support: reference a has aligned access remark #15135: vectorization support: reference a has unaligned access remark #15127: vectorization support: unaligned access used inside loop body remark #15002: LOOP WAS VECTORIZED remark #36058: entire loop may be executed in remainder remark #36065: unmasked aligned unit stride stores: 1 remark #36066: unmasked unaligned unit stride loads: 1 remark #36091: --- begin vector loop cost summary --- remark #36092: scalar loop cost: 8 remark #36093: vector loop cost: 1.250 remark #36094: estimated potential speedup: 5.820 remark #36095: lightweight vector operations: 3 remark #36104: --- end vector loop cost summary --- LOOP END
      
      





рд╡реИрд╕реЗ, рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИ - рдЬрд▓реНрдж рд╣реА рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрди рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреЛ рд╕реБрдВрджрд░ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдкреЗрди рдФрд░ рдЦреБрд▓реА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрд╡рд╕рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ (рдХреБрдВрдЬреА Qopt-рд░рд┐рдкреЛрд░реНрдЯ-рд╕реНрд╡рд░реВрдк: рдмрдирд╛рдо), рдЕрдЧрд▓реЗ рдЕрджреНрдпрддрди рдореЗрдВред рдЕрдЪреНрдЫрд╛, рд░реБрдХреЛред рдЗрд╕ рдмреАрдЪ, рд╣рд░ рдХреЛрдИ 11 рдЬреБрд▓рд╛рдИ рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдмреАрдЯрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рднрд╛рдЧ рд▓реЗрдХрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рд╣рд┐рдд рдЗрдВрдЯреЗрд▓ рдЯреВрд▓реНрд╕ рдХреА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рд╢реБрднрдХрд╛рдордирд╛рдПрдВ!



All Articles