Peut-être que Renat peut voir ce que l'on peut apprendre de cela. Il est tout à fait possible que la nouvelle spécification donne de meilleures performances dans MQL5 également, n'est-ce pas ?
Quant à C#/C++, si besoin est, on peut aussi le laisser tomber. L'essentiel est d'obtenir le rendement maximal possible. ;)
Pour l'instant, je me retiens de réécrire l'optimiseur CL pour Sharp en espérant que le nouveau MT4 fournira au moins la version 1.1 à terme. Le langage est le même, le compilateur est le même et il n'y a pas d'obstacles principaux (je n'ai pas vraiment besoin du support OpenCL dans un testeur MT4, même si je continuerai à le faire s'il apparaît). S'il n'est pas implémenté - je penserai à la gauche.
Pour chaque script, je fournirai un lien vers l'article où il a été publié afin que d'autres puissent le trouver rapidement, exécuter les tests et comparer les résultats si nécessaire.
2013.11.2916:39:50 ParallelTester_00-01 x (EURUSD,H1) CLGetInfoInteger() returned 22013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) OpenCL init OK!
2013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) GPU time = 62 ms
2013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12802013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) Result on Gpu МахResult==1.34787 at 699 pass
2013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) CPU time = 14492 ms
2013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12802013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) Result on Cpu МахResult==1.34787 at 699 pass
2013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) CpuTime/GpuTime = 233.741935483871
P.S. J'ai changé mon type dans le code du noyau dans les paramètres de la fonction gpuEMA de__global à__local. Un peu plus rapide, mais toujours plus lent que sur le CPU.
2013.12.01 14:29:46 qpu_Future_EMA-Rainbow (EURUSD,M1) Calculate 1000129 bars at CPU, time = 795 ms
2013.12.01 14:29:51 qpu_Future_EMA-Rainbow (EURUSD,M1) OpenCL: GPU device 'GeForce GTX 650 Ti BOOST' selected
2013.12.01 14:29:52 qpu_Future_EMA-Rainbow (EURUSD,M1) Calculate 1000129 bars at GPU (OpenCL), time = 1061 ms
P.S. Changement dans le code du noyau des paramètres de la fonction gpuEMA de__global à__local. Un peu plus rapide, mais toujours plus lent que sur le CPU.
Mes résultats sont similaires. Cela a été discuté depuis longtemps et c'est logique - la tâche est trop simple, le transfert de mémoire vers et depuis la carte vidéo n'est pas rentable. L'avantage du GPU apparaît dans des tâches plus complexes.
MetaDriver: J'ai des résultats similaires. Cela a été discuté depuis longtemps, et c'est logique - la tâche est trop simple, le transfert de mémoire vers et depuis la carte vidéo n'est pas rentable. L'avantage du GPU apparaît dans des tâches plus complexes.
Je vois, merci, je vais expérimenter avec des tâches plus complexes.
Un exemple d'utilisation de l'accélération GPU pour le trading (produits dérivés).
Mark Joshi - célèbre pour ses livres sur les mathématiques financières, en particulier sur les produits dérivés et le commerce des options, a rendu compte ici de son travail :
Il a traduit son travail de style OOP en GPU CUDA. Il a commencé en 2010, puis a fait une pause, et de 2011 à l'été 2014, il est parvenu à la version 0.3. Il a réussi à atteindre une accélération de 100X... 137X fois - et cela avec un algorithme extraordinaire, ce qui est difficile.
Le travail a utilisé la bibliothèque QuantLib en C++, qu'il admet lui-même avoir dû retravailler dans le sens "POO ->-> approche procédurale" - afin de faire fonctionner le tout sur le GPU CUDA.
Il écrit :
"J'ai mis en œuvre la tarification de Monte Carlo de l'IRD avec le LMM sur le GPU avec les moindres carrés pour les caractéristiques de l'exercice précoce.
Vous pouvez obtenir le code de kooderive.sourceforge.net en C++ et CUDA. Le document est disponible à l'adresse suivante : ......
J'ai utilisé un code complètement différent pour CUDA de celui que j'avais précédemment utilisé pour C++. En substance, je traite les données comme le concept central et j'utilise le code pour agir sur les données. Le style est très fonctionnel. Cela m'a demandé beaucoup de travail car mes précédentes implémentations C++ étaient orientées objet."
Peut-être que Renat peut voir ce que l'on peut apprendre de cela. Il est tout à fait possible que la nouvelle spécification donne de meilleures performances dans MQL5 également, n'est-ce pas ?
Quant à C#/C++, si besoin est, on peut aussi le laisser tomber. L'essentiel est d'obtenir le rendement maximal possible. ;)
J'ai testé certains des scripts de ce fil de discussion sur une telle machine :
CPU-Z
CUDA-Z
Pour chaque script, je fournirai un lien vers l'article où il a été publié afin que d'autres puissent le trouver rapidement, exécuter les tests et comparer les résultats si nécessaire.
Test 1
Test 2
Test 3
échelle = 1000
Test 4
Test 5
Test 6
Test7
Test 8
J'ai également essayé de tester l'indicateurqpu_EMA-Rainbow de MetaDriver.
Sur le CPU, le résultat est parfois jusqu'à 2x meilleur. Voici le résultat :
//---
Volodya(MetaDriver), montrez-moi vos résultats ?
P.S. J'ai changé mon type dans le code du noyau dans les paramètres de la fonction gpuEMA de__global à__local. Un peu plus rapide, mais toujours plus lent que sur le CPU.
J'ai également essayé de tester l'indicateurqpu_EMA-Rainbow de MetaDriver.
Sur le CPU, le résultat est parfois jusqu'à 2x meilleur. Voici le résultat :
Volodya(MetaDriver), montrez-moi vos résultats ?
P.S. Changement dans le code du noyau des paramètres de la fonction gpuEMA de__global à__local. Un peu plus rapide, mais toujours plus lent que sur le CPU.
J'ai des résultats similaires. Cela a été discuté depuis longtemps, et c'est logique - la tâche est trop simple, le transfert de mémoire vers et depuis la carte vidéo n'est pas rentable. L'avantage du GPU apparaît dans des tâches plus complexes.
Un exemple d'utilisation de l'accélération GPU pour le trading (produits dérivés).
Mark Joshi - célèbre pour ses livres sur les mathématiques financières, en particulier sur les produits dérivés et le commerce des options, a rendu compte ici de son travail :
http://ssrn.com/abstract=2388415
Il a traduit son travail de style OOP en GPU CUDA. Il a commencé en 2010, puis a fait une pause, et de 2011 à l'été 2014, il est parvenu à la version 0.3. Il a réussi à atteindre une accélération de 100X... 137X fois - et cela avec un algorithme extraordinaire, ce qui est difficile.
Le travail a utilisé la bibliothèque QuantLib en C++, qu'il admet lui-même avoir dû retravailler dans le sens "POO ->-> approche procédurale" - afin de faire fonctionner le tout sur le GPU CUDA.
Il écrit :
"J'ai mis en œuvre la tarification de Monte Carlo de l'IRD avec le LMM sur le GPU avec les moindres carrés pour les caractéristiques de l'exercice précoce.
Vous pouvez obtenir le code de kooderive.sourceforge.net en C++ et CUDA. Le document est disponible à l'adresse suivante : ......
J'ai utilisé un code complètement différent pour CUDA de celui que j'avais précédemment utilisé pour C++. En substance, je traite les données comme le concept central et j'utilise le code pour agir sur les données. Le style est très fonctionnel. Cela m'a demandé beaucoup de travail car mes précédentes implémentations C++ étaient orientées objet."
Son projet lui-même est open source :
http://sourceforge.net/projects/kooderive/