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

 
icas:
"C'est vrai, c'est vrai, n'est-ce pas ? Mais il y a un autre côté à la médaille" ("Captive of the Caucasus", C). Les méta-citations sont enfin "au goût du jour".

Ont-ils décidé de garder le fer pour une raison quelconque ? Et le fer vieillit le plus vite.


Les héros normaux vont toujours dans l'autre sens. (c) C'est une chanson d'un film.


Personnellement, je ne suis pas du tout inspiré par le fait que pour obtenir la vitesse avec une optimisation de niveau MT4, je devrai chercher des cartes vidéo quelconques. Et l'optimisation est la partie la plus problématique de l'autotrading en termes de coût de calcul.

D'ailleurs, si demain les ferrailleurs imaginent une autre caractéristique qui leur permettra de résoudre de manière plus acceptable les mêmes problèmes, ce sera dommage pour les méta-citations. Après tout, les développeurs de matériel sont les moins conservateurs dans leurs idées et à la première occasion, ils essaieront de mettre en œuvre quelque chose afin d'abandonner les vieilles béquilles et de devancer la concurrence.

Le moyen le plus efficace d'augmenter la productivité d'un logiciel est d'améliorer son algorithme. Toutes les autres tentatives de s'écarter de cette voie, et notamment celles qui dépendent d'autres développeurs, se terminent souvent très mal.

 
Reshetov:

Personnellement, je ne suis pas du tout inspiré par le fait que je doive chercher certains widgets pour atteindre la vitesse d'optimisation au niveau de MT4. Et l'optimisation est la partie la plus problématique de l'autotrading en termes de coût de calcul.

De plus, si demain les ironmongers pensent à une autre fonctionnalité qui leur donnera une solution plus acceptable pour les mêmes tâches, ce sera dommage pour les méta-citations. Après tout, les développeurs de matériel sont les moins conservateurs dans leurs idées et à la première occasion, ils essaieront de mettre en œuvre quelque chose qui leur permettra d'oublier les béquilles précédentes et de distancer leurs concurrents.

Le moyen le plus efficace d'améliorer les performances d'un logiciel est d'améliorer son algorithme. Toutes les autres tentatives de s'écarter de cette voie, et surtout celles qui dépendent d'autres développeurs, se terminent souvent très mal.


Essayez le MQL5 Cloud Network - la vitesse d'optimisation est aussi élevée que jamais dans MT4. Dans les calculs massifs, il sera étonnant de voir comment des centaines de résultats par seconde échouent lorsqu'on utilise quelques milliers d'agents indépendants.

Je ne suis pas sûr que le calcul par le GPU permette d'améliorer les algorithmes de négociation de base, mais nous avons des projets ambitieux. Dans les prochaines versions, il y aura beaucoup de choses intéressantes - il sera possible de construire les fermes de calcul les plus puissantes avec échange de données et postanalyse des résultats.

 
Renat:

Je ne suis pas sûr que le calcul par le GPU permette une augmentation des algorithmes de trading de base, mais nous avons des projets de grande envergure. Les prochaines constructions seront très intéressantes - il sera possible de construire les fermes de calcul les plus puissantes avec échange de données et postanalyse des résultats.

Cela signifie-t-il que l'utilisateur aura accès aux résultats des calculs des agents ?
 
joo:
Wow ! Cela signifie-t-il que l'utilisateur aura accès aux résultats des calculs des agents ?

Exactement.

Vous pouvez transférer de grandes quantités de données des agents vers le terminal hôte, et lorsque les calculs sont terminés, exécuter automatiquement la méthode OnTesterFinalize() du même Expert Advisor sur le terminal lui-même. Ainsi, il sera possible d'effectuer des post-traitements complexes des résultats des tests.

 
Renat:

Exactement.

Il sera possible de transférer de grandes quantités de données des agents vers le terminal hôte et, lorsque les calculs seront terminés, d'exécuter automatiquement la méthode OnTesterFinalize() du même conseiller expert sur le terminal lui-même. Ainsi, il sera possible d'effectuer des post-traitements complexes des résultats des tests.

