mboost-dp1

SXC - flaivoloka

Software kan bryde Moores lov

- Via NY Times Bits - , redigeret af Net_Srak , indsendt af Aputech

De fleste kender Moores lov som forudsiger, at integrerede kredsløb fordobler sin ydelse hver 18. måned. Den stammer fra 1958 og bliver overholdt den dag i dag, men ifølge en undersøgelse, så er noget lignende muligt for software, bare bedre.

Undersøgelsen afslører at det i nogle tilfælde er muligt at optimere software, så det langt overgår Moores lov. I et dokumenteret tilfælde for et stykke test-software over 15 år, kunne man konstatere, at det var blevet 43 millioner gange hurtigere. de 1.000 gange stammede fra bedre hardware, resten fra optimeret software.

Det er især i algoritme-tunge programmer som for eksempel stemmegenkendelse, oversættelsessoftware, billedegenkendelse og kunstig intelligens, hvor der er meget at hente.

De store forbedringer hænger dog ofte også sammen med hardware. Her tænkes ikke i rå regnekraft, men at for eksempel processorer får optimerede instruktionssæt, som tillader mere effektiv kode.





Gå til bund
Gravatar #1 - DarkwingDK
19. mar. 2011 07:37
Faktisk siger Moores lov intet om at ydelsen fordobles.
Moores lov siger at antallet af transistorer fordobles ca. hvert andet år.
Det har INTET med software at gøre. At software så kan optimeres og få forbedret ydelse, er en godt nyhed, men har intet med Moores lov at gøre.

[/flueknep off]
Gravatar #2 - Coney
19. mar. 2011 07:57
#1 Hurtigere end mig:P Men ja loven siger:

"The number of transistors that can be placed inexpensively on an integrated circuit doubles approximately every two years"

Det er rimeligt nemt at se at software intet kan gøre ved det.
Gravatar #3 - MOA
19. mar. 2011 08:22
#1 + #2 Men det er da meget sjovt at sammenligne, jeg har lige været ude og måle min altan med en vægt, den var 5.3 kg lang og 2.4 kg bred.

Det bliver dog lidt svært senere når konen skal bage, har lagt min tommelstok hvor vægten plejer at stå...
Gravatar #4 - Viol8r_dk
19. mar. 2011 08:33
#1+#2: Tilgengæld så kan det påvirke Kurzweils Law of Accerelerating Returns i positiv retning...
Gravatar #5 - HenrikAppel
19. mar. 2011 08:55
1# 2# og 4#
1 og 2 har ret kan ikke se hvorfor der skrives at softwaren ændre på transistore..
4 Du er inde på det rigtige.
Gravatar #6 - skeptiker
19. mar. 2011 09:01
#5 haha Det er flot du ka finde ud af at gi de andre ret :D
Gravatar #7 - Slettet Bruger [788048719]
19. mar. 2011 09:12
#6 haha det er flot du ka finde ud af at sige det er flot at han ka
finde ud af at gi de andre ret :D
Gravatar #8 - Lobais
19. mar. 2011 09:12
43.000 gange i software lyder som en algoritmeforbedring.
Gravatar #9 - fe950
19. mar. 2011 10:58
Man kan sammenligne med at en kvindes krop(antal transistorer) OG evner(algoritmer) kan optimere sex-oplevelsen :)

Ja ja.. jeg ved godt at jeg er afstumpet i min tankegang.
Gravatar #10 - Slettet Bruger [788048719]
19. mar. 2011 11:07
dunno, prøv med biler
Gravatar #11 - DarkwingDK
19. mar. 2011 11:19
SlettetBruger (10) skrev:
dunno, prøv med biler


Hvis man fordobler antallet af hjul... Nej..

Hvis man fordobler antallet af sæder... Nej det ville forringe kraftigt når man skal høre på dobbelt så mange "Du skulle have drejet til venstre.." eller "Du kører for stærkt" eller "Er vi der snart".

