Voici ce que vous pouvez faire avec OpenCL directement dans MetaTrader 5, sans aucune DLL.

 

Il s'agit d'une démonstration non seulement des calculs GPU dans le code MQL5, mais aussi des capacités graphiques du terminal :

Le code source complet sous forme de script est joint. Le bogue sur OpenCL 1.2 a été corrigé.

Dossiers :
Seascape.mq5  39 kb
 
Renat Fatkhullin:

Il s'agit d'une démonstration non seulement des calculs GPU dans le code MQL5, mais aussi des capacités graphiques du terminal :

Le code source complet sous forme de script est joint.

Aaaaaaaaahhhhhhhhhh ... Arrêtez de me faire descendre !
 

Nous préparons une bibliothèque de personnel OpenCL pour les mathématiques et le rendu, ce qui prendra quelques semaines. Ça va être incroyablement rapide et beau.

En attendant, jetez un coup d'œil à la bibliothèque graphique mise à jour pour le rendu des graphiques scientifiques.

 

О ! Bientôt, il sera possible de jouer à des jeux ))))

A quoi sert une plateforme de négociation ? Eh bien, les calculs sont compréhensibles, et toutes sortes de belles choses ne font que séduire.

 
Vitalie Postolache:

О ! Bientôt, il sera possible de jouer à des jeux ))))

A quoi sert une plateforme de négociation ? Eh bien, les calculs sont clairs, et toutes sortes de belles choses ne font que séduire.

Avec OpenCL, vous pouvez utiliser des milliers de cœurs de GPU pour accélérer les calculs mathématiques de cent (plusieurs centaines) fois.

C'est exactement ce dont on a besoin dans le commerce et ce qui permettra de passer à l'utilisation de techniques qui nécessitent des ordres de grandeur plus importants de ressources de calcul.

Dans MQL4, vous creusez avec une pelle, tandis que dans MQL5 avec OpenCL, vous obtenez un tracteur en termes de performances. Pour mettre les calculs du GPU à la portée du plus grand nombre, nous préparons de nouvelles bibliothèques mathématiques en plus de celles qui existent déjà.

 

Je n'ai pas pu le passer, je l'ai laissé passer.

 
Renat Fatkhullin:

Il s'agit d'une démonstration non seulement des calculs GPU dans le code MQL5, mais aussi des capacités graphiques du terminal :

Le code source complet sous forme de script est joint.

Je l'ai compilé, je l'ai exécuté.

Ne fonctionne pas.

MT5 build 1491.

W7 prof SP1 eng 64-bit


 
prostotrader:

Je l'ai compilé, lancé.

Regardez les journaux du terminal et de la fenêtre expert.

Le script est complexe, il vient d'être écrit et n'a pas encore été débogué. Il ne fonctionne pas partout sans GPU.

 
Renat Fatkhullin:

Regardez les journaux du terminal et de la fenêtre de l'expert.

Le script est complexe, il vient d'être écrit et n'a pas encore été débogué. Il ne fonctionne pas partout sans 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, on va se débrouiller. Le code était comme le test d'un stylo.

Chaque GPU a son propre compilateur et c'est lui qui décide de ce qu'il faut ignorer. Les compilateurs OpenCL d'Intel, AMD et Nvidia sont différents.

Nous testons sous OpenCL 2.0 qui a une bien meilleure fonctionnalité. Nous allons vérifier et corriger ce test sur OpenCL 1.2.

Raison: