OpenCL: test di implementazione interna in MQL5 - pagina 69

 

Buon pomeriggio a tutti.

Un consiglio su questo argomento molto interessante:

1. Ci sono già degli EAs per il trading che usano OpenCL per i calcoli?

(più di un anno fa è stato annunciato il supporto e tutti insieme abbiamo provato le prestazioni su uno script di prova, ma è passato molto tempo e l'argomento è diventato silenzioso...).

2. Se ho diverse schede video installate nel mio sistema, verranno utilizzate tutte per i calcoli o solo una di esse?
 
vittt: 1. Ci sono già degli EAs di trading che usano OpenCL per i calcoli?

Probabilmente esiste, ma è improbabile che sia in un kodobaz. Ci sono pochi appassionati e non tutti lo fanno.

OpenCL è vantaggioso quando permette un'accelerazione significativa dei calcoli, che è fondamentale per il trading. Infilarlo nell'algoritmo solo per il gusto di "shoblo" o per caricare la scheda video non è troppo sensato.

Imho, l'output più serio può essere ottenuto con calcoli intensivi ben parallelizzati o per i progettisti di reti neurali. Probabilmente vale la pena chiederlo a loro.

Per esempio, personalmente ho una direzioneche mi interessa, ma OpenCL non è quasi necessario lì, perché non sarebbe di nessuna utilità (troppe operazioni di accesso casuale nella memoria globale che solo il diavolo sa come parallelizzare). Non sono ancora disperato e non ho provato ogni ragionevole possibilità - ma sicuramente non sarà in libero accesso.

2. Se avete più di una scheda video installata nel sistema, saranno tutte utilizzate per il calcolo o solo una di esse?

L'azienda ha detto qualcosa a proposito di problemi con schede multiple o anche a doppia testa. Non so se sono risolti.

 

Salve.

Sto facendo calcoli di massa in MetaTrader5, risolvendo un problema (modellazione di una partita di poker). Sto scrivendo in Mcl5 perché sono un nerd e lo conosco solo io. Nel mio caso i problemi di performance sono molto importanti.

Quindi, capisco che i compiti, dove ogni passo di calcolo successivo non è legato ai risultati dei precedenti, possono essere parallelizzati. Bene! Ho proprio un compito del genere.

Ma come posso metterlo in parallelo? Se il mio algoritmo opera con strutture (struct) i cui metodi

- ad esempio, aprire un file di testo da un disco rigido, leggerlo, aggiungere informazioni negli array di strutture, chiudere il file di testo

- e altri metodi contengono molte funzioni standard, ad esempio rand(), ArrayResize(), ecc.

OpenCl, da quanto ho capito, è un linguaggio simile al c++. Comunque, la mia domanda è: come parallelizzare i calcoli in generale?

 
Stasikusssss:

Salve.

Sto facendo calcoli di massa in MetaTrader5, risolvendo un problema (modellazione di un gioco di poker). Sto scrivendo in Mcl5 perché sono un nerd e lo conosco solo io. Nel mio caso i problemi di performance sono molto importanti.

Quindi, capisco che i compiti, dove ogni passo di calcolo successivo non è legato ai risultati dei precedenti, possono essere parallelizzati. Bene! Ho proprio un compito del genere.

Ma come posso metterlo in parallelo? Se il mio algoritmo opera con strutture (struct) i cui metodi

- ad esempio, aprire un file di testo da un disco rigido, leggerlo, aggiungere informazioni negli array di strutture, chiudere il file di testo

- e altri metodi contengono molte funzioni standard, ad esempio rand(), ArrayResize(), ecc.

OpenCl, da quanto ho capito, è un linguaggio simile al c++. Comunque, la mia domanda è: come posso parallelizzare i calcoli in generale?

Google è l'aiuto.

Non otterrete una risposta a tale domanda su questo forum.

Per una semplice combinazione di due motivi:

I programmatori principianti non programmano affatto in OpenCL (e non si occupano affatto del parallelismo) perché non riescono ad afferrarlo.

2 I programmatori esperti non vogliono armeggiare con voi perché (la vostra domanda) richiede uno studio approfondito della vostra qualifica, per rispondere in un linguaggio comprensibile per voi, e poi darvi una lunga spiegazione della vostra risposta.

Quindi, rispettate le risorse di tempo dei programmatori esperti e studiate voi stessi le basi, ma quando lo capirete e avrete domande specifiche sul linguaggio (OpenCL), avrete più possibilità di avere una conversazione significativa.

Быстрое погружение в MQL5
Быстрое погружение в MQL5
  • 2012.08.02
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы решили изучить язык программирования торговых стратегий MQL5, но ничего о нем не знаете? Мы постарались взглянуть на MQL5 и терминал MetaTrader 5 глазами новичка и написали эту небольшую вводную статью. Из неё вы сможете получить краткое представление о возможностях самого языка, а также несколько полезных советов по работе с редактором MetaEditor 5 и самим терминалом.
 

si potrebbe rispondere che è possibile parallelizzare

solo in C puro, solo le operazioni aritmetiche più semplici

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - Документация по MQL5
 

OpenCL 2.0

OpenCL 2.0 è l'ultima significativa evoluzione dello standard OpenCL, progettato per semplificare ulteriormente la programmazione multipiattaforma, consentendo al contempo di accelerare facilmente una ricca gamma di algoritmi e modelli di programmazione. Come base per queste maggiori capacità, OpenCL 2.0 definisce un modello di esecuzione migliorato e un sottoinsieme dei modelli di memoria C11 e C++11, sincronizzazione e operazioni atomiche.

  • postare un commento sul thread di feedback di OpenCL 2.0 sui forum di Khronos - buono per feedback generali e domande
  • depositare un bug nel sistema Khronos Bugzilla sotto OpenCL 2.0 - buono per correzioni dettagliate ed errori trovati nella specifica.
Official OpenCL 2.0 Feedback thread
Official OpenCL 2.0 Feedback thread
  • www.khronos.org
The Khronos Group promotes the deployment and development of open standard APIs to enable authoring and playback of dynamic media on a wide variety of platforms and embedded devices. Current APIs are OpenGL ES, OpenML, OpenMAX, OpenSL ES, and Collada.
 
tol64:

OpenCL 2.0 è l'ultima significativa evoluzione dello standard OpenCL,.............

Dove vuoi arrivare con questo?
 
MetaDriver:
Dove vuoi arrivare?

Ho visto questa notizia e ho deciso di postarla qui. È interessante approfondire, ma non riesco ancora a trovare il tempo. Ecco la stessa notizia in russo:


Adozione delle specifiche OpenCL 2.0

Khronos Group ha annunciato la ratifica e la disponibilità della versione finale della specifica OpenCL 2.0. Secondo gli sviluppatori, il rilascio di OpenCL 2.0 rappresenta una pietra miliare significativa nell'evoluzione di uno standard open source e gratuito che semplifica la programmazione parallela multipiattaforma.

La nuova versione migliora il modello di esecuzione e i sottoinsiemi del modello di memoria di C11 e C++11, la sincronizzazione e le operazioni atomiche. Si dice che la nuova versione di OpenCL permette di utilizzare una gamma molto più ampia di algoritmi e modelli di programmazione. La nuova versione tiene conto dei desideri degli sviluppatori di software che usano OpenCL. Le specifiche sono già disponibili sul sito web di Khronos.

I miglioramenti e le nuove caratteristiche di OpenCL 2.0 includono: memoria virtuale condivisa, parallelismo annidato, spazio degli indirizzi condiviso, migliore elaborazione delle immagini, incluso il supporto sRGB. Inoltre, gli sviluppatori evidenziano operazioni atomiche C11, pipeline di stack FIFO in-memory ed estensioni di driver installabili per Android.

Принята спецификация OpenCL 2.0
  • www.ixbt.com
Принята спецификация OpenCL 2.0 Открытый, бесплатный для использования стандарт OpenCL 2.0 упрощает кроссплатформенное параллельное программирование
 
tol64:

Ho visto questa notizia e ho deciso di postarla qui. È interessante approfondire, ma non riesco ancora a trovare il tempo. Ecco la stessa notizia in russo:


Adozione delle specifiche OpenCL 2.0

Khronos Group ha annunciato la ratifica e la disponibilità della versione finale della specifica OpenCL 2.0. Secondo gli sviluppatori, il rilascio di OpenCL 2.0 rappresenta una pietra miliare significativa nell'evoluzione di uno standard aperto e gratuito che semplifica la programmazione parallela multipiattaforma.

La nuova versione migliora il modello di esecuzione e i sottoinsiemi del modello di memoria di C11 e C++11, la sincronizzazione e le operazioni atomiche. Si dice che la nuova versione di OpenCL permette di utilizzare una gamma molto più ampia di algoritmi e modelli di programmazione. La nuova versione tiene conto dei desideri degli sviluppatori di software che usano OpenCL. Le specifiche sono già disponibili sul sito web di Khronos.

Le caratteristiche e i miglioramenti di OpenCL 2.0 includono: memoria virtuale condivisa, parallelismo annidato, spazio degli indirizzi condiviso, migliore gestione delle immagini, incluso il supporto sRGB. Inoltre, gli sviluppatori evidenziano operazioni atomiche C11, pipeline di stack FIFO in-memory ed estensioni di driver installabili per Android.

Beh, questo è comprensibile, cosa farne, scaricarlo in C#/C++?
 
MetaDriver:
Cosa farne, dovrei scaricarlo in C#/C++?

Forse Renat può vedere cosa si può imparare da questo. È abbastanza possibile che la nuova specifica dia migliori prestazioni anche in MQL5, vero?

Per quanto riguarda C#/C++, se necessario, possiamo anche scaricarlo. La cosa principale è ottenere il massimo rendimento possibile. ;)