• Nenhum resultado encontrado

O p ti m iz a ç õ e s n o G n u C C o m p il e r (1 ) (e m h tt p :/ /g c c .g n u .o rg /o n lin e d o c s /g c c -3 .2 /g c c / )

N/A
N/A
Protected

Academic year: 2023

Share "O p ti m iz a ç õ e s n o G n u C C o m p il e r (1 ) (e m h tt p :/ /g c c .g n u .o rg /o n lin e d o c s /g c c -3 .2 /g c c / )"

Copied!
5
0
0

Texto

(1)

AJProença,Sistemasde Computação,LCC, UMinho, 2007/081

Avaliação de Desempenho no IA32(5)

E s tr u tu ra d o t e m a A v a li a ç ã o d e D e s e m p e n h o ( IA 3 2 ) 1 . A a v a lia ç ã o d e s is te m a s d e c o m p u ta ç ã o 2 . T é c n ic a s d e o p ti m iz a ç ã o d e c ó d ig o ( IM ) 3 . T é c n ic a s d e o p ti m iz a ç ã o d e h a rd w a re 4 . T é c n ic a s d e o p ti m iz a ç ã o d e c ó d ig o ( D M ) 5 . O u tr a s t é c n ic a s d e o p ti m iz a ç ã o 6 . M e d iç ã o d e t e m p o s

AJProença,Sistemasde Computação,LCC, UMinho, 2007/082

A n á li s e d e t é c n ic a s d e o p ti m iz a ç ã o (2 ) A n á lis e d e t é c n ic a s d e o p ti m iz a ç ã o ( s /w ) – té c n ic a s d e o p ti m iz a ç ã o d e c ó d ig o (i n d e p . m á q u in a ) • já v is to .. . – té c n ic a s d e o p ti m iz a ç ã o d e c ó d ig o (d e p . m á q u in a ) • d e p e n d e n te s d o p ro c e s s a d o r (j á v is to .. .) – o u tr a s t é c n ic a s d e o p ti m iz a ç ã o • n a c o m p il a ç ã o : o p ti m iz a ç õ e s e fe c tu a d a s p e lo G c c • n a i d e n ti fi c a ç ã o d o s " g a rg a lo s " d e d e s e m p e n h o – c o d e p ro fi li n g – u s o d u m p ro fi le r p a ra a p o io à o p ti m iz a ç ã o – le i d e A m d a h l • d e p e n d e n te s d a h ie ra rq u ia d a m e m ó ri a – a l o c a li d a d e e s p a c ia l e t e m p o ra l d u m p ro g ra m a – in fl u ê n c ia d a c a c h e n o d e s e m p e n h o

AJProença,Sistemasde Computação,LCC, UMinho, 2007/083

O p t i o n s T h a t C o n t r o l O p t i m i z a t i o n O p t i o n s T h a t C o n t r o l O p t i m i z a t i o n

Theseoptionscontrolvarioussortsofoptimizations:Theseoptionscontrolvarioussortsofoptimizations: --OO --O1O1 Optimize.Optimizingcompilationtakessomewhatmoretime,andaOptimize.Optimizingcompilationtakessomewhatmoretime,andalotlot morememoryforalargefunction.(...)morememoryforalargefunction.(...) WithWith--O,thecompilertriestoreducecodesizeandexecutiontime,O,thecompilertriestoreducecodesizeandexecutiontime, withoutperforminganyoptimizationsthattakeagreatdealofwithoutperforminganyoptimizationsthattakeagreatdealof compilationtime.compilationtime. --O2O2 Optimizeevenmore.GCCperformsnearlyallsupportedoptimizatiOptimizeevenmore.GCCperformsnearlyallsupportedoptimizationsons thatdonotinvolveaspacethatdonotinvolveaspace--speedtradeoff.(...)thisoptionspeedtradeoff.(...)thisoption increasesbothcompilationtimeandtheperformanceofthegenerincreasesbothcompilationtimeandtheperformanceofthegeneratedated code.code. --O2turnsonalloptionaloptimizationsexceptforloopunrollingO2turnsonalloptionaloptimizationsexceptforloopunrolling,, functioninlining,andregisterrenaming.functioninlining,andregisterrenaming. --O3O3 Optimizeyetmore.Optimizeyetmore.--O3turnsonalloptimizationsspecifiedbyO3turnsonalloptimizationsspecifiedby--O2andO2and alsoturnsonthealsoturnsonthe--finlinefinline--functionsandfunctionsand--frenamefrename--registersoptions.registersoptions.

