OpenCl et les outils correspondants. Critiques et impressions. - page 5

 
Mathemat:

Super, cela fournira une base pour comparer MQL et C/C++. J'ai juste fourni les faits. Et de toute façon, pourquoi diable devrais-je être un Thomas le croyant ?

Il y a peut-être un peu plus de différence sur les nerfs, c'est indiscutable.

Et, j'aimerais voir votre "juste les faits", en passant.

Mon "juste les faits" est presque là. "Presque" - parce que j'ai déterré les sources de mes anciens tests. Je vais les mettre à jour un peu et poster les sources avec les résultats des tests sous forme de tableau ici.

 
joo: Et, au fait, j'aimerais voir votre "juste les faits".

Juste ici. Voir mon deuxième message sur la page.

Vous avez d'ailleurs déjà répondu à mon message avec le lien. Le code C ci-dessus peut être facilement retravaillé dans MQL4. Veuillez consulter la pièce jointe.

Dossiers :
pi.mq4  1 kb
 
Mathemat:

Juste ici. Voir mon deuxième message sur la page.

D'ailleurs, vous avez déjà répondu à mon message avec le lien. Le code C ci-dessus est facilement retravaillé pour MQL4. Veuillez consulter la pièce jointe.

Veuillez établir un tableau des résultats des tests et le publier ici, afin que les personnes qui lisent ce fil ne soient pas obligées de passer par les liens.
 
AlexEro:

Je vous ai envoyé un lien vers les photos de ces mastodontes dans un message privé - pour ne pas flatter le ******isme numérique des élèves des écoles professionnelles.

Allez, crois-moi, ta photo ne changera pas leur nombre ici, même d'un pourcentage. Allez-y et postez-le.

Mais combien de temps cela va-t-il durer ? Dans le bon sens du terme, vous devriez monter un bon système de refroidissement pour une telle plateforme, un système de refroidissement par eau, par exemple, comme sur l'image suivante.

 
joo:
S'il vous plaît, écrivez les résultats des tests sous forme de tableau et postez-les ici, de sorte que personne ne lisant ce fil ne doive sauter par les liens.

Ce n'est pas une table. Quelques photos.

Tests des programmes parallelpi_x.cpp à différents paramètres de compilation. En comparant avec MQL4, seul le 1er résultat est important : 6.723 secondes. Aucun accélérateur (SSE*, IPP, OML) n'est utilisé ici.

Mais si quelqu'un veut faire un essai et voir comment les résultats changent quand on active les accélérateurs, vous trouverez ci-dessous en pièce jointe une archive avec les fichiers .exe compilés et les bibliothèques parallèles requises. Il suffit de les placer dans un répertoire et de les exécuter en ligne de commande.

Bien entendu, ces résultats ne représentent pas une concurrence aux monstres de la carte graphique.

Le même programme réécrit en MQL4 :


Le résultat : 22,98 secondes, soit 3,4 fois plus. Mais il n'y a pas de travail avec des tableaux là-bas, et cela peut être crucial pour nous. Vous trouverez ci-joint le code du script.

Dossiers :
release.zip  278 kb
pi_1.mq4  1 kb
 
joo:

MQL5 est 20 fois plus rapide que MQL4.

Le C++ est 6 fois plus rapide que le MQL5 (en utilisant des bibliothèques qui parallélisent automatiquement l'exécution).

Total : 20*6=120 fois.

Si vous utilisez les calculs du GPU, ce sera encore plus rapide.

TOTAL : 10/120=0.083c.

quelque chose comme ça.

Alors, fanfare ! Il y a quatre compilateurs différents dans le ring, en compétition pour... à compiler.

C'est une blague, bien sûr. Mais sérieusement, six tests ont été écrits. Les résultats sont présentés dans le tableau ci-dessous. Et les commentaires sont encore plus bas. :)

#Tests
Description
Nom de l'exécutable
Résultat du test, s
1
Script Ex5 et bibliothèque Ex5
1 compilateur MLP MQL.ex5
97.2
2
Script Ex5 et bibliothèque dll C++, compilateur MS, toutes optimisations désactivées
2 MLP MS compiler nonOpt.ex5
42.6
3
script Ex5 et bibliothèque dll C++, compilateur MS, toutes les optimisations sur
3 MLP MS compilateur Opt.ex5
27.1
4
Bibliothèque de scripts Ex5 et de dll C++, compilateur Intel, toutes optimisations incluses
4 MLP Intel compiler.ex5
12.5
5
Script Ex4 et bibliothèque Ex4
5 MLP MQL4 compiler.ex4
669.6
6
Bibliothèque de scripts Ex4 et de dll C++, compilateur Intel, toutes optimisations activées
6 MLP MQL4 Intel compiler.ex4
10.7




Comme test de calculs lourds, un réseau neuronal à 4 couches MLP 80-100-100-10 est utilisé, conçu comme des bibliothèques enfichables ex4, ex5, et dll.

Nous le voyons :

- les résultats des bibliothèques ex5 et ex4 connectées diffèrent par un facteur de 6,8 (1 et 5 tests)

- les résultats des bibliothèques eX5 connectées et des bibliothèques dll du compilateur Intel diffèrent par un facteur de 7,8 (1 et 4 tests)

- Les résultats des bibliothèques eX4 connectées et des bibliothèques dll du compilateur Intel diffèrent 62,5 fois (tests 5 et 6).

Conclusions :

Bien sûr, j'ai un peu exagéré concernant la différence de 20 fois entre MQL4 et MQL5. Une telle différence se produira (je me souviens de l'endroit où ce chiffre m'est venu à l'esprit) en cas d'utilisation intensive de tableaux à 2 dimensions, mais je suis trop paresseux pour modifier les tests spécifiquement pour cette fonctionnalité (de plus, cela ne correspondra pas aux cas typiques de calculs "lourds" - les cas typiques sont présentés dans les tests), donc, vous pouvez me croire sur parole ou écrire un test par vous-même. Par conséquent, nous pouvons parler d'une différence de vitesse de 6,8 fois entre MQL4 et MQL5 et d'une différence de 62,5 fois entre MQL4 et C++.

Et je suis découragé par ce fait - ahtung ! - Le script MQL4 qui a appelé la dll fonctionne plus rapidement que le script MQL5 avec la même dll... Qu'est-ce que cela signifie ? - Je l'ai vérifié, je l'ai exécuté plusieurs fois, aucune erreur. Les développeurs semblent avoir déclaré que MT5 a optimisé les appels de dll par rapport à MT4. Soit il s'agit de particularités des builds (MT5 574 et MT4 409) et les tests ne sont pas tout à fait corrects, soit... Je ne sais pas.


Qui en a besoin, peut utiliser la grille (dll compilée de 4 ou 6 tests - grille très rapide), les sources sont jointes. Le nombre de neurones dans chaque couche est configurable. Mais l'optimiseur (à la fois pour 4 et 5) ne supporte pas plus de 64 paramètres, en plus vous devez utiliser un grand pas, donc ce monstre (comme dans les tests, 80-100-100-10, 19210 paramètres à optimiser !) ne peut pas être entraîné en utilisant des moyens standards, vous devez utiliser des algorithmes d'optimisation personnalisés. D'ailleurs, pour cela (et pas seulement pour cela) j'ai décidé de faire un outil payant (qui sera dans la boutique, bien sûr), qui permettra d'utiliser les optimiseurs personnalisés à 4 et 5 étapes pour entraîner un nombre illimité de paramètres, même à 0 étape.

Dossiers :
tests_mlp.zip  71 kb
 

C'est convaincant, joo, très convaincant même. Mais il y a quelques points.

Premièrement, même le meilleur résultat (option 3) est moins de 4 fois meilleur que l'option 1 lorsqu'il est compilé par MS.

Deuxièmement, je ne pense pas que le compilateur tout compris d'Intel soit meilleur que MS par un facteur supérieur à 2. Donc vous avez activé plus d'optimisations avec Intel.

En tout cas - impressionnant. Attendre que la table soit remplie jusqu'au bout.

Maintenant je sais à quoi servent ces réseaux de cartes vidéo : à faire ces calculs à chaque tic !

 
Mathemat:

Deuxièmement, je ne crois pas que le compilateur tout compris d'Intel soit plus de deux fois meilleur que celui de MS. Donc, Intel a plus d'optimisations activées.

Lesquels sont là - tous. Cela n'a aucun sens d'utiliser un compilateur sans utiliser toutes ses fonctionnalités - les poissons cherchent là où c'est le plus profond, tandis que le programmeur cherche le meilleur compilateur. En ce sens, les compilateurs de MQ ne sont pas personnalisés, nous pouvons donc supposer qu'ils sont réglés de manière optimale.
 

Et, j'ai été découragé par ce fait, akhtung ! - Le script MQL4 qui appelle la dll fonctionne plus rapidement que le script MQL5 avec la même dll... Qu'est-ce que cela signifie ? - Je l'ai vérifié, je l'ai exécuté plusieurs fois, aucune erreur. Les développeurs semblent avoir déclaré que MT5 a optimisé les appels de dll par rapport à MT4. Soit il s'agit de particularités des builds (MT5 574 et MT4 409) et les tests ne sont pas tout à fait corrects, soit... Je ne sais pas.



Merci, c'est très illustratif et très parlant.

Je suppose que nous ne devrions pas tant comparer les pourcentages individuels : parce que la vitesse du processeur (enfin, si vous le prenez en MegaHertz MHz, ou GigaHertz, GHz) de l 'ordinateur suspendu ... est égal à zéro.

Lorsque la différence de vitesse est de l'ordre de 10 à 20 %, il est logique de se préoccuper davantage de la fiabilité du programme et de son environnement et de la gestion des erreurs. Par exemple, si vous utilisez une DLL créée dans MSC, vous devez faire attention à la manière dont elle est liée à MSVCRT.DLL et à sa version, car elle doit fonctionner dans l'environnement du processus compliqué terminal.exe et dans l'environnement du bloc d'initialisation de MSVCRT.DLL, qui peut différer d'une version à l'autre, etc. Pour le traitement normal des erreurs dans la DLL, MetaTrader construit (et surveille) une chaîne d'exceptions, ce qui en soi ralentit l'ensemble du système et appelle la DLL et ainsi de suite.

Au sujet de la vitesse des neurones :

Voici un homme qui a traduit la bibliothèque de réseaux neuronaux FANN en OpenCL et revendique une accélération de 20x sur la carte GTX 285 moyenne :

"Sur mon GPU actuel (GeForce 9500 GT), j'obtiens à peu près la même vitesse entre les versions normale et OpenCL. J'ai actuellement une GTX 285 en commande, et elle devrait être au moins 10 fois plus rapide. Avec un GPU moderne, comme la GTX 480, je m'attends à ce qu'il soit au moins 20 fois plus rapide que mon Mac Pro Nehalem à 2,26 GHz. "

...

"Oui, la nouvelle carte (GTX 285) fait tourner le noyau environ 20 fois plus vite."

http://leenissen.dk/fann/forum/viewtopic.php?f=2&t=658&start=0

http://leenissen.dk/fann/wp/

 

Presque tout le monde est passé par là, bien sûr.

Pour les fans fanatiques de B4 qui ne visitent pas mql5.com : OpenCL : Tests d'implémentation interne dans MQL5

On y est presque, cependant.

Je soupçonne qu'elle sera très attrayante pour les autotraders utilisant d'autres plateformes.