-
xdarma
-
-
Offline
-
Referente Climate
-
-
...dove il mondo diventa mancino...
-
Messaggi: 1047
-
Ringraziamenti ricevuti 85
-
-
-
|
Interessante
articolo
riguardante l'utilizzo delle gpu nel progetto.....peccato sia scritto tutto in polacco!!! Qualcuno lo conosce? Potrebbe tradurre??
Tradotto con gurgle-sgorgatutto, ma solo la seconda parte:
Che cosa è esattamente OpenCL?
Secondo Wikipedia:
"OpenCL (. Ang Open Computing Language) -. Supporto quadro per scrivere applicazioni in esecuzione su piattaforme eterogenee composte da vari tipi di unità di misura (come CPU, GPU) Il vantaggio principale di OpenCL-a è che è possibile utilizzare uno di standard aperti invece di apparecchiature chiuse supporto solo produttore (ad es. solo per le schede grafiche CUDA prodotte da Nvidia). "
Nel caso di schede grafiche abbiamo un numero piuttosto grande, tuttavia, unità di calcolo limitate che possono operare (di nuovo, in qualche semplificazione) su matrici e vettori a loro. Il risultato è che in relazione alla CPU può eseguire una serie di semplici operazioni con la scheda grafica contemporaneamente su più kernel, ma non possiamo semplicemente compilare applicazioni previste per cooperare con la CPU senza lavoro significativo che adattino del codice sorgente per il funzionamento in parallelo sulla GPU.
Per portare i problemi affrontati da persone che vogliono spostare la CPU applicazione utilizzerà il nostro lavoro attuale, che sta adattando l'applicazione del progetto di eseguire codice OpenCL, utilizzando prevalentemente le schede grafiche con AMD di stabile.
Applicazione Progetto Universo @ Home - come mordere il mattone ...
Tanto per cominciare è bene rendersi conto che l'applicazione è utilizzata in diverse versioni del nostro progetto è un programma il cui sviluppo è iniziato nel 2002 (StarTrack, dal prof. Krzysztof Bełczyńskiego), e il codice sorgente è stato creato senza tener conto della possibile parallelizzazione compiti acceleratori e la grafica è più 20tyś linee di codice sorgente. Questa applicazione è utilizzato per simulare l'evoluzione dei sistemi stellari, rendendo i singoli passi di simulazione sequenziale. Pertanto, l'applicazione comprende un gran numero di salti condizionati, il cui numero è diverso in ciascun caso e gli stessi campi riferisce ad una varietà di funzioni del programma. Inoltre, quasi tutti i loop fatto una condizione come argomenti trattano i dati iniziali ottenuti con le caratteristiche precedenti e forme di realizzazione, quindi, è quasi impossibile prevedere il numero corretto di forme di realizzazione del circuito al fine di ottimizzare il calcolo su GPU porting. ..
Si deve aggiungere, inoltre, che l'applicazione esegue quasi tutte le operazioni sui numeri a doppia precisione, pertanto gamma di schede grafiche utilizzabili comprende solo quelli che rendono questo possibile.
Dal momento che già conosciamo i limiti e le potenziali fonti di problemi, si dovrebbe andare a un calcolo specifico. Durante l'applicazione di profili, abbiamo scoperto che circa il 95% del tempo, l'applicazione esegue funzioni matematiche, come logaritmi e l'elevamento a potenza. Inoltre, il codice sorgente è stato compilato per quanto riguarda l'ottimizzazione compilatore aggressivo, in modo che piuttosto una grande parte dell'esponente è stato semplificato a moltiplicarsi. Tuttavia, nonostante l'uso di questi ottimizzazione è ancora circa il 90% del tempo, è stato accennato caratteristiche esponente e logaritmo. Fortunatamente, queste funzioni nonostante la sua complessità agire rapidamente sulla GPU (Radeon), anche se di solito tali processori calcoli, queste carte esibirsi al 1/16 la velocità dei calcoli per la singola precisione (questo consegue l'architettura delle schede AMD in cui il unità sono un punto fisso-floating 1/16).
Va notato che l'esecuzione del programma isolato, per eseguire un certo numero di simulazione dell'evoluzione della stella, se l'aumento del numero dei risultati della simulazione in simulazione più accurata del tutto. Per una CPU normalmente utilizzato simulare 20.000, che al calcolatore intermedio eseguire circa 2 ore. Oltre ai calcoli funzionamento di accelerazione, per trasferire l'applicazione per l'acceleratore grafico sta aumentando la precisione dei calcoli aumentando il numero di passi durante una singola corsa di simulazione.
#### Funzioni Tabella incarnazione nel codice principale (numero di simulazione = 162.065)
Nome | Numero di spettacoli | Il tempo in nanosecondi
main | 1 | 756532234150
singl1 | 5574822 | 166850210333
singl2 (dMmtf) | 7081388 | 510538375493
orb_change | 1507166 | 44933615186
dMmtf | 83850 | 525637959062
dMgainf | 25172850 | 4358598626
tmerge1 | 10499 | 357275868
tmerge2 (Xbin) | 56415 | 13751031312
Xbin | 56415 | 13794075608
decidere | 24895 | 12698941931
La situazione ideale sarebbe quella di trasferire tutti i calcoli OpenCL, ma a causa del multipla ramificazione durante il funzionamento e la quantità minima di prestazioni parte della funzione della nostra attenzione principalmente sul trasferimento dei più calcoli in termini di tempo di acceleratori grafici, lasciando alcune delle funzioni della CPU. Tuttavia, rimane una questione importante - come prevedere quali funzioni e quante volte verrà eseguito a considerevolmente differenti parametri di partenza conteggio applicazioni? Alla fine dei 60 attualmente parametri differenti in tre diversi tipi di simulazione (in ogni pochi mesi, ci sono nuovi).
Dopo una lunga riflessione, sembra che questo compito è impossibile in pratica, alla fine a cambiare una risultati dei parametri in una funzione diversa distribuzione chiama ... È per questo che abbiamo bisogno di creare un tool (chiamato CLRunEngine), che sarà utilizzato per prevedere questi valori, in estrema sintesi, modificare il codice sorgente deve comportare l'aggiunta dallo sviluppatore delle pertinenti direttive nel codice sorgente che il motore sarà in grado di interpretare per determinare la sequenza delle funzioni e il loro numero, valori preimpostati eccetera. Anche se il compito sembra complicato, finirà per rendere più facile fare cambiamenti nel programma senza i datori di lavoro e richiede molto tempo per analizzare tutto il codice per determinare i potenziali chiamate di funzione.
Poiché il tutto è ancora in fase di collaudo e perfezionamento non può ancora presentare una completamente credibili test di performance, tuttavia, già in questo momento sulla base di test di unità può prevedere che per la scheda AMD Radeon HD 7850 aumento della velocità del calcolo per ciascun caratteristica sarà da 20 a 80 volte rispetto al core i5 3470 3.9GHz ...
Piattaforma: AMD Accelerated Parallel Processing
Dispositivo: Pitcairn
L'esecuzione del kernel: Lbagbf
Campioni: 816804
Tempo: 0.00685333
Tempo (CPU) 0.086123 secondi
L'esecuzione del kernel: Leagbf2
Campioni: 715404
Tempo: 0.0134536
Tempo (CPU) 0.220607 secondi
L'esecuzione del kernel: Lgbf2
Campioni: 1000000
Tempo: 0.0167493
Tempo (CPU) 0.316528 secondi
L'esecuzione del kernel: Lhe1f
Campioni: 1000000
Tempo: 0.00458119
Tempo (CPU) 0.051992 secondi
L'esecuzione del kernel: Lhgf
Campioni: 1000000
Tempo: 0.041496
Tempo (CPU) 1.43043 secondi
L'esecuzione del kernel: Lhsgbf
Campioni: 1000000
Tempo: 0.003652
Tempo (CPU) 0.225244 secondi
L'esecuzione del kernel: Lhsmsf
Campioni: 1000000
Tempo: 0.00755867
Tempo (CPU) 0.398542 secondi
L'esecuzione del kernel: Lmsf
Campioni: 1000000
Tempo: 0.0436181
Tempo (CPU) 4.55439 secondi
L'esecuzione del kernel: Ltagbf2
Campioni: 1000000
Tempo: 0.0166179
Tempo (CPU) 0.325152 secondi
Dove "Time" è il momento di eseguire un'operazione sulla GPU, "Time (CPU)" le stesse operazioni eseguite sulla CPU.
Nel prossimo post cercherò di inserire già i test utilizzando l'applicazione in versione beta con un confronto con le schede grafiche diverse in combinazione con varie schede dalla stalla AMD. Io non ammetto anche che la sfida sarà quella di adattare il programma per operare su altre piattaforme, tra cui ARM che consentirà di robusti sistemi di test le prestazioni del computer in Mali ODROID XU4 nei calcoli reali utili per applicazioni scientifiche. Vi invito anche a un comune conteggio diversi progetti di ricerca nel quadro della nostra nazionale BOINC
|