Ecco cosa si può fare con OpenCL direttamente in MetaTrader 5 senza alcuna DLL

 

Questa è una dimostrazione non solo dei calcoli della GPU nel codice MQL5, ma anche delle capacità grafiche del terminale:

Il codice sorgente completo come script è allegato. Il bug su OpenCL 1.2 è stato risolto.

File:
Seascape.mq5  39 kb
 
Renat Fatkhullin:

Questa è una dimostrazione non solo dei calcoli della GPU nel codice MQL5, ma anche delle capacità grafiche del terminale:

Il codice sorgente completo come script è allegato.

Aaaaaaaaahhhhhh ... Non fatemi scendere!
 

Stiamo preparando una libreria di personale OpenCL per la matematica e il rendering, il che richiederà alcune settimane. Sarà incredibilmente veloce e bello.

Nel frattempo, date un'occhiata alla libreria grafica aggiornata per il rendering dei grafici scientifici.

 

О! Presto arriverà ai giochi ))))

A cosa serve una piattaforma di trading? Beh, i calcoli sono comprensibili, e ogni sorta di cose belle non fanno che sedurre.

 
Vitalie Postolache:

О! Presto arriverà ai giochi ))))

A cosa serve una piattaforma di trading? Beh, i calcoli sono chiari, e ogni sorta di cose belle non fanno che sedurre.

Con OpenCL è possibile utilizzare migliaia di core di GPU per accelerare i calcoli matematici di cento (diverse centinaia) volte.

Questo è esattamente ciò che è necessario nel trading e ciò che permetterà di passare all'uso di tecniche che richiedono ordini di grandezza più risorse di calcolo.

In MQL4 si scava con una pala, mentre in MQL5 con OpenCL si ottiene un trattore in termini di prestazioni. Per portare i calcoli su GPU alle masse, stiamo preparando nuove librerie matematiche in aggiunta a quelle esistenti.

 

Non è riuscito a superarlo, è passato oltre

 
Renat Fatkhullin:

Questa è una dimostrazione non solo dei calcoli della GPU nel codice MQL5, ma anche delle capacità grafiche del terminale:

Il codice sorgente completo come script è allegato.

L'ha compilato e l'ha eseguito.

Non funziona.

MT5 build 1491.

W7 prof SP1 eng 64-bit


 
prostotrader:

L'ha compilato e l'ha eseguito.

Guardate i log del terminale e della finestra dell'esperto.

Lo script è complesso, appena scritto e non ancora debuggato. Non gira ovunque senza GPU.

 
Renat Fatkhullin:

Guardate i log del terminale e della finestra dell'esperto.

Lo script è complesso, appena scritto e non ancora debuggato. Non gira ovunque senza GPU.

2016.12.10 03:57:08.180 Seascape (GOLD-12.16,H1)        OpenCL: GPU device 'GeForce GTX 970' selected
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)        <kernel>:188:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)           uint b=(uint)(res[2]*255);
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)        <kernel>:189:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)           uint g=(uint)(res[1]*255);
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)        <kernel>:190:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)           uint r=(uint)(res[0]*255);
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)        
2016.12.10 03:57:08.218 Seascape (GOLD-12.16,H1)        OpenCL program create failed
2016.12.10 03:57:36.695 Seascape (GOLD-12.16,H1)        OpenCL: GPU device 'GeForce GTX 970' selected
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)        <kernel>:188:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)           uint b=(uint)(res[2]*255);
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)        <kernel>:189:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)           uint g=(uint)(res[1]*255);
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)        <kernel>:190:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)           uint r=(uint)(res[0]*255);
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)        
2016.12.10 03:57:36.730 Seascape (GOLD-12.16,H1)        OpenCL program create failed

2016.12.10 03:57:06.729 OpenCL  Device #0: GPU NVIDIA Corporation GeForce GTX 970 with OpenCL 1.2 (13 units, 1367 MHz, 4096 Mb, version 372.90)
 

Ok, troveremo una soluzione. Il codice era come una prova di una penna.

Ogni dispositivo GPU ha il suo compilatore e decide cosa saltare. I compilatori OpenCL di Intel, AMD e Nvidia sono diversi.

Stiamo testando sotto OpenCL 2.0 che ha una funzionalità molto maggiore. Controlleremo e sistemeremo questo test su OpenCL 1.2.

Motivazione: