Accelerazione dai progressi algoritmici rispetto all'hardware


14

Ricordo di aver visto uno studio o un articolo qualche tempo fa sostenendo che la maggior parte della velocità vista nei programmi per computer negli ultimi decenni è dovuta a algoritmi migliori piuttosto che a hardware più veloce. Qualcuno conosce lo studio o l'articolo?


8
Probabilmente una soluzione migliore per cs.stackexchange.
Yuval Filmus,

c'è davvero un grande cambiamento di paradigma negli ultimi anni rispetto alla legge di Moores, alle velocità di clock e al parallelismo e che è stato trattato in molti articoli / documenti ....
vzn

Risposte:


8

questa è una domanda involontariamente complessa. questa idea che i guadagni del software hanno superato i guadagni dell'hardware è apparentemente radicata in un rapporto del governo reale ma (come indica la tua domanda) probabilmente si avvicina allo status di leggenda urbana minore a causa di incomprensioni o interpretazioni errate. i titoli di riepilogo / morso di suono non corrispondono realmente al punto effettivo sollevato nel rapporto.

vedere [1] o [2] che indica

Un rapporto di un gruppo indipendente di consulenti scientifici e tecnologici alla Casa Bianca, pubblicato lo scorso dicembre, citava una ricerca che mostrava che i miglioramenti delle prestazioni nell'esecuzione di compiti di calcolo derivanti da miglioramenti negli algoritmi software spesso superano di gran lunga i guadagni attribuibili a processori più veloci.
...
Ma il rapporto consultivo della Casa Bianca citava la ricerca, incluso uno studio sui progressi nell'arco di 15 anni in un compito di pianificazione della produzione di riferimento. Nel corso del tempo, la velocità di completamento dei calcoli è migliorata di un fattore di 43 milioni. Del totale, un fattore di circa 1.000 era attribuibile a velocità del processore più elevate, secondo la ricerca di Martin Grotschel, scienziato e matematico tedesco. Tuttavia, un fattore di 43.000 era dovuto ai miglioramenti nell'efficienza degli algoritmi software.

ma il problema del software rispetto all'hardware è molto lontano da questa semplificazione unidimensionale, molto più complessa, e il blog di Lohrs lo ha più accurato: software e hardware formano una sorta di fusione simbiotica yin-yang ed entrambi sono progrediti in modo molto significativo, anche sorprendentemente i decenni.

avvertenza / stampa fine: non si possono ottenere guadagni individuali in particolari algoritmi software, che in alcuni casi sono stati molto sostanziali, e generalizzarli in tutti gli algoritmi.

la citazione effettiva dal rapporto è a pagina 71:

Ancora più notevole - e ancor meno ampiamente compreso - è che in molte aree, i miglioramenti delle prestazioni dovuti a miglioramenti negli algoritmi hanno ampiamente superato anche i notevoli miglioramenti delle prestazioni dovuti alla maggiore velocità del processore. Gli algoritmi che utilizziamo oggi per il riconoscimento vocale, per la traduzione in lingua naturale, per il gioco degli scacchi, per la pianificazione logistica, si sono notevolmente evoluti negli ultimi dieci anni. È difficile quantificare il miglioramento, tuttavia, perché è tanto nel campo della qualità che dei tempi di esecuzione.

quindi questo rapporto del governo è altamente ricercato e raffinato, la pretesa di base di enormi guadagni dovuti ai progressi teorici del software in alcune aree è corretta e promuove la ricerca (teorica / algoritmica) in parte su quella base.

tuttavia ci sono molti altri fenomeni / tendenze / cambiamenti fondamentali / massicci nuovi / recenti negli ultimi anni o quelli che Intels Grove chiama "punti di flesso" che si stanno verificando nella progettazione di hardware e software. alias "gamechangers":

  • l'ascesa del supercalcolo "Exascale" potrebbe non essere così facilmente raggiunta come "Petascale" a causa dei vincoli di ridimensionamento dell'hardware
  • le velocità di clock, un motore principale di precedenti incrementi di velocità, sono aumentate (in parte a causa di vincoli di calore / raffreddamento)
  • l'hardware sta subendo un massiccio spostamento verso dispositivi meno intensivi di elaborazione, più efficienti dal punto di vista energetico, ad esempio mobile, datacenter / virtualizzazione / cloud ecc.
  • migliorare il parallelismo in software e hardware (ad esempio "multicore") sta quindi diventando più critico per i miglioramenti delle prestazioni (in cui la teoria ha molto da dire su come parallelizzare gli algoritmi)

[1] skeptic.se, i progressi negli algoritmi battono i progressi nell'hardware

[2] Il progresso del software batte il blog NYT della legge Moores di Lohr

[3] RELAZIONE AL PRESIDENTE E AL CONGRESSO CHE PROGETTANO UN FUTURO DIGITALE: RICERCA E SVILUPPO FINANZIATI FEDERALMENTE NELLA RETE E LA TECNOLOGIA DELL'INFORMAZIONE dic 2010


addendum. ci sono probabilmente alcuni buoni (contro) esempi di importanti algoritmi che non sono avanzati affatto nell'efficienza delle implementazioni nel corso dei decenni. idee? un'area candidata potrebbe essere algoritmi a matrice che non sono parallelizzabili o altri algoritmi che sembrano intrinsecamente non parallelizzabili ... inoltre, alcuni algoritmi hanno subito miglioramenti teorici nella complessità con limite inferiore ma gli algoritmi non sono effettivamente implementati o non sono fattibili per tipico ingressi dimensionati ecc ... ad es. moltiplicazione di matrici?
vzn,

1
Questa è un'ottima risposta - ricca di dettagli, sfumature e discussioni approfondite!
Joshua Grochow,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.