Hvis man fordobler antallet af hestekræfter hvert andet år, så forbedres chaufførens køreevner?

Ok. Jeg giver op. Jeg du'r ikke til bil sammenligningerne :p
Gravatar #12 - nielsbuus
19. mar. 2011 11:43
Kunne man eventuelt sammenligne med Nazityskland?
Gravatar #13 - cgt
19. mar. 2011 11:56
#12: Der er ikke noget der hedder "nazisme". Den korrekte betegnelse er "nationalsocialisme". Derfor hed det ikke "Nazityskland".
Gravatar #14 - Slettet Bruger [788048719]
19. mar. 2011 12:02
Nationalsocialistiske Tyskland
Gravatar #15 - F1skr
19. mar. 2011 12:07
cgt (13) skrev:
#12: Der er ikke noget der hedder "nazisme". Den korrekte betegnelse er "nationalsocialisme". Derfor hed det ikke "Nazityskland".


Du ved tydeligvis hvad #12 snakker om. Hvor siger han at det hed nazityskland?
Gravatar #16 - onetreehell
19. mar. 2011 12:11
Hvis man får hjulene til at dreje hurtigere på en bil... så drejer hjulene hurtigere!
Gravatar #17 - chris
19. mar. 2011 13:06
hvis software bryder loven...
hvem skal så i retten?
Gravatar #18 - graynote
19. mar. 2011 13:35
chris (17) skrev:
hvis software bryder loven...
hvem skal så i retten?


Forhåbentlig Sidney Lee. Han er så nederen.
Gravatar #19 - tentakkelmonster
19. mar. 2011 13:41
Gid al software blev hurtigere med tiden. Desværre har ting det med at blive større og mere komplekse, og derfor også tungere at danse med. Nogen gang i så slem grad, at det helt kompenserer for at hardwaren er blevet hurtigere.
Gravatar #20 - kasperd
19. mar. 2011 13:59
Artiklen var på slashdot allerede sidste år. Og på det tidspunkt kommenterede jeg, at forbedringer i algoritmer kun gælder for det specifikke problem algoritmen håndterer.

http://slashdot.org/comments.pl?sid=1924194&ci...

Hvis algoritmen kan gøres så meget hurtigere har den muligvis ikke været særligt god fra start af.

Som det også bemærkes længere nede i tråden, så afhænger det af omstændighederne, hvilken algoritme der er hurtigst.

Det kan være at en algoritme der er hurtig hvis man har meget RAM vil swappe for meget, hvis man har mindre RAM. Og på en computer med begrænset RAM er en anden algoritme bedre.

F.eks. Algoritme 1 tager 1 minut på en maskine med 64MB RAM og 10 sekunder på en maskine med 1GB RAM.

Algoritme 2 udnytter den ekstra RAM og tager kun 1 sekund på maskinen med 1GB RAM. Men hvis algoritme 2 bliver kørt på maskinen med kun 64MB RAM swapper den så meget, at det kommer til at tage 2 måneder.

Måske findes der en algoritme 3, som optimerer efter mængden af RAM og tager 2 minutter på maskinen med 64MB RAM og 2 sekunder på maskinen med 1GB RAM.

Tallene er selvfølgelig nogen jeg bare har fundet på, men de er ikke urealistiske. Hvilken af de tre algoritmer du bør vælge afhænger af om du ved hvilken computer den skal køre på.

Alle tre algoritmer i dette eksempel ville være hurtigere på den nye computer end på den gamle. Men hvor stor forskellen er afhænger af, hvad algoritmen er optimeret efter.

Den mest fair sammenligning af de to computere ville være med den algoritme, der er optimeret efter at fungere nogenlunde godt uafhængigt af computerens størrelse.

