OpenCL : tests de l'implémentation interne dans MQL5 - page 47

 

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.

Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
  • 2011.11.30
  • gagadget.com
Стали доступны утекшие в сеть слайды, где с демонстрируется разница между процессорами Intel Ivy Bridge и Sandy Bridge в бенчмарках. Если быть точным, то сравниваются модели Core i7-3770 и Core i7-2600 (i7-3770K и i7-2600K по какой-то причине не были использованы).
 
Mathemat:

Qu'est-ce que je fais de mal maintenant ?

Recompilez le test. Cela devrait vous aider. Si ce n'est pas le cas, allez sur servicedesk.
 
Mathemat:

Qu'est-ce que je fais de mal maintenant ?
CLCreateContext a changé le paramètre bool use_gpu en int device (numéro de périphérique). Corrigez le code.
 
mql5:
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 :)

 
Dans la version 619, ces constantes sont renommées en CL_DEVICE_ANY/CL_DEVICE_GPU.

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)

Même le CPU est presque identique au i3-2120...
Dossiers :
 

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

 
MetaDriver:

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.

 
Mathemat:

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 l'unité centrale :) Plus on avance dans les bois, plus le GPU est froid...
 
MigVRN:
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.