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

 
Ashes:

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

[...] Peut-être ai-je des "grenades du mauvais système" ? (Je veux dire la version du SDK d'AMD).

Génial. J'ai acheté le noyau, la mère, la mémoire et le refroidisseur dans le magasin le plus habituel que j'ai trouvé sur le net. Le tout a coûté environ 6 000 $. Ils m'ont probablement glissé un caillou du futur par accident.

C'est peut-être à cause du SDK. Je ne pense pas qu'il faille chercher un défaut dans la mémoire, par défaut c'est uniquement DDR-III. Et canal unique ou non, cela l'affecte certainement, mais pas de manière aussi terrible.

 
Mathemat:

Intéressant. La carte fyords est plus puissante (GeForce GT 440), et le temps de calcul est un ordre de grandeur plus long. ...

Je me demande si la vitesse de calcul dépend de la résolution (j'ai 1920x1080), car le bureau mange aussi quelque chose (thème Aero) ?

C'est peut-être pour ça que le calcul est plus long.

 
fyords: Et je me demande si la vitesse de calcul dépend de la résolution (j'ai 1920x1080), car le bureau mange aussi quelque chose (thème Aero) ?

Oui, ça pourrait. Que montre l'indice de performance de Windows Aero ? Voici le mien :


Je n'ai pas besoin de ces trucs de noeuds papillons, donc c'est éteint.

P.S. Vérifié. Aucun effet.

 

Le dernier test (3.12.2011) s'est déroulé normalement, mais maintenant un problème survient, mais le score est de 6.8 pour la vidéo. C'est peut-être là le problème (le pépin). Le nouveau matériel n'est pas installé. Peut-être un problème avec le nouveau matériel, alors j'attendrai une nouvelle version, là encore je ferai un test.

 

x32

x32

x64

x64

cpu-z

1

2

 

J'ai obtenu un optimiseur qui ajuste un treillis à une seule couche sur des données simulées équivalentes à 500 jours d'historique sur des prix ouverts de cinq minutes (16 indicateurs par entrée).

Veuillez tester.

A ce stade, je considère que l'agitation est terminée avec succès, car le test de l'optimiseur est insuffisant. ;)

Qui a un ralentissement (par rapport aux autres) - maintenant vous savez pour quoi économiser ;-)

Donc, mes résultats :

2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Full time of optimization == 14 sec 305 ms
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Optimization is closing. Best result == 1.91356 at 92 generation.
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 92: MaxResult==1.91356
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 91: MaxResult==1.91356
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 90: MaxResult==1.91356
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 89: MaxResult==1.91356
.............
.........

Laissez-moi vous expliquer pour la dernière fois sur mes doigts : il s'agit d'un cycle d'optimisation complet d'un réseau neuronal primitif Expert Advisor.

// Enfin, presque un conseiller expert. Des calculs supplémentaires dans le code de CE "Conseiller expert", afin qu'il calcule les bénéfices de manière suffisamment réaliste,

// ne dépassera pas (en temps de compte. avec une mise en œuvre intelligente) les calculs qui sont déjà là. C'est-à-dire que le ralentissement peut être, disons, double.

Dossiers :
 
MetaDriver:

J'ai ajouté la génétique muette et bouclé la maximisation. J'ai obtenu un optimiseur ajustant un treillis à une couche sur des données simulées équivalentes à 500 jours d'histoire sur les prix d'ouverture de cinq minutes (16 indicateurs par entrée).

Veuillez tester.

...

Merci.))

...

NJ 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:06 Generation 36: MaxResult==2.29423
NO 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:08 Generation 37: MaxResult==2.29426
FE 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:10 Generation 38: MaxResult==2.29426
PJ 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:14 Generation 39: MaxResult==2.29427
HO 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:14 Generation 40: MaxResult==2.29427
QE 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:14 Generation 41: MaxResult==2.29427
EJ 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Generation 42: MaxResult==2.29427
LP 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Generation 43: MaxResult==2.29427
KE 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Generation 44: MaxResult==2.29427
DI 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Optimization is closing. Best result == 2.29427 at 44 generation.
KO 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Full time of optimization == 81 sec 917 ms 
 

MetaDriver, merci beaucoup. Vous avez fait votre travail de prospection avec un A. En même temps, vous m'avez donné l'occasion de vérifier ma configuration "sans chevaux" sans carte graphique discrète et d'être très, très surpris.

J'ai lancé votre optimiseur. C'est comme ça :

2012.03.05 23:00:12     Terminal        CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80 GHz with OpenCL 1.1 (2 units, 2793 MHz, 7912 Mb, version 2.0)
2012.03.06 04:24:34     ParallelOptimazer_00-02 (EURUSD,H1)     Full time of optimization == 58 sec 141 ms
2012.03.06 04:24:34     ParallelOptimazer_00-02 (EURUSD,H1)     Optimization is closing. Best result == 1.87689 at 60 generation.
2012.03.06 04:24:34     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 60: MaxResult==1.87689
2012.03.06 04:24:33     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 59: MaxResult==1.87689
2012.03.06 04:24:32     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 58: MaxResult==1.87689
2012.03.06 04:24:31     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 57: MaxResult==1.87689

En supposant que chaque génération compte pour à peu près le même temps, on obtient que par rapport à votre Ferrari, mon "tazi" est environ 6,5-7 fois plus lent, comme la dernière fois (58,14 sec pour 60 générations ~ 0,97 sec/génération).

2 Graff : Si vous pouviez désactiver les graphiques discrets pour la durée du test et faire le test sur les graphiques intégrés de la pierre, ce serait très intéressant (en même temps et regarder les progrès d'Intel dans ce domaine dans la transition de Lynnfield à Sandy Bridge).

Mais pour ce faire, vous devez télécharger le SDK d'AMD pour OpenCL. Cela n'aggravera pas la situation de votre carte discrète (elle a son propre pilote), mais vous pouvez obtenir OpenCL 1.1 sur votre PC, bien que je ne sois pas sûr à 100% que cela fonctionnera.

Mais si vous refusez, je ne serai pas offensé.

 

Re-post du forum mql4.

Chers collègues, vous allez avoir beaucoup de confusion et de problèmes avec OpenCL. Ne vous attendez pas à des résultats faciles.

Il y a beaucoup d'options car OpenCL est une technologie logicielle qui dépend du pilote vidéo. En fait, le pilote vidéo devient un petit système d'exploitation. Tout ce qui s'y accroche en cours de route : UltraVNC, MSI afterbufner, Agnitum OutPost web-control interactif et un millier d'autres programmes peuvent tous entraver le fonctionnement normal d'OpenCL.

Cela dit, même si vous parvenez à faire fonctionner OpenCL pour des calculs threadés simples, il reste un autre obstacle insurmontable à surmonter, à savoir : pour les calculs complexes, la précision technologique (support partiel 32 bits IEEE) et opérationnelle(perte de précision lors de l'overclocking d'une carte de jeu) du GPU n'est toujours pas suffisante pour les calculs scientifiques sérieux. En outre, alors que les GPU nVidia disposent du traitement de double précision 64 bits sur presque toutes les cartes vidéo modernes, les cartes vidéo AMD n'en disposent que sur certaines séries haut de gamme. nVidia a également un problème, mais différent - ils sont de mèche avec Microsoft et, par conséquent, leurs célèbres CUDA (et OpenCL) ne fonctionnent pas sur Server 2003, par exemple, mais fonctionnent parfaitement sur Server 2008 et même sur le vieux Win XP - purement pour des raisons de marketing de Microsoft.

OpenCL permet d'effectuer rapidement des calculs 32 bits imprécis en continu, comme la convolution ou le filtrage.
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
AlexEros:Perte de précision lors de l'overclocking d'une carte de jeu

Qui va l'overclocker ? Obtenir un gain de 10 à 15 % en vitesse de calcul, mais avec le risque d'une erreur de calcul due à la mort d'une seule abeille ? Eh bien, nous ne jouons pas à un jeu où le fait de ne pas dessiner une centaine de sommets n'a aucune incidence...

OpenCL est destiné à la transmission rapide de calculs 32 bits imprécis tels que la convolution ou le filtrage.

Il faut faire une mise en garde. Les calculs doivent être vraiment massifs et lourds pour que la perte de précision soit significative. L'intégration est une sommation/ multiplication massive, c'est une affaire lourde.

C'est une chose d'additionner deux nombres, de les multiplier par un troisième (chacun d'entre eux, avec des calculs sur 32 bits, a une précision suffisante pour des calculs pratiques) et d'écrire le résultat dans une cellule comme résultat d'une itération de la boucle et de ne l'utiliser d'aucune autre manière à l'intérieur du GPU.

Une autre chose est de calculer pi en un milliard d'itérations en utilisant la série de Leibniz la plus lente à converger (cette série est populairement utilisée pour démontrer la technologie OpenMP) :


Dans le second cas, lorsqu'on utilise des nombres de 32 bits, il y a un réel danger de perte de précision, car un milliard de nombres sont additionnés. Terver affirme que dans 99,7% des cas, l'erreur résultante ne dépassera pas la précision d'un nombre multiplié par 2*10^5. Ça, c'est sérieux - et pas toujours.

Personne n'empêche un développeur de faire plusieurs calculs précis sur un CPU honnête pour estimer les erreurs réelles.

Il me semble qu'avec des précautions raisonnables, cette technologie peut être utilisée. Et si vous utilisez des processeurs modernes des deux fabricants (AMD APU Llano ou même Intel Sandy Bridge), vous pouvez oublier la carte graphique discrète pour un moment : quelle différence cela fait-il si je suis 100 ou seulement 25 fois plus rapide... Et aucune abeille ne mourra, car je ne vais pas non plus overclocker le processeur.