OpenCL : tests de l'implémentation interne dans MQL5 - page 47
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Quelque chose ne fonctionne pas pour moi. La ligne d'initialisation est bien :
2012.04.01 05:52:01 Terminal CPU: GenuineIntel Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 7912 Mb, version 2.0 (sse2))
(J'ai mis OpenCL 1.1 d'AMD, et 1.2 par-dessus). Mais maintenant l'exécution du test donne
2012.04.01 06:06:49 ParallelTester_00-01x (EURUSD,H1) OpenCL not found.
Avant cela, j'ai mis à jour le pilote graphique Intel pour une version plus récente, puis j'ai supprimé les pilotes AMD avec leur propre installation, puis je les ai réinstallés.
Qu'est-ce que je fais de mal maintenant ?
P.S. Bientôt Ivy arrivera et il montrera vraiment ce qu'Intel peut faire dans les graphiques intégrés, avec Intel HD 4000. Regardez les graphiques.
Qu'est-ce que je fais de mal maintenant ?
Qu'est-ce que je fais de mal maintenant ?
Dans la nouvelle version, le paramètre de la fonction CLContextCreate a été modifié, int device est utilisé à la place de bool use_gpu.
with device>=0 is used as number of OpenCL device in sequence
with device==OPENCL_DEVICE_ANY (-1) used to automatically select from all available devices
with device==OPENCL_DEVICE_GPU (-2) used to automatically select from all available GPU devices
Pourriez-vous me montrer comment faire cela dans le code ? J'appelle CLContextCreate( OPENCL_DEVICE_ANY ) et j'obtiens le résultat à la compilation :
'OPENCL_DEVICE_ANY' - undeclared identifier ParallelTester_00-01x.mq5 145 31
Construire 619.
Et deuxième question : où puis-je trouver la dernière aide ?
P.S. Cela a fonctionné dès que j'ai mis l'argument à -1. La constante OPENCL_DEVICE_ANY n'a pas encore été déclarée :)
Mais dans les futures versions, ce sera CL_USE_ANY/CL_USE_GPU_ONLY.
J'ai décidé de vérifier comment OpenCL va fonctionner sur i3-2120 (ce n'est pas mon ordinateur, pas de vidéo discrète dans le système). J'ai installé AMD APP SDK, OpenCL-Z a tout détecté. Le terminal a affiché une ligne pendant l'initialisation :
2012.04.02 03:59:47 Terminal CPU: GenuineIntel Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz with OpenCL 1.1 (4 units, 3310 MHz, 8039 Mb, version 2.0)
Je l'ai vérifié sur le code MetaDriver joint à ce post et légèrement modifié avec les derniers changements de la version 619 (voir les premiers tests ici). Résultat :
2012.04.02 04:00:43 ParallelTester_00-01x (EURUSD,H1) CpuTime/GpuTime = 0.741385550890401
2012.04.02 04:00:43 ParallelTester_00-01x (EURUSD,H1) Result on Cpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:43 ParallelTester_00-01x (EURUSD,H1) Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:43 ParallelTester_00-01x (EURUSD,H1) CPU time = 20483 ms
2012.04.02 04:00:22 ParallelTester_00-01x (EURUSD,H1) Result on Gpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:22 ParallelTester_00-01x (EURUSD,H1) Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:22 ParallelTester_00-01x (EURUSD,H1) GPU time = 27628 ms
2012.04.02 03:59:55 ParallelTester_00-01x (EURUSD,H1) OpenCL init OK!
Au moment de l'exécution sur le "GPU", les quatre threads du processeur étaient occupés à 100%.
Que dois-je faire pour obtenir l'accélération ? Sur un système basé sur un Pentium G840 (également sans vidéo discrète), il était 25 fois plus rapide :
P.S. J'ai envoyé un message au Service Desk, mais je crains que ce soit plutôt mon problème... J'ai apparemment appris à installer et désinstaller correctement le SDK AMD APP les yeux fermés, mais je suppose que je n'ai pas encore fait le tour de tous les pièges. Bien que le Runtime Intel OpenCL soit installé sur mon système, il n'est toujours pas reconnu dans le terminal comme un périphérique OpenCL.
P.P.S. Il se trouve qu'il y a autre chose que j'ai déterré(https://www.mql5.com/ru/forum/6042/page25):
Cendres : 2012.03.05 17:43:16 Terminal CPU : GenuineIntel Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz avec OpenCL 1.1 (4 unités, 3092 MHz, 4008 Mb, version 2.0)
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) CpuTime/GpuTime = 0.734767766287369
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) Résultat sur Cpu MachResult==1.27347 à 1125 pass
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) Nombre d'indicateurs = 16 ; Nombre de barres d'historique = 144000 ; Nombre de succès = 1280
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) Temps CPU = 21309 ms
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) Résultat sur Gpu MachResult==1.27347 à 1125 pass
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) Nombre d'indicateurs = 16 ; Nombre de barres d'historique = 144000 ; Nombre de succès = 1280
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) Temps GPU = 29001 ms
2012.03.05 17:44:33 ParallelTester_00-01x (EURUSD,M1) OpenCL init OK !
:(((
Peut-être ai-je des "grenades du mauvais système" ? (Je veux dire la version AMD SDK)
GPU+OpenCL est un outil formidable, après tout !
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) CpuTime/GpuTime = 728.1857142857143
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Résultat sur Cpu MachResult==3.78654 à 50 passes
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Nombre d'indicateurs = 16 ; Nombre de barres d'historique = 50,000 ; Nombre de succès = 1280
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Temps CPU = 101946 ms
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Résultat sur Gpu MachResult==3.78654 à 50 passes
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Nombre d'indicateurs = 16 ; Nombre de barres d'historique = 50,000 ; Nombre de succès = 1280
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Temps GPU = 140 ms
GPU+OpenCL est un outil formidable, après tout !
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Temps GPU = 140 ms
Je propose de faire les tests de manière à ce que le temps de calcul du GPU ne soit pas si petit. Quoi qu'il en soit, 140 ms est une valeur trop peu fiable, surtout avec les erreurs de mesure de GetTickCount() qui se comptent en dizaines de millisecondes.
MD, c'est moi qui suis jalouse de toi.
Je suggère de faire les tests de manière à ce que le temps de calcul du GPU ne soit pas si petit.
Je n'ai pas la patience d'attendre une unité centrale :) Plus on avance dans les bois, plus le GPU est froid...
De même. :)
Mais je vais l'exécuter sur 4096 abeilles. Le CPU le comptera en cinq minutes.