Siti web

Il parallelismo richiede l'applicazione killer per l'adozioni di massa

How To TRAIN with PARALLETTES

How To TRAIN with PARALLETTES
Anonim

L'aggiunta di più core ai microprocessori ha creato un'opportunità significativa per la programmazione parallela, ma è necessaria un'applicazione killer per portare il concetto nel mainstream, hanno detto i ricercatori durante una discussione nella conferenza di Hot Chips.

La maggior parte dei software oggi è ancora in fase di scrittura per l'esecuzione sequenziale e i modelli di programmazione devono cambiare per sfruttare l'hardware più veloce e un numero crescente di core sui chip, hanno detto i partecipanti. I programmatori devono scrivere codice in un modo che permetta di dividere ed eseguire i compiti simultaneamente su più core e thread.

Un sacco di attenzione e denaro sono andati a costruire macchine veloci e linguaggi di programmazione migliori, ha detto David Patterson, un computer professore di scienze all'Università della California, Berkeley, lunedì alla conferenza di Stanford. Comparativamente poca attenzione è stata prestata alla scrittura di programmi desktop in parallelo, ma applicazioni come giochi e musica potrebbero cambiarlo. Gli utenti di tali programmi richiedono le migliori prestazioni in tempo reale, pertanto i programmatori potrebbero dover adottare modelli che suddividono le attività su più thread e core.

Ad esempio, nuove forme di parallelismo potrebbero migliorare la qualità della musica riprodotta sui PC e gli smartphone, ha detto Patterson. Il codice che fa un lavoro migliore per separare canali e strumenti potrebbe in definitiva generare suoni attraverso l'interazione parallela.

L'Università della California, Berkeley, ha un laboratorio di calcolo parallelo in cui i ricercatori stanno cercando di capire come vengono utilizzate le applicazioni, che potrebbero aiutare a ottimizzare il codice per dispositivi portatili. Un progetto mira a portare la navigazione di qualità desktop su dispositivi palmari ottimizzando il codice in base a compiti specifici come il rendering e l'analisi delle pagine. Un altro progetto prevede l'ottimizzazione del codice per il recupero più rapido delle informazioni sulla salute. Il laboratorio è finanziato principalmente da Intel e Microsoft.

I ricercatori di Berkeley stanno cercando di introdurre il parallelismo sostituendo bit di codice originariamente scritti usando linguaggi di scripting come Python e Ruby on Rails con un nuovo codice C di basso livello. Il nuovo codice si concentra in particolare su attività particolari come l'analisi di un modello vocale specifico in un'applicazione di riconoscimento vocale, Patterson ha detto in un'intervista mercoledì. Il codice è scritto usando OpenMP o MPI, interfacce di programmazione delle applicazioni progettate per scrivere applicazioni parallele a livello macchina.

Gli esperti devono scrivere questo codice parallelo altamente specializzato, ha detto Patterson. Riduce i tempi di sviluppo per i programmatori che altrimenti utilizzerebbero Python e Ruby on Rails, che semplificano lo sviluppo delle applicazioni, ma non si concentrano sul parallelismo, ha detto Patterson nell'intervista. Il laboratorio ha mostrato che l'esecuzione specifica dell'attività salta di un fattore 20 con il codice macchina di basso livello.

Il concetto di parallelismo non è nuovo ed è stato principalmente il dominio del calcolo ad alte prestazioni. I bassi livelli di parallelismo sono sempre stati possibili, ma i programmatori hanno affrontato un compito scoraggiante con la mancanza di strumenti software e ambienti hardware in continua evoluzione.

"I thread devono sincronizzarsi correttamente", ha detto Christos Kozyrakis, professore di ingegneria elettrica e informatica alla Stanford University, durante una presentazione prima della tavola rotonda. Il codice deve essere scritto in una forma che si comporti in modo prevedibile e venga ridimensionato man mano che altri core diventano disponibili.

I compilatori devono anche essere resi più intelligenti e perspicaci quanto basta per spezzare i thread in tempo in modo che le uscite siano ricevute in una sequenza corretta, ha detto Kozyrakis. Tentativi falliti di costruire il parallelismo nel codice potrebbero creare software buggy se calcoli specifici non vengono eseguiti in un certo ordine. Questo è un problema comunemente indicato come condizioni di gara. I programmatori potrebbero anche aver bisogno di imparare come usare più strumenti di programmazione per raggiungere livelli più fini di parallelismo, hanno detto i membri del panel.

"Non c'è un approccio pigro alla programmazione", ha detto Patterson alla conferenza.

La memoria e la latenza della rete hanno creato colli di bottiglia nel throughput dei dati, che potrebbe annullare le prestazioni ottenute con l'esecuzione parallela delle attività. Esistono anche diversi strumenti di programmazione per diverse architetture, che rendono difficile sfruttare tutto l'hardware disponibile.

Molti strumenti di parallelismo disponibili oggi sono progettati per sfruttare le capacità di elaborazione parallele di CPU e unità di elaborazione grafica per migliorare le prestazioni del sistema. Apple, Intel, Nvidia e Advanced Micro Devices sono tra le società che promuovono OpenCL, un ambiente di programmazione parallelo che sarà supportato nel prossimo sistema operativo Apple OS X 10.6 di Apple, chiamato anche Snow Leopard, che sarà rilasciato venerdì. OpenCL compete con Microsoft, che promuove i propri strumenti di programmazione parallela diretta di DirectX, e Nvidia, che offre il framework CUDA.

OpenCL include un linguaggio di programmazione C-like con API (interfacce di programmazione delle applicazioni) per gestire la distribuzione dei kernel attraverso hardware come core del processore e altre risorse. OpenCL potrebbe aiutare Mac OS a decodificare i video più velocemente distribuendo l'elaborazione dei pixel su più CPU e unità di elaborazione grafica in un sistema.

Tutti gli strumenti esistenti sono orientati verso diversi ambienti software e sfruttano risorse diverse, ha detto Patterson. OpenCL, ad esempio, è orientato più verso l'esecuzione di attività su GPU. Modelli proprietari come DirectX sono difficili da implementare in ambienti di elaborazione eterogenei, mentre alcuni modelli come OpenCL si adattano solo ad ambienti specifici che si basano su GPU.

"Non credo che [OpenCL] verrà abbracciato in tutte le architetture." Disse Patterson. "Nel frattempo abbiamo bisogno di provare altre cose", come cercare di migliorare i modelli di programmazione con strumenti di sviluppo comunemente usati, come Ruby on Rails, ha detto.

Mentre i membri del pubblico hanno sottolineato che il parallelismo è stato un problema per decenni, i relatori hanno affermato che le università stanno adottando un nuovo approccio per lavorare su più strumenti di programmazione per consentire il parallelismo. Dopo anni di finanziamento dello sviluppo dei chip, il governo sta anche prestando maggiore attenzione all'elaborazione parallela dei programmi di finanziamento.

Kozyrakis ha detto che Stanford ha creato un laboratorio che mira a "rendere concreti lo sviluppo di applicazioni parallele per le masse" entro il 2012 I ricercatori stanno collaborando con aziende come Intel, AMD, IBM, Sun, Hewlett-Packard e Nvidia.

Un test immediato per gli sviluppatori potrebbe essere quello di provare a convertire il codice esistente esistente in parallelo per l'esecuzione su chip moderni, Berkeley's Patterson disse. Un paio di aziende offrono la parallelizzazione automatica, ma riscrivere e compilare il codice legacy originariamente scritto per l'esecuzione sequenziale potrebbe essere una grande sfida.

"Ci sono soldi da fare in quelle aree", ha detto Patterson.