Cool ! !!

Aussi, avant qu'il ne soit trop tard. La méthode OnTesterFinalize() pour les agents serait également souhaitable (pourrait être la même, mais avec un paramètre d'entrée hôte/agent). L'idée est de créer des tableaux dans les fichiers map (par exemple, des indicateurs lourds en cache) sur les machines agents, et de les supprimer correctement à la fin.

 
Renat:

Essayez le MQL5 Cloud Network - la vitesse d'optimisation est aussi élevée que jamais dans MT4. Il est étonnant de constater que des centaines de résultats par seconde, obtenus à l'aide de quelques milliers d'agents indépendants, peuvent s'effondrer sur des calculs massifs.

Oui, je l'ai déjà essayé sur mon ordinateur local à deux noyaux. J'ai été déçu par les résultats. Le moteur de MT5 peut à peine fonctionner sur 2 cœurs alors que MT4 s'optimise très rapidement.

En théorie, bien sûr, on peut lancer des ordinateurs supplémentaires connectés au réseau local et les performances augmenteront grâce à cela. Vous pouvez installer plusieurs cartes vidéo dans votre ordinateur, ce qui augmentera les performances. Mais ce n'est pas la solution lorsque vous devez acheter un rack de serveurs afin d'augmenter la vitesse d'optimisation dans le testeur.

Bien entendu, l'informatique distribuée à distance peut également être utilisée, bien que le service ne soit pas gratuit.

Mais le fait est que la productivité de MT4 est désormais suffisante pour moi. Et comme MT5 devient de plus en plus dépendant du matériel, je ne veux pas migrer vers une telle plateforme.


Renat:

Je ne suis pas sûr que le calcul par le GPU permette une augmentation des algorithmes de trading de base, mais nous avons des projets de grande envergure.

Pour mettre les choses en perspective, le calcul par le GPU pour toute autre chose que les jeux vidéo n'est pas très utile jusqu'à présent. Ici, l'histoire est tout à fait différente. Il existe un paradoxe : les graphiques 3D, c'est-à-dire les images et les animations, sont créés (rendus) sur les processeurs des ordinateurs principaux. D'une part, semble produire des cartes graphiques avec des processeurs puissants pour les graphiques avec la mémoire à grande vitesse, mais d'autre part, tous ceux qui ont à faire avec 3D, ne pas acheter des graphiques de fantaisie, et d'acheter des processeurs multi-core et classiques, mais la RAM à grande vitesse, parfois la combinaison de toutes ces choses dans les fermes et le rendu. Mieux encore, les résultats du rendu sont également visibles sur une carte graphique assez bon marché (la qualité de l'image sur le moniteur joue un rôle important).

Il est clair que les fabricants de cartes vidéo ne sont pas satisfaits de cette situation, car les profits coulent à flot, et ils essaient donc de leur côté de gagner la situation à leur cause. Mais sans succès jusqu'à présent. C'est-à-dire que des logiciels de rendu pour certaines lignes de cartes vidéo sont apparus, mais si on les calcule, il s'avère que le rapport qualité/prix n'est pas en faveur du GPU. Une agence de publicité ou un imprimeur veut attendre le rendu d'une image 3D sur un multi-cœur habituel ou sur la ferme, mais avec la plus haute qualité, plutôt que d'arriver rapidement sur le GPU et d'essayer ensuite de corriger les bugs. Les renderers ne sont pas pressés de passer au GPU, car dans ce cas, leur logiciel deviendrait dépendant des fabricants de cartes vidéo, et être lié à un matériel particulier ne ferait que décourager les clients.

Si MetaQuotes était engagé dans le développement de fermes pour les graphiques 3D, alors cette étape aurait été compréhensible. Mais, à mon avis, c'est une perte de temps, car il vaudrait mieux attendre que les fabricants de cartes graphiques aient calibré leurs produits, plutôt que de pousser trop loin les choses.

Bien que ce ne soit pas à moi d'en décider, puisque je suis le patron. Mais le point demeure, c'est-à-dire qu'il n'y a aucune volonté de passer à un logiciel dépendant du matériel et que cela n'apparaîtra pas de sitôt.

 
Reshetov:

Oui, je l'ai déjà essayé, sur un ordinateur local à deux noyaux. Les résultats sont décevants. Je l'ai essayé sur MT5, alors que MT4 montre une optimisation très rapide.

Avez-vous essayé MQL5 Cloud Network avec 2000 agents sur un dual core ?

Ou bien avez-vous effectué un seul passage local et vous êtes-vous reposé sur cela ?

C'est avec le MQL5 Cloud Network que nous avons obtenu une simple accélération de centaines et de milliers de fois. Sans GPU, sur n'importe quel conseiller expert. Reprenez mon ancien exemple avec la vidéo : Exemple d'accélération des calculs à l'aide du réseau MQL5 Cloud Network


En théorie, bien sûr, vous pouvez faire fonctionner des ordinateurs supplémentaires sur le réseau local et les performances s'en trouveront améliorées. Il est également possible de brancher plusieurs cartes vidéo et d'augmenter ainsi les performances. Mais ce n'est pas la solution, car pour augmenter la vitesse d'optimisation dans le testeur, vous devrez acheter un rack de serveurs.

Bien entendu, l'informatique distribuée à distance peut également être utilisée, bien que ce service ne soit pas gratuit.

Nous avons rendu possible la levée instantanée de milliers d'agents à l'aide d'un seul bouton (temps de chauffe du réseau d'environ 20-30 secondes) pour un calcul rapide des tâches. Au lieu de passer des centaines d'heures, vous pouvez vraiment le faire en une demi-heure.

De plus, les prix sont ridicules - n'importe qui peut les vérifier, et tous ceux qui s'inscrivent sur MQL5.com reçoivent un bonus de 2 $.

Il s'agit d'une véritable révolution. Désormais, n'importe quel utilisateur peut mettre à mal presque n'importe quel superordinateur grâce à l'utilisation des cludes. Et avec l'introduction du GPU (une version sera disponible vendredi), il sera possible de battre les superordinateurs en meute.


Mais le fond du problème est que, pour l'instant, la productivité de MT4 me suffit amplement. Et comme MT5 devient de plus en plus dépendant du matériel, je ne veux pas migrer vers cette plateforme.

La productivité est suffisante (ou plutôt vous vous en assurez) pour les cas simples. Pour les calculs massifs et détaillés, la puissance n'est pas suffisante.

L'erreur de la comparaison entre les testeurs MT4 et MT5 est que les gens ferment les yeux sur le niveau de détail et la capacité à tester avec précision des devises multiples, qui sont très différents.

Vous avez également raté votre cible en ce qui concerne la dépendance au matériel :

  • MT5 supporte les architectures 32 et 64 bits (la version 64 bits est en fait plus rapide et plus puissante).
  • MT5 utilise tous les cœurs locaux
  • MT5 utilise des agents distants (32 et 64 bits)
  • MT5 utilise le MQL5 Cloud Network lorsqu'un simple ordinateur portable reçoit les résultats de calculs d'ordinateurs plusieurs milliers de fois plus puissants que lui
  • MT5 utilise OpenCL, qui est indépendant du matériel, ce qui vous permet de travailler avec une variété de processeurs GPU.

Vous prenez vos désirs pour des réalités, tout en sachant clairement que vous avez tort.


Il est clair que les développeurs de jeux vidéo ne sont pas satisfaits de cette situation où les bénéfices affluent, et qu'ils tentent donc de prendre le contrôle de la situation. Mais sans succès jusqu'à présent. C'est-à-dire que des logiciels de rendu pour certaines lignes de cartes vidéo sont apparus, mais si on les calcule, il s'avère que le rapport qualité/prix n'est pas en faveur du GPU. Une agence de publicité ou un imprimeur veut attendre le rendu d'une image 3D sur un multi-cœur habituel ou sur la ferme, mais avec la plus haute qualité, plutôt que d'arriver rapidement sur le GPU et d'essayer ensuite de corriger les bugs. Les renderers ne sont pas pressés de passer au GPU, car dans ce cas, leur logiciel deviendra dépendant des fabricants de cartes vidéo, et être lié à un matériel particulier ne fera que décourager les clients.

