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

 
Mathemat:

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


 
casinonsk:

Il y a des doutes que le Runtime Intel OpenCL soit installé correctement.

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

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.

 
Mathemat:

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.

 
casinonsk:

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.

 
Mathemat:

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


 
casinonsk: Je viens de réessayer avecCLContextCreate(0)

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.
Dossiers :
 

J'ai un résultat intéressant ;) Je l'ai, ce n'est pas le nombre total d'appareils, c'est le nombre actuel.

2012.04.22 22:02:51     ParallelTester_00-01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 0

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

2012.04.22 22:02:51     ParallelTester_00-01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 0
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        GPU time = 11357 ms
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        Result on Gpu МахResult==1.68487 at 9198 pass
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 1
2012.04.22 22:03:04     ParallelTester_00-01 x_cycle (EURUSD,M30)        GPU time = 998 ms
2012.04.22 22:03:04     ParallelTester_00-01 x_cycle (EURUSD,M30)        Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:03:04     ParallelTester_00-01 x_cycle (EURUSD,M30)        Result on Gpu МахResult==1.68487 at 9198 pass
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        CPU time = 428706 ms
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        Result on Cpu МахResult==1.68487 at 9198 pass
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        CpuTime/GpuTime = 429.565130260521
 
fyords: A propos, il n'y a pas de CLGetInfoInteger() ou CL_DEVICE_COUNT dans l'aide.

PS. résultat

Mettez à jour votre aide, la vôtre est périmée.

2. Vous avez

2012.03.04 22:27:16     Terminal        GPU: NVIDIA Corporation GeForce GT 440 with OpenCL 1.1 (2 units, 1660 MHz, 1024 Mb, version 295.73)
2012.03.04 22:27:16     Terminal        CPU: AuthenticAMD AMD Athlon(tm) II X4 630 Processor with OpenCL 1.1 (4 units, 2812 MHz, 2048 Mb, version 2.0)

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é.

 
Mathemat:

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).

 
papaklass:

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) :

2012.04.08 13:28:01     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       OpenCL init OK!
2012.04.08 13:28:08     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       GPU time = 7145 ms
2012.04.08 13:28:08     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 13:28:08     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Result on Gpu МахResult==3.86669 at 1682 pass
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       CPU time = 422888 ms
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Result on Cpu МахResult==3.86669 at 1682 pass
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       CpuTime/GpuTime = 59.18656403079076

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.

Raison: