Optimalizalas temahoz
Andras Tantos
andras_tantos at yahoo.com
Fri Mar 25 01:05:46 CET 2005
Hali!
En is igy olvasom azt a grafikont: a fordito csak ~60%-ra nyomta le a CPU
felhasznalast, a tobbi nem rajta mult.
A DSP algoritmusok, foleg a fix-pontos tortekkel dolgozok nagyon nem jol
irhatok le C-ben, vagy barmely mas, altalam ismert magas szintu nyelvben.
Ezekben a szorzas mindig zart muvelet az adott tipusra nezve (azaz ket
16-bites szam szorzata 16 bites), es ez persze nem igaz. Az igazsag az, hogy
valoszinuleg meg lehetne csinalni a forditokat ugy, hogy a C-fele
korulirasat felismerjek ezeknek a muveleteknek, meglassak mogotte a logikat,
es igy ra tudjak huzni az optimalis ASM utasitasokat, de erre meg nem lattam
peldat. Ehhez meg kellene hatarozniuk minden egyes valtozo osszes lehetseges
erteket, de legalabbis azt a tartomanyt, amiben mozoghatnak. Ezek utan
kiderulne, hogy a cikkben is leirt kod:
int32 MULT32(int32 a, int 32 b) {
int32 c;
c = ((long long)a * b) << 1;
return c >> 32; // azt hiszem itt el is irtak a peldat
}
valojaban nem 64-bites szorzast (43 ciklus) es eltolast (28 ciklus) jelent
(hiszen mind 'a', mind pedig 'b' felso 32 bitje elojel bit) igy aztan a
szorzas valojaban 32-bites, csak az eredmenyek nem az also 32 bitjet
hasznaljuk fel. Ha ezeket levonjuk a 80 ciklusbol, majd hozza adjuk a
szukseges ket plusz utasitast (32-bites szorzas, es 32-bites eltolas) a ket
oldal kozotti kulonbseg 0 ciklus! Meg a cikkben is leirjak, hogy a reszleges
ASM atiras nyeresege foleg ilyenekbol adodik, es mint ilyen specifikus az
alkalmazasra es a processzorra nezve.
Tulajdon keppen nem is ertem miert nem csinaljak meg ezt a forditok. Foleg
DSP-kre, amiknel ez igen fontos es hasznos lenne. Az 'aliasing analysis'
ehhez rendkivul hasonlo dolgok nyilvantartast igenyli.
Egyebkent az is kiderul a tablazatbol, hogy 3 nagy nyereseg volt a gyakorlat
soran:
- Fordito optimalizalas: ~2x sebesseg novekedes
- 'Partition memory efficiently': ~4x sebessegnovekedes
- Reszleges ASM atiras: ~2x sebesseg novekedes
Az utolso, valoszinuleg foleg a fentiekhez hasonlo problemakbol adodik, a
masodik pedig az algoritmus es a memoria-layout processzorhoz igazitasat
jelenti, ami nem nyelv-fuggo - C-ben ugyanugy meg lehet csinalni, mint
ASM-ban.
Osszefoglalva, legalabbis ebbol az irasbol az derul ki, hogy messze a
legnagyobb nyereseget azzal erjuk el, ha olyan megvalositast (alg., adat
kiosztas, egyebek) valasztunk, ami jol illeszkedik a processzrohoz. Az is
kuderul, hogy ha az algoritmus (egy resze) nem irhato le jol a kivalasztott
magas-szintu nyelven, illetve a fordito eleg bugyuta ahhoz, hogy ne ismerje
fel ezt a leirast, *akkor* lehet nyerni az ASM atirason. Dehat szerintem
ebben semmi ujdonsag nincs...
Udv,
Tantos Andras
> udv!
>
> nem akarlak kiabranditani, de nekem ugy tunik, hogy a compilerre csak az
> elso lepcso esik, ami azert szinten nem kutya az 50%-aval. a masodik es
> harmadik lepcso mar a
> juzer beavatkozodasat igenyli. a system optimization lepcso mintha a
> memoria particionalast jelentene, azaz mennyi L1 cache-t meg mennyi
> sdramot teszel a proci melle. plusz lehet programbol szorakozni a cache
> lockinggal. vegul pedig a harmadik lepcso kezi ujrairast jelent (isr-ek
> meg a diszkret koszinusz trafo asm-ben, mert c-ben az ilyesmi "roppant
> lassu"). mindez az abra folott par sorban korvonalazasra kerul. csodak
> azert nincsenek, a 7% durva lenne, ha jobban belegondolsz.
>
> --
> G
>
> On Thu, 24 Mar 2005, Fuzesi Arnold wrote:
>
>> Valoban az!
>> 100% proc kihasznaltsagot 5-7%-ra lenyomja a compiler harom lepcsoben.
>> Kerdes hogy ennyire szarul forditotta opt nelkul az eredeti kodot, vagy
>> ennyire utos a blackfin+compiler paros. Utobbira tippelnek...
>>
>> Kezd tetszeni ez a joszag. :)
>> Mennyibe kerul, tudsz egy arat mondani?
>>
>> Arnold
>> ----- Original Message -----
>> From: "VFX" <info at vfx.hu>
>> To: "elektro" <elektro at tesla.hu>
>> Sent: Thursday, March 24, 2005 7:54 PM
>> Subject: Optimalizalas temahoz
>>
>>
>>> Hali!
>>>
>>>
>> http://www.analog.com/library/analogDialogue/archives/39-02/open_source.html
>>>
>>> Erdekes a tablazat az oldal kozepen...
>>>
>>> UDV. VFX.
>
> -----------------------------------
> Szponzorunk: http://tonerbolt.hu/
>
More information about the Elektro
mailing list