OpenCL : tests de l'implémentation interne dans MQL5 - page 58
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
Eh bien, enfin, nous vous attendions. Si vous êtes prêt à expérimenter, installez le Runtime Intel OpenCL (lien instructions).
Exécutez le script sans rien y changer et postez le journal à partir de l'onglet "Experts" comme l'ont fait vos collègues précédents. Le script prendra environ 3 minutes pour s'exécuter sur votre gemme, soyez indulgent avec moi. Dans le même temps, nous découvrirons comment OpenCL fonctionne sur la pierre Sandy Bridge la plus cool.
Si vous n'avez pas la patience ou si vous pensez que c'est au-delà de vos capacités, ce n'est pas grave, sans vouloir vous offenser.
P.S. Le but de ce script est de voir ce qu'un CPU nu peut faire sans dragons vidéo discrets. Je soupçonne qu'avec Intel Runtime correctement inséré, ce script aura une accélération autour de 200 ou même légèrement plus.
Il y a un doute sur l'installation correcte du Runtime Intel OpenCL.
2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CpuTime/GpuTime = 1347.164383561644
2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) Result on Cpu МахResult==0.9316 at 10253 pass
2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 295029 ms
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==0.9316 at 10253 pass
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 219 ms
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) OpenCL init OK!
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) CLGetInfoInteger() returned 4
Il y a des doutes que le Runtime Intel OpenCL soit installé correctement.
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==0.9316 at 10253 pass
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 219 ms
Vous avez probablement donné à l'argument CLContextCreate() une valeur différente de zéro. Eh bien, je vous ai demandé de ne rien changer ! Nous connaissons déjà les capacités de votre dragon vidéo à deux têtes. Mais il semble que vous en ayez même plusieurs.
Selon mes estimations approximatives, à CLContextCreate(0), vous devriez avoir des chiffres concernant le temps CPU = 180000 ms et le temps GPU = 900 ms (approximativement). Votre premier temps d'exécution est étrangement élevé pour un tel processeur. Peut-être était-il surchargé par d'autres tâches ?
Pouvez-vous simplement exécuter le script tel que je l'ai joint - sans rien changer au code, pas un seul caractère?
P.S. Bien sûr, peut-être que device = 0 ne correspond pas au CPU mais à quelque chose d'autre. Alors, expérimentez (de 0 à 3). Le temps le plus élevé du GPU devrait en théorie correspondre au CPU nu, c'est-à-dire à l'hôte.
Vous n'avez pas mis zéro comme argument de CLContextCreate() mais quelque chose d'autre. Eh bien, je t'ai demandé de ne rien changer ! Nous connaissons déjà les capacités de votre dragon vidéo à deux têtes. Mais vous semblez en avoir plusieurs.
Selon mon estimation approximative, à CLContextCreate(0), vous devriez avoir des chiffres de l'ordre de temps CPU = 180000 ms et temps GPU = 900 ms (approximativement). Votre premier temps d'exécution est étrangement élevé pour un tel processeur. Peut-être était-il surchargé par d'autres tâches ?
Pouvez-vous simplement exécuter le script tel que je l'ai joint - sans rien changer, pas un seul caractère?
P.S. Bien sûr, peut-être que device = 0 ne correspond pas au CPU mais à quelque chose d'autre. Alors, expérimentez (de 0 à 3). Le temps le plus élevé du GPU devrait en théorie correspondre au CPU nu, c'est-à-dire à l'hôte.
Je n'ai pas changé les paramètres ! Je l'ai fait fonctionner tel quel.
D'après la vidéo, oui c'est 2x590.
J'ai réessayé avec CLContextCreate(0)1,2,3, le résultat est le même que précédemment.
Le problème peut provenir duRuntime Intel OpenCL.
Je n'ai pas changé les paramètres ! Il a commencé tel quel.
Je l'ai relancé avec CLContextCreate(0)1,2,3 le résultat est le même que précédemment.Tous les résultats sont les mêmes ? Je n'y crois pas... Eh bien, ce script ne peut pas avoir un temps GPU = 219 ms sur un CPU nu. Dans le meilleur des cas, ce serait environ 800 ms, mais pas environ 200 ms.
Voici mon résultat typique (j'ai un processeur Pentium G840) :
2012.04.22 22:23:09 ParallelTester_00-01x (EURUSD,H1) CpuTime/GpuTime = 88.40817091454272
2012.04.22 22:23:09 ParallelTester_00-01x (EURUSD,H1) Result on Cpu МахResult==1.05116 at 7785 pass
2012.04.22 22:23:09 ParallelTester_00-01x (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:23:09 ParallelTester_00-01x (EURUSD,H1) CPU time = 235873 ms
2012.04.22 22:19:13 ParallelTester_00-01x (EURUSD,H1) Result on Gpu МахResult==1.05116 at 7785 pass
2012.04.22 22:19:13 ParallelTester_00-01x (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:19:13 ParallelTester_00-01x (EURUSD,H1) GPU time = 2668 ms
2012.04.22 22:19:10 ParallelTester_00-01x (EURUSD,H1) OpenCL init OK!
2012.04.22 22:19:10 ParallelTester_00-01x (EURUSD,H1) CLGetInfoInteger() returned 1
OK, passons à autre chose.
Les résultats sont-ils tous identiques ? Je n'y crois pas... Eh bien, ce script ne peut pas avoir un temps GPU = 219 ms sur un CPU nu. Au mieux, il sera d'environ 800 ms, mais pas d'environ 200 ms.
Ok, oublie ça.
Je viens de réessayer avecCLContextCreate(0)
2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) CpuTime/GpuTime = 1265.405982905983
2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) Result on Cpu МахResult==1.48772 at 2051 pass
2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 296105 ms
2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==1.48772 at 2051 pass
2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 234 ms
2012.04.23 01:22:18 ParallelTester_00-01x__3 (EURUSD,H1) OpenCL init OK!
2012.04.23 01:22:18 ParallelTester_00-01x__3 (EURUSD,H1) CLGetInfoInteger() returned 5
C'est évidemment sur une carte discrète, pas sur un processeur : de telles accélérations sur émulation sont difficilement possibles. Et le nombre d'appareils que vous avez est déjà de 5, c'est flippant.
Si vous voulez bien exécuter un code légèrement modifié, s'il vous plaît, et postez le résultat ici. Dans le code, les calculs pour les différents dispositifs OpenCL sont mis en boucle (ils devraient être rapides) tandis que les calculs sur x86, le plus long, ne sont exécutés qu'une seule fois. Il sera long, mais le script lui-même n'est exécuté qu'une fois.
Je me rends compte que je vous ennuie déjà. Mais dans tous les cas, ce sera une bonne information pour l'équipe de support.J'ai un résultat intéressant ;) Je l'ai, ce n'est pas le nombre total d'appareils, c'est le nombre actuel.
Les calculs sont en cours, mais je les afficherai lorsqu'ils seront prêts.
D'ailleurs, ni CLGetInfoInteger() ni CL_DEVICE_COUNT ne sont présents dans l'aide.
PS. résultat
PS. résultat
Mettez à jour votre aide, la vôtre est périmée.
2. Vous avez
Il est très probable que le premier chiffre, 11357 ms, fasse référence à l'hôte (CPU nu), et le second, 998 ms, à la carte graphique. L'ordre de gain sur l'hôte, en gros, est assez cohérent avec l'accélération obtenue sur AMD OpenCL (environ 38 fois sur un Athlon II à 4 cœurs). Bien que ce ne soit pas beaucoup, cela devrait être plus, quelque part près de 50-60. Il est tout à fait possible que votre mémoire soit très lente.
Le chiffre CpuTime/GpuTime, bien sûr, n'est calculé que pour le dernier dispositif calculé.
1. mettez à jour l'aide, la vôtre est clairement dépassée.
2. Le chiffre CpuTime/GpuTime, bien sûr, n'est calculé que pour le dernier appareil calculé.
1. mis à jour manuellement tout est là, merci, mais l'aide n'est pas mise à jour en même temps que le terminal et le méta-éditeur ?
2. Oui, mais quand même, sympa).
Avec votre matériel, c'est presque clair, vous n'avez que l'hôte qui est un périphérique OpenCL. D'autre part, il est étrange que vous ayez obtenu un résultat aussi élevé plus tôt (page 51) :
Pour une raison quelconque, je n'arrive pas à faire sortir le curseur de l'insertion du code. Et si je cite quelqu'un, c'est la même bêtise. Est-ce un bug du forum ?
Il s'agit plus probablement d'un bogue dans le moteur du forum, mais ce n'est pas toujours le cas. Je clique généralement sur la barre HTML et j'insère manuellement quelques lettres après la dernière balise. Ensuite, je reviens au mode d'édition visuelle du post.