L'importanza di una architettura parallela

L'importanza di una architettura parallela

I vantaggi che derivano da una architettura parallela, nata all'inizio per i calcoli delle scene tridimensionali, hanno permesso al processo di indagine scientifica di muovere importanti passi nel corso degli anni

di pubblicata il , alle 09:34 nel canale Schede Video
 

Sin dal giorno della loro prima introduzione sul mercato, le CPU, o in generale le unità dedicate all'elaborazione, hanno vissuto un continuo processo di crescita. All'aumento della complessità architetturale è corrisposta anche una crescita prestazionale e la legge di Moore, in questo senso, ha dettato i parametri di sviluppo delle CPU, fornendo un chiaro riferimento al mercato. Per quanto questa teoria sia più volte stata criticata, non intendiamo occuparcene in questa sede.

Quello che è assodato è che la potenza di calcolo messa a disposizione dagli elaboratori moderni sia ormai divenuto un elemento fondamentale per il mondo moderno. Il perché è presto detto: se fino a diversi anni fa i pilastri portanti della scienza erano due, teoria e sperimentazione, al giorno d'oggi con la simulazione, sono diventati tre. Il metodo scientifico, base di partenza di ogni ricerca, si avvale quindi di una nuova colonna portante: la possibilità di poter avere un modello, di simulare il comportamento di una data azione e poterne studiare la reazione, consente di velocizzare enormemente i tempi di ricerca e sviluppo e, proprio in questo specifico scenario, la potenza di calcolo gioca un ruolo fondamentale.

La parallelizzazione, intesa come approccio architetturale, sembra poter fornire in questo senso una via di sviluppo capace di garantire una costante crescita prestazionale. Questo pensiero è quanto espresso da una ricerca condotta dalla Berkeley university, consultabile a questo indirizzo.

Parallelismo

Il grafico, mostrato in occasione del keynote di apertura del GTC di NVIDIA, mostra una previsione relativa ai tassi di crescita qualora il parallelismo architetturale non venisse impiegato (linea blu) e come potrebbe invece crescere (linea verde).Per quanto l'intento di NVIDIA sia quello di mostrare quali reali vantaggi in termini pratici la propria architettura per GPU sia fondamentale per molteplici ambiti di utilizzo, è bene sottolineare che l'impiego di tali unità consente di ottenere simili vantaggi prestazionali in determinati scenari ma non in tutti. Il ruolo fondamentale che la simulazione ha assunto all'interno del processo scientifico richiede in molti casi una elevata potenza di calcolo per la gestione di importanti quantità di dati: ecco quindi che l'architettura parallela rappresenta un diretto e chiaro vantaggio.

11 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info
Paganetor23 Settembre 2010, 09:42 #1
be', già oggi con i sistemi multicore c'è la possibilità di avere un sistema di calcolo "parallelo" a basso costo, il problema è avere anche i software giusti (sstema operativo e applicazione) in grado di sfruttarli....

Tanto per dirne una, oggi nella maggior parte dei casi risulta più veloce un dual core da 3 GHz di un quad core da 2.5 GHz... è una condizione che va affrontata in fase di programmazione, mentre fino a oggi gli sviluppatori disoftware (per computer, intendo) hanno puntato più sulla crescita delle prestazioni dell'hardware rispetto all'ottimizzazione del software (ci girerà Crysis? )
WaywardPine23 Settembre 2010, 10:02 #2
Originariamente inviato da: Paganetor
Tanto per dirne una, oggi nella maggior parte dei casi risulta più veloce un dual core da 3 GHz di un quad core da 2.5 GHz...