Det gør naturligvis også en forskel hvad data algoritmen skal arbejde på. Med nye og større computere vil man jo kunne arbejder på langt større datamængder, og det gør også en forskel på hvilken algoritme der er god.
Gravatar #21 - Tyrian
19. mar. 2011 14:30
#20

Du snakker her nok mest af implementering af algoritmer, som ganske rigtigt kan have stor indflydelse på, hvordan en algoritme yder.

Men jeg synes ikke man kan tillægge forbedret hardware og bedre instruktionssæt en reel forbedring af en algoritme.

Hvis du fra at skulle afsøge 43 000 000 states, kan komme ned og undersøge 1000, før du har løst et problem, har du forbedret algortimen 43 000 gange. At de så har fået en algoritme til at performe 43 000 gange bedre, betyder ikke nødvendigvis at algoritmen er blevet forbedret lige så meget. Derfor synes jeg at nyheden er en anelse diffus.
Gravatar #22 - fudtmele
19. mar. 2011 22:08
Tjah - altså set herfra ser det da ud til at software osse følger Moore's lov; antallet af bit (~= transistorer) som et program der udfører [indsæt funktion her] fylder, ser da også ud til at fordobles med et omtrent fast interval - om det lige er to år har jeg ikke helt styr på - men jeg har en lumsk anelse om, at det er menneskeskabt og ikke en naturlov :)

- og det har *heller* ikke noget med ydelse at gøre...
Gravatar #23 - Coney
19. mar. 2011 23:45
fudtmele (22) skrev:
Tjah - altså set herfra ser det da ud til at software osse følger Moore's lov; antallet af bit (~= transistorer) som et program der udfører [indsæt funktion her] fylder, ser da også ud til at fordobles med et omtrent fast interval - om det lige er to år har jeg ikke helt styr på - men jeg har en lumsk anelse om, at det er menneskeskabt og ikke en naturlov :)

- og det har *heller* ikke noget med ydelse at gøre...


Hvis du nu tænker dig rigtig godt om så kan du sikkert godt finde en logisk forklaring på at den gennemsnitlige softwares hardwarekrav stiger i takt med den gennemsnitlige hardwares egenskaber:)?
Gravatar #24 - astemix
20. mar. 2011 05:14
Er software blevet bedre hmmm til at diskutere
software er blevet bedre til at kunne være med til hardware kontrolleret ting
som GPU og lign men det er vist meget af det
en blackfin eller mange af de andre sharc processorer er enormt god til matematik
modsætning er en CPU dårlig og skal bruge flere gange igennem procserroren før det er færdig udregnet

hvis du skulle sætte nogle af de beregning vi sender igennem GPUen nu om dage igennem en almindelig processor ville den være sløv
den er bare ikke lige så god til matematiske ting som fra tid til anden bliver brugt i grafik

understøtter softwaren så dette vil selvfølgelig gøre nogle interasante ting
men hvis den ikke gør vil det sløve hele systemmet
Det det så kan gøre er at du ender med at skulle bruge mindre mængde af transistere for at kunne gøre noget som en anden processor ikke er specialiceret i kan