O0--O0 Donotoptimize.Donotoptimize. Os--Os Optimizeforsize.Optimizeforsize.

Osenablesall--Osenablesall

O2optimizationsthatdonot--O2optimizationsthatdonot typicallyincreasecodesize.Italsoperformsfurtheroptimizattypicallyincreasecodesize.Italsoperformsfurtheroptimizationsions designedtoreducecodesize.designedtoreducecodesize.

O p ti m iz a ç õ e s n o G n u C C o m p il e r (1 ) (e m h tt p :/ /g c c .g n u .o rg /o n lin e d o c s /g c c -3 .2 /g c c / )

AJProença,Sistemasde Computação,LCC, UMinho, 2007/084

O p t i m i z a O p t i m i z a çç õ e s p a r a c õ e s p a r a c óó d i g o c o m d i g o c o m a r r a y s a r r a y s e e l o o p s l o o p s ::

funrollloops--funroll--loops UnrollloopswhosenumberofiterationscanbedeterminedatUnrollloopswhosenumberofiterationscanbedeterminedat compiletimeoruponentrytotheloop.compiletimeoruponentrytotheloop.--funrollfunroll--loopsimpliesloopsimplies bothboth fstrengthreduceand--fstrength--reduceand

freruncseafterloop.Thisoption--frerun--cse--after--loop.Thisoption makescodelarger,andmayormaynotmakeitrunfaster.makescodelarger,andmayormaynotmakeitrunfaster. --funrollfunroll--allall--loopsloops Unrollallloops,eveniftheirnumberofiterationsisUnrollallloops,eveniftheirnumberofiterationsis uncertainwhentheloopisentered.Thisusuallymakesprogramsuncertainwhentheloopisentered.Thisusuallymakesprograms runmoreslowly.runmoreslowly.--funrollfunroll--allall--loopsimpliesthesameoptionsasloopsimpliesthesameoptionsas --funrollfunroll--loops,loops,

fprefetchlooparrays--fprefetch--loop--arrays Ifsupportedbythetargetmachine,generateinstructionstoIfsupportedbythetargetmachine,generateinstructionsto prefetchmemorytoimprovetheperformanceofloopsthataccessprefetchmemorytoimprovetheperformanceofloopsthataccess largearrays.largearrays.

fmoveallmovables--fmove--all--movables ForcesallinvariantcomputationsinloopstobemovedoutsideForcesallinvariantcomputationsinloopstobemovedoutside theloop.theloop. --freducefreduce--allall--givsgivs ForcesallgeneralinductionvariablesinloopstobestrengthForcesallgeneral--inductionvariablesinloopstobestrength--

reduced.reduced.

O p ti m iz a ç õ e s n o G n u C C o m p il e r (2 ) (e m h tt p :/ /g c c .g n u .o rg /o n lin e d o c s /g c c -3 .2 /g c c / )

(2)

AJProença,Sistemasde Computação,LCC, UMinho, 2007/085

O p t i m i z a O p t i m i z a çç õ e s p a r a i n s e r õ e s p a r a i n s e r çç ã o d e f u n ã o d e f u n çç õ e s e m õ e s e m -- l i n h a : l i n h a :