Bien que je ne sois pas un défenseur des GPU (je suis carrément anti-GPU depuis longtemps), vos conclusions sont fausses.

Il n'y a pas de logiciel pour GPU, car les développeurs n'ont pas encore cru en cette direction, mais sans réitérer la mythique liaison à un matériel spécifique. Par décence, on devrait au moins lire ce qu'est OpenCL et ce pour quoi il a été inventé (indépendant du matériel et de la plate-forme).

Les entreprises ne sont contraintes d'utiliser le rendu logiciel qu'en raison de l'inertie et des processus établis. Amener une entreprise à changer de logiciel est un effort titanesque, souvent impossible pour les 3 à 5 prochaines années. Compte tenu du bond en avant des GPU au cours des trois dernières années et de l'accent clairement visible mis par leurs auteurs sur l'universalisation, il est raisonnable non seulement d'attendre de meilleurs résultats, mais aussi de rechercher activement de nouvelles fonctionnalités.


Si MetaQuotes développait des fermes pour les graphiques 3D, une telle démarche serait encore compréhensible. Et maintenant, à mon avis, c'est juste une perte de temps, parce qu'il serait préférable d'attendre que les fabricants de cartes vidéo aient tout réglé, plutôt que de pousser trop loin dans le vif du sujet.

Bien que ce ne soit pas à moi d'en décider, puisque je suis le patron. Mais le point demeure, c'est-à-dire qu'il n'y a aucune volonté de passer à un logiciel dépendant du matériel et que cela n'apparaîtra pas de sitôt.

Nous avons attendu assez longtemps, nous avons aussi critiqué et désapprouvé, mais le moment est venu.

Et c'est la troisième fois que l'on parle à nouveau de "logiciels dépendant du matériel".

 
Reshetov:

Oui, je l'ai déjà essayé, sur un ordinateur local à deux noyaux. Les résultats sont décevants. Les résultats sont décevants. Je peux à peine y arriver sur MT5 en utilisant 2 cœurs alors que MT4 s'optimise rapidement.

Principalement, toutes choses étant égales par ailleurs, la vitesse de test sur MT5 est plus lente que sur MT4 parce que MT5 utilise une meilleure modélisation de l'historique des ticks. Cela réduit considérablement la vitesse. Mais, il y a un espoir que MQ implémente des méthodes de génération de ticks plus simples (et des variantes de tests sans ticks du tout) comme dans MT4 (il y a beaucoup de demandes de ce type, et en regardant les innovations récentes, il y a un espoir que cela soit implémenté).

Reshetov:

Si je veux entrer dans les détails, le calcul par le GPU n'est pas très utile pour autre chose que les jeux vidéo. L'histoire est tout à fait différente ici. Il existe un paradoxe : les graphiques 3D, c'est-à-dire les images et les animations, sont créés (rendus) sur les processeurs des ordinateurs principaux. D'une part, semble produire des cartes graphiques avec des processeurs puissants pour les graphiques avec la mémoire à grande vitesse, mais d'autre part, tous ceux qui ont à faire avec la 3D, ne pas acheter des graphiques de fantaisie, et l'achat de processeurs multi-core et classiques, mais la RAM à grande vitesse, parfois la combinaison de toutes ces choses dans les fermes et le rendu. Mieux encore, les résultats du rendu sont également visibles sur une carte graphique assez bon marché (la qualité de l'image sur le moniteur joue un rôle important).

Il est clair que les fabricants de cartes vidéo ne sont pas satisfaits de cette situation, car les profits coulent à flot, et ils essaient donc de leur côté de gagner la situation à leur cause. Mais sans succès jusqu'à présent. C'est-à-dire que des logiciels de rendu pour certaines lignes de cartes vidéo sont apparus, mais si on les calcule, il s'avère que le rapport qualité/prix n'est pas en faveur du GPU. Une agence de publicité ou un imprimeur veut attendre le rendu d'une image 3D sur un multi-cœur habituel ou sur la ferme, mais avec la plus haute qualité, plutôt que d'arriver rapidement sur le GPU et d'essayer ensuite de corriger les bugs. Les renderers ne sont pas pressés de passer au GPU, car dans ce cas, leur logiciel deviendrait dépendant des fabricants de cartes vidéo, et être lié à un matériel particulier ne ferait que décourager les clients.

Si MetaQuotes développait des fermes pour les graphiques 3D, alors cette étape serait compréhensible. Mais, à mon avis, c'est une perte de temps, car il vaudrait mieux attendre que les fabricants de cartes vidéo aient tout réglé, plutôt que de s'engager trop loin dans l'aventure.

La situation est presque exactement l'inverse. Tous ceux qui pensent à l'avenir passent au calcul par le GPU. Ils construisent des superordinateurs entiers à partir de vidéo-ordinateurs.

Aujourd'hui, les GPU calculent tout, la vidéo, l'audio, les photos, et même les calculs de résistance en dynamique et en statique.

Informations non officielles :
Informations générales sur CUDA
http://www.gpgpu.ru/
http://www.computerra.ru/interactive/423392/
http://cgm.computergraphics.ru/issues/issue16/cuda
http://www.ixbt.com/video3/cuda-1.shtml
http://www.ixbt.com/video3/cuda-2.shtml
http://www.thg.ru/graphic/nvidia_cuda_test/print.html
http://www.thg.ru/graphic/nvidia_cuda/print.html
https://ru.wikipedia.org/wiki/CUDA

Documentation CUDA
http://www.uraldev.ru/articles/id/33
http://www.steps3d.narod.ru/tutorials/cuda-tutorial.html

Exemples et articles sur CUDA
http://www.codeproject.com/info/search.aspx?artkw=CUDA

Littérature imprimée :
http://www.ozon.ru/context/detail/id/5080841/
http://www.ozon.ru/context/detail/id/5432077/


Information officielle :

Technologies connexes
http://www.khronos.org/opencl/

http://www.nvidia.ru/object/cuda_home_new_ru.html
http://nvidia.custhelp.com/cgi-bin/nvidia.cfg/php/enduser/std_alp.php

http://developer.nvidia.com/object/gpucomputing.html
http://developer.nvidia.com/object/cuda_3_2_downloads.html
http://developer.nvidia.com/page/documentation.html
http://developer.nvidia.com/object/nsight-downloads.html

Exemples de code CUDA

http://developer.download.nvidia.com/compute/cuda/sdk/website/samples.html

Applications

http://www.nvidia.ru/object/cuda_research_ru.html

Démonstrations de la communauté

http://www.nvidia.ru/object/cuda_apps_flash_new_ru.html


Il s'agit principalement de liens CUDA (tirés de la réserve) mais tout s'applique à OpenCL dans son intégralité. En outre, l'avenir d'OpenCL (technologie indépendante du matériel) semble plus prometteur que celui de CUDA (technologie dépendante du matériel).


Reshetov:
Bien que ce ne soit pas à moi de décider, car le maître est le patron. Mais l'essentiel demeure, c'est-à-dire que le désir de passer à un logiciel dépendant du matériel n'apparaît pas et n'apparaîtra pas de sitôt.

Personne ne vous empêche d'écrire des programmes à l'ancienne, pour le CPU. Tous les programmes fonctionneront.


ZS Renat m'a devancé.

 

joo:

...

ZS Renat m'a devancé.

Double strike. Les informations ne sont jamais superflues. :) Branche très informative, elle devrait même être corrigée, pour qu'elle ne tombe pas en panne.
 
icas:
Renat, y aura-t-il un support OpenCL dans MT4 ?

Malheureusement, non.

Mais une importante mise à jour de MetaTrader 4 sort la semaine prochaine et le nouveau MetaTrader 4 pour iPhone/iPad sort cette semaine.