#8
behøver ikke at være en algoritme forbedring
hvis jeg tager samme algoritme og smider i en CPU,en GPU en SHARC eller bare en FPGA vil jeg får meget forskellige hastighedder da de arbejder forskelligt det vil også give forskellig mængde af transistere der er nødvendigt for at kunne løse problemmet
dog FPGA er at du smidder din software mere eller mindre ned i hardwaren hvor den ofte kan arbejde ekstremt hurtigt
Gravatar #25 - mathiass
20. mar. 2011 09:16
Sikke noget vrøvl. Hvis man bruger en anden algoritme, så er det jo reelt et andet stykke software man kører, også selvom resultatet er det samme. At ét stykke software generelt kan give et resultat hurtigere end et andet kommer nok ikke bag på nogen.
Gravatar #26 - ChristofferKjeldgaard
20. mar. 2011 09:21
#25 Med den logik er et patched program lige pludselig et helt andet program med det samme formål - Det er stadig det samme produkt selvom der er ændret kode og det giver god mening at tale om ydelsesforbedring her.
Gravatar #27 - Tyrian
20. mar. 2011 11:03
#26
Bare ikke i forhold til Moores lov. Man kan godt få en eller anden brilliant idé til pludseligt at forbedre en algoritme endog mange tusinde gange. Men man kan ikke snakke om samme systematiske udvikling inden for algoritmer, som man kan med transistorer.
Desuden er algoritmer mere eller mindre altid kraftigt afgrænset i forhold til det miljø de opererer indenfor, hvorfor de ikke kan anvendes til generelle problemer (mange af de problemer man benytter algoritmer til at løse er NP-Hard eller endog PSPACE, hvorfor der slet ikke findes generelle løsninger, som kan realiseres - endnu.). Derfor giver det ikke rigtigt mening at drage algoritmer ind i en diskussion om Moores lov.
Gravatar #28 - astemix
20. mar. 2011 18:22
#25 #26
der er selfølgeligt noget at hente hvis algoritmen ikke er bygget ordentligt
eller den er bygget med matematiske funktioner der ikke ligger direkte som normalt i processoren
men hvis en algoritme er så god som den kan blive
kan det give forskellige resultater i forhold til hvilken rype processor du bruger

Eksempel
nogle af de gamle spil som kørte 3D og brugte primært processor til udregning kørte utroligt dårligt i forhold til spil der har samme kvalitets spil der brugte GPU
selfølgelig er softwaren tilpasset GPU eller CPU "algoritmer og lign"
så software er mere end algoritmer det er også den måde den komminikere med hardwaren og den type hardware den kan benytte
men GPU er bare bedre til den form for udregning som eksemple 3D udregninger
Gravatar #29 - mathiass
20. mar. 2011 21:57
ChristofferKjeldgaard (26) skrev:
Med den logik er et patched program lige pludselig et helt andet program med det samme formål

Ja, det mener jeg også er fuldstændig korrekt. For mig handler software-forbedring i den forbindelse om at lave en bedre optimerende compiler som gør den samme kode hurtigere at afvikle. Det er den eneste meningsfulde måde at tale om generel ydelsesforbedring (og dermed en vag forbindelse til moores lov) for software.
Gravatar #30 - mathiass
20. mar. 2011 21:59
astemix (28) skrev:
der er selfølgeligt noget at hente hvis algoritmen ikke er bygget ordentligt
eller den er bygget med matematiske funktioner der ikke ligger direkte som normalt i processoren
men hvis en algoritme er så god som den kan blive
kan det give forskellige resultater i forhold til hvilken rype processor du bruger
Det her giver ganske enkelt ikke mening? Matematisk funktioner ligger ikke i processoren. Der er dog visse matematisk operationer som gør. Uanset processoren så bør algoritmens resultat være uafhængig af processoren hvis implementationssproget har en nogenlunde ædruelig semantik.

Anden del af dit indlæg handler jo netop om forbedringer i hardware...(?)
Gravatar #31 - Ildhesten
20. mar. 2011 22:09
mathiass (29) skrev:
Ja, det mener jeg også er fuldstændig korrekt. For mig handler software-forbedring i den forbindelse om at lave en bedre optimerende compiler som gør den samme kode hurtigere at afvikle. Det er den eneste meningsfulde måde at tale om generel ydelsesforbedring (og dermed en vag forbindelse til moores lov) for software.


Hvad man kan synes er interessant i denne sammenhæng er at Proebstings law siger at bidraget fra optimerende compilere giver ca. en faktor 2 hvert 18 år.
Gravatar #32 - arntc
21. mar. 2011 18:14
Er Windcape afgået ved døden, eller har han bare programmeret Hello World! i Java? Han plejer da ellers at være både hurtig og flink til at give .NET æren for alt godt i verden.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login