--finlinefinline--functionsfunctions Integrateallsimplefunctionsintotheircallers.TheIntegrateallsimplefunctionsintotheircallers.The compilerheuristicallydecideswhichfunctionsaresimplecompilerheuristicallydecideswhichfunctionsaresimple enoughtobeworthintegratinginthisway.Ifallcallstoaenoughtobeworthintegratinginthisway.Ifallcallstoa givenfunctionareintegrated,andthefunctionisdeclaredgivenfunctionareintegrated,andthefunctionisdeclared static,thenthefunctionisnormallynotoutputasassemblerstatic,thenthefunctionisnormallynotoutputasassembler codeinitsownright.codeinitsownright. --finlinefinline--limit=limit=nn Bydefault,gcclimitsthesizeoffunctionsthatcanbeBydefault,gcclimitsthesizeoffunctionsthatcanbe inlined.Thisflagallowsthecontrolofthislimitforinlined.Thisflagallowsthecontrolofthislimitfor functionsthatareexplicitlymarkedasinline(iemarkedwithfunctionsthatareexplicitlymarkedasinline(iemarkedwith theinlinekeyword...)theinlinekeyword...)nnisthesizeoffunctionsthatcanbeisthesizeoffunctionsthatcanbe inlinedinnumberofpseudoinstructions(notcountinginlinedinnumberofpseudoinstructions(notcounting parameterhandling).Thedefaultvalueofparameterhandling).Thedefaultvalueofnnis600.Increasingis600.Increasing thisvaluecanresultinmoreinlinedcodeatthecostofthisvaluecanresultinmoreinlinedcodeatthecostof compilationtimeandmemoryconsumption.Decreasingusuallycompilationtimeandmemoryconsumption.Decreasingusually makesthecompilationfasterandlesscodewillbeinlinedmakesthecompilationfasterandlesscodewillbeinlined (whichpresumablymeansslowerprograms).(whichpresumablymeansslowerprograms).

O p ti m iz a ç õ e s n o G n u C C o m p il e r (3 ) (e m h tt p :/ /g c c .g n u .o rg /o n lin e d o c s /g c c -3 .2 /g c c / )

AJProença,Sistemasde Computação,LCC, UMinho, 2007/086

A c A c çç ã o ã o g c c – O 2 – p g p r o g . c – o p r o g . / p r o g • e x e c u ta c o m o h a b it u a l/ , m a s t b g e ra o f ic h e ir o g m o n . o u t g p r o f p r o g • G N U p ro fi le r : a p a rt ir d e g m o n . o u t g e ra i n fo rm a ç ã o q u e c a ra c te ri z a o p e rf il d o p ro g ra m a F a c to s F a c to s – c a lc u la ( a p ro x im a d a m e n te ) o t e m p o g a s to e m c a d a f u n ç ã o – m é to d o p a ra c á lc u lo d o t e m p o ( m a is d e ta lh e a d ia n te ) • p e ri o d ic a m e n te ( ~ c a d a 1 0 m s ) in te rr o m p e o p ro g ra m a • d e te rm in a q u e f u n ç ã o e s tá a s e r e x e c u ta d a n e s s e m o m e n to • in c re m e n ta o s e u t e m p o ri z a d o r d e u m i n te rv a lo ( p o r e x ., 1 0 m s ) – p a ra c a d a f u n ç ã o m a n té m a in d a u m c o n ta d o r (n º d e v e z e s q u e f o i in v o c a d a )

O p ti m iz a ç ã o s e le c ti v a d u m p ro g ra m a : a c a ra c te ri z a ç ã o d o s e u p e rf il , c o d e p ro fi li n g

AJProença,Sistemasde Computação,LCC, UMinho, 2007/087

U s o d o c o d e p ro fi li n g (1 ) U s o d o U s o d o G P r o f G P r o f e m 3 p a s s o s : e m 3 p a s s o s : – c o m p il a r c o m i n d ic a ç ã o e x p lí c it a ( - p g ) • e x .: a n á lis e d o c o m b i n e 1 _ s u m _ i n t (v e c to r c o m 1 0

7

e le m e n to s ) g c c - O 2 - p g c o m b i n e 1 _ s u m _ i n t . c – o c o m b 1 – e x e c u ta r o p ro g ra m a . / c o m b 1 • v a i g e ra r a u to m a ti c a m e n te o f ic h e ir o g m o n . o u t – in v o c a r o G P ro f p a ra a n a li s a r o s d a d o s e m g m o n . o u t g p r o f c o m b 1 . e x e [ > c o m b 1 . t x t ] • a n á lis e p a rc ia l d o f ic h e ir o c o m b 1 . t x t a s e g u ir …

AJProença,Sistemasde Computação,LCC, UMinho, 2007/088

A n A n áá li s e d a p ri m e ir a p a rt e d e li s e d a p ri m e ir a p a rt e d e c o m b 1 . t x t c o m b 1 . t x t ::

Flatprofile: Eachsamplecountsas 0.01 seconds. % cumulativeself selftotal timesecondssecondscallss/calls/callname 39.33 2.58 2.58 _mcount 38.57 5.11 2.53 20000000 0.00 0.00 get_vec_element 12.65 5.94 0.83 mcount 6.40 6.36 0.42 2 0.21 1.57 combine1 3.05 6.56 0.20 20000002 0.00 0.00 vec_length 0.00 6.56 0.00 2 0.00 0.00 access_counter 0.00 6.56 0.00 1 0.00 0.00 get_counter 0.00 6.56 0.00 1 0.00 0.00 new_vec 0.00 6.56 0.00 1 0.00 0.00 start_counter

U s o d o c o d e p ro fi li n g (2 )

(3)

AJProença,Sistemasde Computação,LCC, UMinho, 2007/089

A n A n áá li s e e m li s e e m rv o re d a e x e c u ã o d o p ro g áá rv o re d a e x e c u çç ã o d o p ro g . .

(e m (e m c o m b 1 . t x t ) c o m b 1 . t x t ) ::

index% timeself childrencalledname 0.42 2.73 2/2 main[2] [1]100.0 0.42 2.73 2 combine1 [1] 2.53 0.00 20000000/20000000 get_vec_element[3] 0.20 0.00 20000002/20000002 vec_length[4] --- <spontaneous> [2] 100.0 0.00 3.15 main[2] 0.42 2.73 2/2 combine1 [1] 0.00 0.00 1/1 new_vec[11] 0.00 0.00 1/1 start_counter[12] 0.00 0.00 1/1 get_counter[10] --- 2.53 0.00 20000000/20000000 combine1 [1] [3] 80.3 2.53 0.00 20000000 get_vec_element[3] --- 0.20 0.00 20000002/20000002 combine1 [1] [4] 6.3 0.20 0.00 20000002 vec_length[4] --- 0.00 0.00 1/2 start_counter[12] 0.00 0.00 1/2 get_counter[10] [9] 0.0 0.00 0.00 2 access_counter[9] …

U s o d o c o d e p ro fi li n g (3 )

AJProença,Sistemasde Computação,LCC, UMinho, 2007/0810

V a n ta g e n s V a n ta g e n s – a ju d a a i d e n ti fi c a r o s g a rg a lo s d e d e s e m p e n h o – p a rt ic u la rm e n te ú ti l e m s is te m a s c o m p le x o s c o m m u it o s c o m p o n e n te s L im it a L im it a çç õ e s õ e s – a p e n a s a n a li s a o d e s e m p e n h o p a ra o c o n ju n to d e d a d o s d e te s te – a m e to d o lo g ia d e m e d iç ã o d e t e m p o s é ru d im e n ta r • a p e n a s u s á v e l e m p ro g ra m a s c o m t e m p o s d e e x e c > 3 s e g

U s o d o c o d e p ro fi li n g : a lg u m a s o b s e rv a ç õ e s

AJProença,Sistemasde Computação,LCC, UMinho, 2007/0811

O g a n h o n o d e s e m p e n h o – s p e e d u p - o b ti d o c o m a m e lh o ri a d o t e m p o d e e x e c u ç ã o d e u m a p a rt e d o s is te m a , e s tá li m it a d o p e la f ra c ç ã o d e t e m p o q u e e s s a p a rt e d o s is te m a p o d e s e r u ti li z a d a . e m q u e f – fr a c ç ã o d e u m p ro g ra m a q u e é m e lh o ra d o , s – s p e e d u p d a p a rt e m e lh o ra d a