Su quali applicazioni?
Someone23 Settembre 2010, 10:12 #3
Solo alcune funzioni sono parallelizzabili, mentre la maggior parte di esse rimane di tipo seriale.
La parallelizzazione di cui si parla qui è quella legata a campi specifici di simulazione dove lo sfruttamento delle risorse multiple è necessaria. Su desktop la parallelizzazione è usata per il multitasking. Purtroppo per le applicazioni desktop avere più di 2 core non ha molto senso. Word non va più veloce se hai 2 o 12 core, non perché MS non sappia parallelizzare a sufficienza, ma solo perchè le funzioni di tale applicazione (e di una miriade di altre) semplicemente non sono parallelizzabili.
Bisogna tenere anche conto di che tipo di parallelizzazione si può fare: parallelizzare su CPU multicore ha per esempio un costo in termini di overhead che sull'HW delle GPU non esiste, mentre su queste ultime il problema è la comunicazione con la CPU.
Mparlav23 Settembre 2010, 10:18 #4
Non so' a che livello è il tuo sw, Paganetor, ma quello pesante che utilizzo per compressione/decompressione dati, video ed audio encoding, e fotoritocco spesso e volentieri sfrutta 64bit e 6 core.

Che non lo sfrutti il videogioco di turno dove nel 99% dei casi sono gpu-limited in full hd, francamente me ne infischio.
E sì che ce l'avevo il dual core 3.6 Ghz, ma un quad o six core è tutt'altra storia.
Paganetor23 Settembre 2010, 10:23 #5
be', ovvio che con sw specifici è più facile trovare soluzioni in grado di sfruttare più core, ma vedo troppe software house (anche grosse, in ambito cad/cam/cae) che prendono in considerazione solo adesso i sistemi oeprativi a 64 bit o le cpu multicore... ovvio che in ambito di calcolo scientifico la situazione è più rosea, ma si tratta comunque di una nicchia
chairam23 Settembre 2010, 10:56 #6
Originariamente inviato da: Paganetor
be', già oggi con i sistemi multicore c'è la possibilità di avere un sistema di calcolo "parallelo" a basso costo, il problema è avere anche i software giusti (sstema operativo e applicazione) in grado di sfruttarli....

Tanto per dirne una, oggi nella maggior parte dei casi risulta più veloce un dual core da 3 GHz di un quad core da 2.5 GHz... è una condizione che va affrontata in fase di programmazione, mentre fino a oggi gli sviluppatori disoftware (per computer, intendo) hanno puntato più sulla crescita delle prestazioni dell'hardware rispetto all'ottimizzazione del software (ci girerà Crysis? )


No: quella è solo la soluzione attuale, la meno peggio dal punto di vista del software che già c'è, sul mercato da un po' e limitatamente sfruttata, sviluppata in questo modo perché evidentemente a parità di costo per il processore vanno meglio 2 o 4 core di un processore più veloce di 100Mhz.
Un sistema di calcolo parallelo te lo devi immaginare in modo diverso: allo stesso costo e magari con lo stesso numero di transistor un chip con 100 processori molto semplici a 1GHz. Il problema è che tutt'ora manca il software e non si sa bene come scrivere sw che sfrutti processori del genere (pensa al flop del processore della playstation3)
II ARROWS23 Settembre 2010, 11:52 #7
Il Cell ha un parallelismo strano, funziona perfettamente per eseguire una serie di piccole operazioni che devono essere ripetute più e più volte, come appunto nei super computer per cui è utilizzato.

Il punto è proprio che non tutto il software è parallelizzabile. Quelli di codifica video o compressione traggono vantaggio da questo, il tuo software di riproduzione audio no*, la chat non ne guadagna nulla°, il gestore di posta ben che meno...
La ricerca ha un grande guadagno dalla parallelizzazione, ma il problema è che il disco è di solito uno solo e lento quindi in pratica non guadagni nulla a meno di avere già tutto in RAM.



*Potresti gestire ogni canale su una pipeline diversa... ma la potenza attuale è tale che non cambierebbe molto.
°Potresti usare ogni contatto su una pipeline diversa... ma data l'asincronia della comunicazione, la frequenza dei messaggi, sarebbe più uno spreco di risorse dividere in così tanti sotto-processi "attivi".
chairam23 Settembre 2010, 16:01 #8
Originariamente inviato da: II ARROWS
Il Cell ha un parallelismo strano, funziona perfettamente per eseguire una serie di piccole operazioni che devono essere ripetute più e più volte, come appunto nei super computer per cui è utilizzato.

