Grazie mille!
Aspettavo da tempo un articolo su OpenCL.
Ora lo leggerò. :)
Lo leggerò. :)
Probabilmente non ne hai bisogno più di tanto. Dovreste già sapere tutto.
Nel prossimo articolo sarà una cosa seria, ci sarà molto sull'hardware.
Cosa si intende per "troppo presto per attivare", per favore chiaritelo. Se OpenCL - è già abilitato. Tutti gli esperimenti sono stati effettuati direttamente in MetaEditor 5.
P.S. L'aspetto principale è che, grazie a OCL, il codificatore ha accesso a qualcosa che prima non aveva. Si tratta di:
- (S)SSEx, che può essere incluso in Visual Studio, ma non può essere incluso in MQL5 senza OCL (senza contare le dll).
- l'accesso ai calcoli su GPU discrete, che accelera ulteriormente ciò che può essere fatto su un singolo core in MQL5 senza trucchi simili alle dll.
.
1. Probabilmente non ne avete bisogno più di tanto. Dovreste già sapere come fare tutte queste cose.
2. Nel prossimo articolo sarà una cosa seria, ci sarà molto sull'hardware.
1. Ne ho bisogno.
2. Ottimo!
La domanda non mi è chiara: perché chiamate "emulazione" l'esecuzione del programma OCL sulla CPU? La CPU è solo uno dei dispositivi, insieme alla GPU, con cui il programma OCL può funzionare se esiste un driver corrispondente per il dispositivo e tutti i core del processore sono caricati.
- www.mql5.com
Perché l'emulazione è proprio questo, un'emulazione lenta. Nella CPU (grazie a Intel, che ha un compilatore intelligente che cerca la vettorializzazione se non la si vieta esplicitamente) la parallelizzazione viene effettuata dalle istruzioni (S)SSEx e forse dall'analisi delle dipendenze, mentre le GPU hanno molte più possibilità legate ai motori SIMD. Inoltre, ci sono bus più ampi e memorie più veloci - soprattutto memorie locali e private.
Riguardo all'hardware. Le principali raccomandazioni si applicano all'hardware AMD. Ma molte di esse, con una terminologia leggermente modificata, si applicano anche all'hardware NVidia.
Perché si tratta di emulazione, emulazione lenta. Nelle CPU (grazie a Intel, che ha un compilatore intelligente che cerca la vettorializzazione se non viene esplicitamente vietata), la parallelizzazione viene effettuata dalle istruzioni (S)SSEx ed eventualmente dall'analisi delle dipendenze, mentre le GPU hanno molte più possibilità legate ai motori SIMD. Inoltre, ci sono bus più ampi e memorie più veloci - soprattutto memorie locali e private.
Riguardo all'hardware. Le principali raccomandazioni si applicano all'hardware AMD. Ma molte di esse, con una terminologia leggermente modificata, si applicano anche all'hardware NVidia.
Si veda - non c'è alcuna menzione di OCL per le GPU e della modalità di emulazione per altri dispositivi. OpenCL è un linguaggio di programmazione universale per l'organizzazione di calcoli in parallelo su qualsiasi dispositivo dotato di più di un core di calcolo e di supporto OCL. Non è CUDA o ATI Stream, che sono personalizzati per le GPU.
Inoltre, in alcuni casi la parallelizzazione e i calcoli OCL su CPU sono ancora più veloci che su GPU. Ora rendo obbligatoria la scelta del dispositivo nelle impostazioni dei miei programmi, perché la velocità dei calcoli dipende direttamente dalla quantità di dati elaborati e dalla "severità" dei calcoli (dipende anche dalle impostazioni di input): a volte è più veloce su GPU, a volte su CPU.
Si veda - non c'è alcuna menzione di OCL per le GPU e della modalità di emulazione per altri dispositivi. OpenCL è un linguaggio di programmazione universale per l'organizzazione di calcoli in parallelo su qualsiasi dispositivo dotato di più di un core di calcolo e di supporto OCL. Non è CUDA o ATI Stream, che sono progettati per le GPU.
Forse avete ragione sotto certi aspetti, dato che la CPU è vista come un dispositivo. Ma alcuni dati suggeriscono che si tratta piuttosto di emulazione. Ad esempio, si sospetta che la scrittura di un buffer nella memoria del dispositivo CLBufferWrite() nel caso della CPU avvenga solo "per un tick", perché la CPU ha solo una memoria globale. Tuttavia, la CPU dispone anche di una cache, ma non so che fine faccia e come funzioni.
Inoltre, in alcuni casi la parallelizzazione e i calcoli OCL sulla CPU sono ancora più veloci di quelli sulla GPU.
Sì, ci sono casi in cui, ad esempio, il prodotto scalare di dot( ) è più veloce sulla CPU. Ma non farei ipotesi su cosa sarebbe più veloce se il confronto fosse tra un Core 2 Duo e una scheda grafica più potente di quella del link. Soprattutto se ci si occupa di ottimizzare l'algoritmo. È diverso per CPU e GPU, indipendentemente da ciò che si dice.
Che cosa è presto per abilitare, per favore chiarisci. Se OpenCL - è già abilitato. Tutti gli esperimenti sono stati eseguiti direttamente in MetaEditor 5.
P.S. L'aspetto principale è che, grazie a OCL, il codificatore ha accesso a qualcosa che prima non aveva. Questi sono:
- (S)SSEx, che può essere incluso in Visual Studio, ma non può essere incluso in MQL5 senza OCL (senza contare le dll).
- accesso ai calcoli su GPU discrete, che accelerano ulteriormente ciò che può essere fatto su un singolo core in MQL5 senza trucchi di tipo dll.
.
Intendevo l'adattamento al cloud computing, se si immagina che ogni core del processore sia assistito da molte "api affamate" di acceleratori grafici collegati in rete con molti computer, sarà davvero fantastico e veloce.
Metà del lavoro è fatto, ora si tratta solo di attivarlo per il cloud....
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Il nuovo articolo OpenCL: il ponte verso mondi paralleli è stato pubblicato:
Alla fine di gennaio 2012, la società di sviluppo software che sta dietro lo sviluppo di MetaTrader 5 ha annunciato il supporto nativo per OpenCL su MQL5. Utilizzando un esempio illustrativo, l'articolo espone le basi della programmazione in OpenCL in ambiente MQL5 e fornisce alcuni esempi della semplice ottimizzazione del programma per l'aumento della velocità operativa.
Il comando di scrittura (host -> dispositivo) inizializza un oggetto di memoria tramite dati e allo stesso tempo colloca l'oggetto nella memoria del dispositivo.
Tieni presente che la validità degli oggetti di memoria disponibili nel dispositivo non è specificata nella specifica OpenCL poiché dipende dal fornitore dell'hardware corrispondente al dispositivo. Pertanto, presta attenzione durante la creazione di oggetti di memoria.
Dopo che gli oggetti di memoria sono stati inizializzati e scritti sui dispositivi, l'immagine sembra essere qualcosa del genere:
Autore: Sceptic Philozoff