L e i d e A m d a h l O v e ra ll s p e e d u p = E x .1 S e 1 0 % d e u m p ro g e x e c u ta 9 0 x m a is r á p id o , e n tã o O v e ra ll s p e e d u p = 1 .1 1

E x .2 S e 9 0 % d e u m p ro g e x e c u ta 9 0 x m a is r á p id o , e n tã o O v e ra ll s p e e d u p = 9 .0 9

T e m p o _ e x e c

antigo

T e m p o _ e x e c

novo

1 ( 1 - f ) + f / s =

AJProença,Sistemasde Computação,LCC, UMinho, 2007/0812

110

100

1.000

10.000

100.000

1.000.000

10.000.000

100.000.000 19801985199019952000 year

ns Disk seek time DRAM access time SRAM access time CPU cycle time

V e lo c id a d e d o C P U v e rs u s m e m ó ri a : a d if e re n ç a a u m e n ta

(4)

AJProença,Sistemasde Computação,LCC, UMinho, 2007/0813

P ri n c íp io d a L o c a li d a d e : – p ro g ra m a s t e n d e m a r e u s a r d a d o s e i n s tr u ç õ e s p ró x im o s d a q u e le s q u e f o ra m r e c e n te m e n te u s a d o s , o u q u e f o ra m r e c e n te m e n te r e fe re n c ia d o s p o r e le s • L o c a li d a d e E s p a c ia l : it e n s e m l o c a liz a ç õ e s c o n tí g u a s te n d e m a s e r re fe re n c ia d o s e m t e m p o s p ró x im o s • L o c a li d a d e T e m p o ra l : it e n s r e c e n te m e n te r e fe re n c ia d o s s e rã o p ro v a v e lm e n te r e fe re n c ia d o s n o f u tu ro p ró x im o E x e m p lo d a L o c a li d a d e : •

Dados

– o s e le m e n to s d o

array

s ã o r e fe re n c ia d o s e m i n s tr u ç õ e s s u c e s s iv a s : – a v a ri á v e l

sum

é a c e d id a e m c a d a i te ra ç ã o : •

Instruções

– a s i n s tr u ç õ e s s ã o a c e d id a s s e q u e n c ia l/ : – o c ic lo é re p e ti d a m e n te a c e d id o :

sum=0; for(i=0;i<n;i++) sum+=a[i]; returnsum; LocalidadeEspacial LocalidadeEspacial LocalidadeTemporal

LocalidadeTemporal

P ri n c íp io d a l o c a li d a d e

AJProença,Sistemasde Computação,LCC, UMinho, 2007/0814

CacheL1 tem linhas decache retiradas da memóriacacheL2 Registos no CPU têm palavras retiradas dacacheno nível 1 (Level1, L1) CacheL2 tem linhas decache retiradas da memóriacacheL3

registos cacheL1 on-chip(SRAM) memória principal (DRAM) memória secundária local (discos locais) memória secundária remota (distributedfile systems, webservers) cacheL2 on-chip(SRAM)

L0: L1: L2: L3: L4: L6:

Componentes menores mais rápidos, e mais caros (por byte) cacheL3 off-chip(SRAM) L5:

Componentes maiores mais lentos, e mais baratos (por byte) CacheL2 tem linhas decache retiradas da memória principal Memprinctem páginas retiradas de discos locais Discos loctem ficheiros retirados de discos em servidores de rede remotos

O rg a n iz a ç ã o h ie rá rq u ic a d a m e m ó ri a

AJProença,Sistemasde Computação,LCC, UMinho, 2007/0815

0123 4567 891011 12131415

O componenteno nívelk+1, maior, +lento e +barato, estáorganizadoemblocos

Os dados sãocopiadosentreníveis emblocos(unidadesde transferência)

89143 O componenteno nívelk, menor, +rápidoe +caro, fazo cachede um sub-conj de blocos do nívelk+1

Nívelk: Nívelk+1:4

4

410 10 10

A c a c h e n u m a h ie ra rq u ia d e m e m ó ri a : in tr o d u ç ã o

AJProença,Sistemasde Computação,LCC, UMinho, 2007/0816

Pedido 14Pedido 12

U m p ro g ra m a p e d e p e lo o b je c to d , q u e e s tá a rm a z e n a d o n u m b lo c o b C a c h e h it – o p ro g ra m a e n c o n tr a b n a c a c h e n o n ív e l k . P o r e x ., b lo c o 1 4 C a c h e m is s – b n ã o e s tá n o n ív e l k , lo g o a c a c h e d o n ív e l k d e v e b u s c á -l o d o n ív e l k + 1 . P o r e x ., b lo c o 1 2 – s e a c a c h e d o n ív e l k e s tá c h e ia , e n tã o u m d o s b lo c o s d e v e s e r s u b s ti tu íd o ( re ti ra d o ); q u a l? • P la c e m e n t p o lic y : o n d e c o lo c a r o n o v o b lo c o ? P o r e x ., b m o d 4 • R e p la c e m e n t p o lic y : q u e b lo c o d e v e s e r re ti ra d o ? P o r e x ., L R U

93 0123 4567 891011 12131415

Nível k: Nível k+1:

1414 12

14 4*

4*12

12 0123 Pedido 12

4*4*12

A c a c h e n u m a h ie ra rq u ia d e m e m ó ri a : c o n c e it o s

(5)

AJProença,Sistemasde Computação,LCC, UMinho, 2007/0817

M is s R a te – p e rc e n ta g e m d e r e fe rê n c ia s à m e m ó ri a q u e n ã o t iv e ra m s u c e s s o n a c a c h e ( m is s e s / a c e s s o s ) – v a lo re s t íp ic o s : • 3 -1 0 % p a ra L 1 • p o d e s e r m e n o r p a ra L 2 ( < 1 % ), d e p e n d e n d o d o t a m a n h o , e tc . H it T im e – te m p o p a ra a c a c h e e n tr e g a r o s d a d o s a o p ro c e s s a d o r (i n c lu i o t e m p o p a ra v e ri fi c a r s e a l in h a e s tá n a c a c h e ) – v a lo re s t íp ic o s : • 1 c ic lo d e c lo c k p a ra L 1 • 3 -8 c ic lo s d e c lo c k p a ra L 2 M is s P e n a lt y – te m p o e x tr a n e c e s s á ri o p a ra i r b u s c a r u m a l in h a a p ó s m is s • ti p ic a m e n te 2 5 -1 0 0 c ic lo s p a ra a c e d e r à m e m ó ri a p ri n c ip a l

A c a c h e n u m a h ie ra rq u ia d e m e m ó ri a : m é tr ic a s d e d e s e m p e n h o

AJProença,Sistemasde Computação,LCC, UMinho, 2007/0818

R e fe re n c ia r re p e ti d a m e n te u m a v a ri á v e l é p o s it iv o ! (l o c a li d a d e t e m p o ra l) R e fe re n c ia r e le m e n to s c o n s e c u ti v o s d e u m a rr a y é p o s it iv o ! (l o c a li d a d e e s p a c ia l)

Exemplos

:

–cachefria, palavras de 4-bytes, blocos (linhas) decachecom 4-palavras intsumarrayrows(inta[M][N]) { inti,j,sum=0; for(i=0;i<M;i++) for(j=0;j<N;j++) sum+=a[i][j]; returnsum; } intsumarraycols(inta[M][N]) { inti,j,sum=0; for(j=0;j<N;j++) for(i=0;i<M;i++) sum+=a[i][j]; returnsum; } Miss rate =Miss rate =1/4 = 25%100%

A c a c h e n u m a h ie ra rq u ia d e m e m ó ri a : re g ra s n a c o d if ic a ç ã o d e p ro g ra m a s

Referências

Documentos relacionados

When, in contrast, all sectors are engaged in modern production, total production value added will be equal to:  N mF N mF m mF mx Y  j    j    11 Due to the fixed cost,