Il punto è proprio che non tutto il software è parallelizzabile.


Strano e che cavolo significa strano?
Cell è infarcito di idee fantastiche, in particolare i suoi processori puoi farli funzionare in parallelo ma anche in serie a scambiarsi i dati tra di loro, è un sistema molto flessibile, ma perché i sistemi paralleli non dovrebbero esserlo, è un vantaggio. Allora n'è una miriade di sistemi 'strani', già ai tempi del 68060 (intel aveva il 286 forse il 386) quello faceva esecuzione speculativa, cioè quando trovava un if eseguiva tutti e due i rami dell'if in parallelo in attesa di sapere quale dei due prendere effettivamente, non è parallelizzare un algoritmo seriale?

Non tutto il sw è parallelizzabile? A questo problema si aggiunge quello che (che sappia io) non ci sono compilatori abbastanza furi da capire quando parallelizzare il programa, quindi deve intervenire il programmatore.
Sire_Angelus23 Settembre 2010, 19:07 #9
Originariamente inviato da: Someone
Solo alcune funzioni sono parallelizzabili, mentre la maggior parte di esse rimane di tipo seriale.
La parallelizzazione di cui si parla qui è quella legata a campi specifici di simulazione dove lo sfruttamento delle risorse multiple è necessaria. Su desktop la parallelizzazione è usata per il multitasking. Purtroppo per le applicazioni desktop avere più di 2 core non ha molto senso. Word non va più veloce se hai 2 o 12 core, non perché MS non sappia parallelizzare a sufficienza, ma solo perchè le funzioni di tale applicazione (e di una miriade di altre) semplicemente non sono parallelizzabili.
Bisogna tenere anche conto di che tipo di parallelizzazione si può fare: parallelizzare su CPU multicore ha per esempio un costo in termini di overhead che sull'HW delle GPU non esiste, mentre su queste ultime il problema è la comunicazione con la CPU.


Word ha un sacco di processi che sono stati parallelizzati, per esempio, un thread per il controllo ortografico, un'altro per scrivere, ora non ricordo cos'altro ma per ora ha 8 thread che funzionano concorremente;
Il client mail.. come non si avvantaggia di un quad? solo xke é scritto male, perché quando hai 5-6k di email come il sottoscritto e si prova a fare una ricerca, stai facendo una ricerca in un database, e poter controllare 4 email per volta anziché una sicuramente riduce a un quarto il tempo, avere un browser che supporta i multicore vuol dire che un thread decodifica le immagini, un'altro renderizza il javascript... Battlefield Bad Company 2, Assassin's creed 2, star trek online, sono tutti giochi che sono usciti 6 mesi a questa parte(bc2 più veccchio) che supportano fino a 8 thread contemporanemente(e ti assicuro che bc2 la differenza la senti, tutti i calcoli che deve effettuare la fisica per ogni giocatore ve li sognate..)

Crysis supporta il multicore, solo che la grafica ancora non riesce a stargli dietro e a porre la cpu come limite alle prestazioni.. non si é visto il cpulimited su crisis nemmeno in triple sli di 480 n'altro po...

vogliamo poi mettere il fatto che la maggior parte della gente che gioca non ha come le piattaforme di test un pc che é pulito con un solo gioco installato, ha 20 programmi in background compreso antivirus che sicuramente succhia potenza???e avere 4-8 thread in totale aiuta a mantenere le performance elevate?
II ARROWS24 Settembre 2010, 09:00 #10
AHAHAAHAHAHAHAHAH

Bellissimo vedere come certa gente non capisca nulla di quello che dice eppure scrive...

Dividere in sotto-processi non vuol dire parallelizzare... questa è una cosa che si faceva anche negli anni '80 dove non esistevano CPU multi-core o con core logici.

Per esempio chairam, se devi fare un programma che estrae dei dati, li elabora e poi inserisce in una tabella di DB un dato, poi utilizzare il campo auto-incrementante o hash generato dal DBMS per inserire altri dati in un'altra tabella... come lo parallelizzi? Non puoi.

Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".

La discussione è consultabile anche qui, sul forum.
 
^