OpenCl e i relativi strumenti. Recensioni e impressioni.

 
Considerando il fatto che Metaquotes ha cambiato la sua opinione riguardo l'applicabilità delle GPU nell'analisi e nel trading (sarebbe più accurato dire che il software GPU ha finalmente raggiunto il livello richiesto per essere usato nei programmi commerciali), suggerisco che siamo pronti per iniziare a testare OpenCL nella programmazione reale oggi.
Nel caso in cui vi siate persi questa notizia per aver fluito sul forum invece di fare trading, modellare e programmare, ecco quello che Metacquotes ha da dire per esempio:

.............................................................................................................................................................................

Esperienze GPU nella modellazione finanziaria

http://habrahabr.ru/blogs/hi/131983/

MetaCitazioni 7 novembre 2011, 19:27#

Il supporto OpenCL sarà presto incluso in MQL5, permetterà di aumentare le prestazioni dei calcoli in una rete distribuita di diverse volte/ordine di grandezza.

.............................................................................................................................................................................

Quindi, OpenCL, cos'è?

È un approccio software, un programma interprete per eseguire il vostro programma in parallelo sulla scheda video, cioè sulla GPU.

Che cosa dà?

In primo luogo, dà scalabilità, cioè un facile ed economico ridimensionamento della potenza di elaborazione disponibile. Una cosa è comprare, installare e mantenere una dozzina di server e un'altra cosa è comprare e inserire 3 o 4 schede video supplementari. Il risultato sarà lo stesso in termini di velocità, ma in termini di spesa di denaro e tempo - decine di volte.

In secondo luogo, permette di utilizzare metodi matematici così sofisticati che prima erano inaccessibili a causa della debolezza dei computer.

In terzo luogo, se le meta-citazioni potessero imbullonare OpenCL non solo per gli utenti ma anche per il suo tester incorporato, darebbe luogo a due prospettive stranamente opposte:

(a) la metà del tempo CloudNetwork non sarà affatto necessaria per l'ottimizzazione individuale di semplici consulenti esperti.

(b) L'uso di CloudNetwork aprirà prospettive così ampie per l'ottimizzazione esperta, la modellazione e l'analisi, l'applicazione di metodi matematici così complessi, che prima erano semplicemente impensabili.

Da dove cominciare?

Qui c'è un software SDK (con driver per CPU) per sviluppatori di AMD (dichiarato per Vista-Win7, ma funziona anche su WinXP. Senza scheda di accelerazione video funzionano con successo su CPU, e su qualsiasi processore SSE di Intel, non solo AMD):

http://developer.amd.com/sdks/AMDAPPSDK/downloads/Pages/default.aspx

Vecchie versioni di AMD-ATI SDK (funziona su WinXP):

http://developer.amd.com/sdks/AMDAPPSDK/downloads/pages/AMDAPPSDKDownloadArchive.aspx

La versione di Nvidia del programma interprete è fornita con ogni driver moderno e l'ambiente di sviluppo è incluso nel pacchetto CUDA Tools-SDK:

http://developer.nvidia.com/opencl

La versione Intel dell'SDK (funziona solo su Vista-Win7):

http://software.intel.com/en-us/articles/download-intel-opencl-sdk/

Nota: per funzionare correttamente con MetaTrader 4 o 5, abbiamo bisogno di OpenCL versione 1.1 o superiore, ma non 1.0 perché solo dalla versione 1.1 è abilitato il supporto al safe threading. In MetaTrader 4 o 5 il threading viene creato e distrutto dinamicamente e separatamente per ogni Expert Advisor. Pertanto, per utilizzare GPU di Expert Advisors in esecuzione su diverse coppie di valute, è necessario esattamente un threading sicuro.

In pratica questo significa usare solo i driver ATI Catalyst versione 10.10 e superiori, o da Nvidia solo la versione superiore a 280.00. I driver AMD-ATI migliorano e diventano più veloci ad ogni versione, mentre i driver nVidia peggiorano e diventano più lenti. OpenCL di Nvidia versione 1.1 è del 30-40% più lento della sua versione 1.0, cioè è davvero 2 volte più lento e per niente più veloce di OpenCL 1.1 di AMD.

Come faccio a verificare la presenza di OpenCL?

AIDA di FinalWire mostra i parametri della GPU e la versione OpenCL nella sezione Display.

Come posso testare la velocità di OpenCL?

LuxMark:

http://www.luxrender.net/wiki/LuxMark

Risultati comparativi approssimativi per diverse CPU e GPU:

http://www.luxrender.net/wiki/LuxMark_Results

A volte è necessario modificare manualmente il file render.cfg per separarlo dal test CPU-Native CPU-OpenCL.

Velocità per top-end Phenom II X6 CPU = circa 2300, lo stesso programma, ma solo nel mostro di 8pc Nvidia GTX580 dà 70000, cioè 30 volte più. Anche un set di 8 GTX580 costerà 30 volte meno nel costo primario e circa 40 volte meno nel consumo di energia di un set di 30 server equivalenti a doppio float point. Inoltre, ci vuole molto sforzo per sincronizzare le istanze dei programmi su 30 server, mentre su OpenCL tutto gira su un computer con la stessa singola istanza del programma.

Altri risultati da LuxMark:

http://www.xtremesystems.org/forums/showthread.php?267385-LuxMark-The-OpenCL-CPU-amp-GPU-benchmark

Più software per testare OpenCL:

gpcbenchmarkocl

È stato rimosso dal sito web degli autori cinesi (probabilmente, è un prodotto strategico) ma si può trovare sul web. (Alcune parti della sezione Image Processing funzionano solo con DirectX versione 10 e superiore, significa che non funziona con WinXP).

C'è un'altra peculiarità di OpenCL: la programmazione in esso richiede di allontanarsi dalle consuete astrazioni matematiche utilizzate nella programmazione decente e di essere coinvolti nell'ottimizzazione del programma per l'hardware che non è giusto.

Un articolo su OpenCL descrive le difficoltà approssimative della sua implementazione:

http://habrahabr.ru/blogs/hi/125398/

Un video corso introduttivo su OpenCL di AMD:

http://developer.amd.com/documentation/videos/OpenCLTechnicalOverviewVideoSeries/Pages/default.aspx

In generale, QUALSIASI computer che esegue SSE sarà abbastanza buono per lo sviluppo e il debug di programmi OpenCL, a patto che venga utilizzata la suite di programmi AMD. Inoltre, qualsiasi sistema GTS450....GTX580 di Nvidia può essere raccomandato perché ha anche CUDA, ma per un lavoro veramente veloce, le schede e i programmi AMD-ATI sono più adatti - sono meglio scalabili e più stabili nelle configurazioni Multi-GPU.

L'hardware OpenCL Multi-GPU è un argomento di un thread separato.

 
AlexEro:

L'hardware OpenCL Multi-GPU è un argomento per un thread separato.

A proposito, la questione è stata studiata abbastanza ampiamente e ci sono caratteristiche comparative delle carte. Studiato dai minatori della famigerata criptovaluta bitcoin (inizialmente) e di altre criptovalute (in seguito).

Il confronto naturalmente su compiti specifici, ma approssimativamente orientato su configurazione e budget è facile.

E sì, non andare per potenti schede grafiche b\u ora :)

 
TheXpert:

A proposito, la questione è stata studiata abbastanza ampiamente e ci sono caratteristiche comparative delle carte. Studiato dai minatori della famigerata criptovaluta bitcoin (inizialmente) e di altre criptovalute (in seguito).

Il confronto naturalmente su compiti specifici, ma approssimativamente orientato su configurazione e budget è facile.

E sì, non prendete schede video b\u potenti ora :)

Semplicemente non volevo spaventare il lettore con questi bestioni e distrarre da cose più importanti: la programmazione. Anche se sono d'accordo, il risultato finale, cioè quale velocità di scalatura reale ci si può aspettare, e come appare, dovrebbe essere mostrato. La gamma è ampia - dalla cassa di birra agli scaffali:


 

OpenCL è il futuro oggi.

Domanda: quando circa sarà implementato il supporto in MT5?

Sono più che sicuro al 100% che OpenCL diventerà lo standard per la programmazione dei carichi di lavoro paralleli.

 
Microsoft ha introdotto C++ AMP
Postato da shapovalovts su Thu, 06/16/2011 - 10:07
All'AMD Fusion 11 Developer Summit, Herb Sutter ha annunciato una nuova tecnologia per lo sviluppo di applicazioni C++ eterogenee chiamata C++ Accelerated Massive Parallelism (AMP). Questa tecnologia, come dichiarano gli sviluppatori di Microsoft, permetterà di utilizzare le capacità di esecuzione parallela del codice sia su CPU che su GPU.

I concorrenti chiave di AMP saranno OpenCL e CUDA. Sutter ha anche evidenziato il potenziale dell'uso di C++ AMP nel cloud computing.

https://www.mql5.com/ru/forum/132431

 
Quindi torna ad essere il fratello minore del proprietario AMP).
 
Sembra che AMP avrà un momento difficile. OpenCL è già in pieno uso.
 
La mancanza di idee è difficile da sostituire con la potenza di calcolo per passare rapidamente attraverso o ordinare a bolle la prossima sciocchezza derivata dalla "perversione intellettuale" sopra le virgolette )))
 
artikul:
La mancanza di idee è difficile da sostituire con la potenza di calcolo per passare rapidamente attraverso o ordinare a bolle la prossima sciocchezza derivata dalla "perversione intellettuale" sopra le virgolette )))

Immagino che se si carica una tale potenza con idee valide, si potrebbe far girare il nostro pianeta intorno al sole nella direzione opposta. ))
 

Articul, non devi essere così categorico. Il mondo non sta fermo. Le moderne schede grafiche mostruose, in base alla tua logica, dovrebbero anche essere riconosciute come una conseguenza della mancanza di idee nell'elaborazione delle immagini?

Io stesso a volte mi piace accelerare - solo per non dover aspettare il debug del codice per finire i calcoli pesanti, che sono tutti nel mio init() (circa 10 secondi). E tutti gli altri calcoli, che avvengono "al volo", sono davvero molto veloci, quindi il multithreading non è necessario.

 
artikul:
La mancanza di idee è difficile da sostituire con la potenza di calcolo per passare rapidamente attraverso o ordinare a bolle la prossima sciocchezza derivata dalla "perversione intellettuale" sopra le virgolette )))

E qui i compagni si stanno attivamente riscaldando in attesa di impegnarsi nel sesto punto in una forma particolarmente perversa. =)