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

 
Ashes: Cela n'a pas aidé.

Dites-nous en détail ce que vous avez fait. En commençant par la façon dont vous avez démoli le SDK d'AMD APP.

A propos, peut-être n'avez-vous pas inséré dans le script ParallelTester_00-01x un paramètre égal à 0 dans la fonction CLContextCreate()(elle peut être exécutée sur l'hôte (c'est-à-dire sur le CPU). Ce n'était pas écrit dans mon post.

 
Mathemat:
Dites-nous en détail ce que vous avez fait. En commençant par la façon dont vous avez démonté le SDK AMD APP.

Désinstallez AMD APP SDK en exécutant le fichier Setup.exe approprié, Uninstall. Redémarrage.

Installé Intel OCL (intel_ocl_sdk_1.5_x64_setup.exe), RunTime seulement. Redémarrage.

Exécuter MT5 - manqué. Registre corrigé selon vos conseils. Reloaded MT5 - bummer.

J'ai ajouté le chemin en suivant les conseils de mql5, je l'ai essayé avec et sans guillemets, avec x64, et x32. Après chaque modification du registre, j'utilise à nouveau MT5 et j'utilise - les mêmes vieux œufs, mais d'un seul côté.

Maintenant, HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors ressemble à ceci :

(Par défaut)REG_SZ (valeur non attribuée)

C:\Program Files (x86)\Intel\OpenCL SDK1.5\bin\x86\intelocl.dll REG_DWORD 0x00000000 (0)

 
Ashes: Actuellement, HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors ressemble à ceci :

(Par défaut)REG_SZ (valeur non attribuée)

C:\Program Files (x86)\Intel\OpenCL SDK\1.5\bin\x86\intelocl.dll REG_DWORD 0x00000000 (0)

Tu as regardé là-dedans ? Moi, par exemple, je n'ai rien à ce chemin (mais j'ai téléchargé et installé seulement le runtime, c'est peut-être pour cela).

Et deuxièmement, j'ai juste fait intelocl.dll sans le chemin complet. Il a probablement été enregistré lors de l'installation du runtime de toute façon.

P.S. J'ai expérimenté avec des chemins complets. Metatrader ne voit pas OpenCL avec les chemins complets (les deux). Mais si je mets juste intelocl.dll comme nom, tout devient visible immédiatement, même sans redémarrer l'ordinateur.

Je ne sais pas comment choisir le "bon" fichier parmi deux fichiers existants portant le même nom dans le système.

Veuillez rendre compte ici du processus. Quand même, c'est intéressant, il y a peut-être des nuances. J'ai moi-même lutté contre ce problème pendant longtemps, et j'ai effectivement "gâché" le résultat, que j'aime beaucoup.

P.P.S. Au fait, quand j'étais sur la ressource Intel, ils m'ont conseillé de désinstaller complètement le SDK Intel et de le réinstaller à nouveau. C'est-à-dire qu'il ne faut pas seulement désinstaller, mais aussi aller dans les répertoires system32 et sysWOW64 et supprimer tout ce qui concerne intelocl. Il s'agit de intelocl*.dll, opencl*.dll et d'autres fichiers. Quelque part par ici se trouve http://software.intel.com/en-us/forums/intel-opencl-sdk/. Quand je l'aurai trouvé, j'ajouterai un lien plus précis.

Liens utiles : http://software.intel.com/en-us/articles/opencl-release-notes/

Et ici - particulièrement utile : http://software.intel.com/en-us/forums/showthread.php?t=102023&o=a&s=lr, là les conseils d'Uri Levy (Intel) peuvent vraiment aider. De toute façon, c'est toujours un jeu de tambourin.

 
MetaDriver (p. 53) :

C'est sur le CPU (dans mon cas, c'est le dispositif 1) :

J'ai intégré le paramètre CLContextCreate(device) dans le paramètre du script. Vous pouvez vous promener dans toutes les options.

Ce qui est intéressant, c'est ceci :

Ce script sur la version 630 ne fonctionne pas comme ça. Pas de message, il entre dans une boucle, chargeant la pierre à 100%. Et ça ne va pas au-delà d'un délai raisonnable. Mais j'ai déjà le runtime d'Intel.

 
Mathemat:

Ce qui est intéressant, c'est comment :

Ce script sur la version 630 ne fonctionne pas comme ça. Pas de message, entre dans une boucle, charge la pierre à 100%. Et ça ne va pas au-delà d'un délai raisonnable. Mais j'ai déjà le runtime d'Intel.

Recompilé. Ça marche pour moi.

2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 326.6
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==4.15901 at 208 pass
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40825 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==4.15901 at 208 pass
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 125 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

 
MetaDriver: Je l'ai recompilé. Ça marche pour moi.

C'est sur l'unité centrale ? ! Eh bien, si c'est le cas, tu me fais peur...

Je me suis excité trop tôt. Je l'ai exécuté et ça n'avait aucun sens. Pas une seule entrée dans le journal de l'EA. Mais le scénario a démarré et a immédiatement rempli toute la roche. En d'autres termes, il a tapé sur quelque chose, mais n'est pas arrivé à CLContextCreate() (il aurait dit quelque chose s'il y était arrivé, n'est-ce pas ?).

Quelque chose de nouveau. Il semble que le runtime Intel ne comprenne pas le code compilé avec le SDK AMD. J'ai défini OCL_Device à la fois sur 0 et -1. Aucun effet.

En général, il est gênant de ne pas pouvoir choisir la plateforme. J'aimerais qu'il soit possible de le faire. J'en ai marre de réinstaller.

 
Mathemat:

C'est sur l'unité centrale ? ! Eh bien, si c'est le cas, tu me fais peur...

Non, sur le GPU. Mais le dispositif OpenCL est sélectionnable. Ici, sur l'unité centrale :

2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 74.28571428571429
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==3.53209 at 36 pass
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40560 ms
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==3.53209 at 36 pass
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 546 ms
2012.04.21 06:19:37     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

Je me suis excité trop tôt. Je l'ai exécuté et ça n'avait aucun sens. Pas une seule entrée dans le journal de l'EA. Mais le script démarre et remplit immédiatement toute la roche. C'est-à-dire qu'il tape sur quelque chose, mais n'arrive pas à CLContextCreate() (s'il l'avait fait, il aurait dit quelque chose, non ?).

Quelque chose de nouveau. C'est comme si le runtime Intel ne comprenait pas le code compilé avec le SDK AMD. J'ai défini OCL_Device à la fois sur 0 et -1. Aucun effet.

En général, il est gênant de ne pas pouvoir choisir la plate-forme. Il serait souhaitable d'avoir une telle opportunité. J'en ai marre de réinstaller.

Oh, mec, c'est un ransomware.)

Ok, voici le code source. Faites-en ce que vous voulez.

Le code ne compile pas sur AMD SDK. Du moins, le code OCL le fait. Le programme OCL est compilé pendant l'exécution du code mql. Le fichier EX5 du snap-in OCL compile uniquement les fonctions de pont mql/ocl-driver. Je ne pense pas qu'ils soient compilés dans un code machine différent selon le fabricant du pilote. Bien que seuls les développeurs puissent pleinement clarifier ce point.

 
MetaDriver: Le code ne compile pas sur AMD SDK.
C'est compréhensible, je parlais mal (enfin, je ne suis pas un codeur-professionnel). Mais cela dépend toujours du fournisseur de la "bibliothèque" OpenCL (les fonctions internes elles-mêmes, pas l'API).
 
Mathemat:

Vous l'avez vérifié là-bas ? Moi, par exemple, je n'ai rien de tel sur ce chemin (mais j'ai seulement téléchargé et installé le runtime, c'est peut-être pour cela).

Et deuxièmement, j'ai juste fait intelocl.dll sans le chemin complet. Il a probablement été enregistré lors de l'installation du runtime de toute façon.

...

Le fichier intelocl.dll "nu" a été l'un des premiers à être vérifié. Il existe un fichier portant ce nom dans les dossiers x64 et x86.

 
Ashes: Le fichier intelocl.dll "nu" a été l'un des premiers à être vérifié. Il existe un fichier portant ce nom dans les dossiers x64 et x86.

Je ne sais pas quoi faire alors. Je me suis torturé pour trouver la solution, jusqu'à ce que l'équipe d'assistance me donne un indice. Ce n'est probablement pas une solution complète, mais cela a fonctionné sur mon ordinateur.

La première chose à apprendre est probablement de savoir comment supprimer proprement les traces des SDK précédents.