OpenCl et les outils correspondants. Critiques et impressions.

 
Compte tenu du fait que Metaquotes a changé d'avis concernant l'applicabilité du GPU dans l'analyse et le trading (il serait plus exact de dire que les logiciels GPU ont finalement atteint le niveau requis pour être utilisés dans des programmes commerciaux), je suggère que nous sommes prêts à commencer à tester OpenCL dans la programmation réelle aujourd'hui.
Au cas où vous auriez manqué cette nouvelle en flânant sur le forum au lieu de faire du commerce, de la modélisation et de la programmation, voici ce qu'en dit Metacquotes par exemple :

.............................................................................................................................................................................

Expériences du GPU en matière de modélisation financière

http://habrahabr.ru/blogs/hi/131983/

MetaQuotes 7 novembre 2011, 19:27#

MQL5 inclura bientôt le support d'OpenCL, qui permettra d'augmenter les performances de calcul dans un réseau distribué de plusieurs fois/ordre de grandeur.

.............................................................................................................................................................................

Alors, OpenCL, c'est quoi ?

Il s'agit d'une approche logicielle, un programme interprète pour l'exécution parallèle de votre programme sur la carte vidéo, c'est-à-dire sur le GPU.

Que donne-t-il ?

Tout d'abord, elle permet l'évolutivité, c'est-à-dire l'adaptation facile et peu coûteuse de la puissance de traitement disponible. C'est une chose d'acheter, d'installer et de maintenir une douzaine de serveurs et c'en est une autre d'acheter et de brancher 3 ou 4 cartes vidéo supplémentaires. Le résultat sera le même en termes de vitesse, mais en termes de dépenses d'argent et de temps - des dizaines de fois.

Deuxièmement, il vous permet d'utiliser des méthodes mathématiques aussi sophistiquées qui étaient auparavant inaccessibles en raison de la faiblesse des ordinateurs.

Troisièmement, si les méta-citations pouvaient verrouiller OpenCL non seulement pour les utilisateurs mais aussi pour son testeur intégré, cela donnerait lieu à deux perspectives étrangement opposées :

(a) la moitié du temps, CloudNetwork ne sera pas du tout nécessaire pour l'optimisation individuelle de simples conseillers experts.

(b) L'utilisation de CloudNetwork ouvrira de vastes perspectives pour l'optimisation, la modélisation et l'analyse par des experts, l'application de méthodes mathématiques complexes, qui étaient tout simplement impensables auparavant.

Par où commencer ?

Voici un SDK logiciel (avec pilote CPU) pour développeur d'AMD (prétendument pour Vista-Win7, mais fonctionne aussi sur WinXP). Sans carte accélératrice vidéo, ils fonctionnent avec succès sur le CPU, et sur n'importe quel processeur SSE d'Intel, pas seulement AMD) :

http://developer.amd.com/sdks/AMDAPPSDK/downloads/Pages/default.aspx

Anciennes versions du SDK AMD-ATI (fonctionne sur WinXP) :

http://developer.amd.com/sdks/AMDAPPSDK/downloads/pages/AMDAPPSDKDownloadArchive.aspx

La version du programme d'interprétation de Nvidia est fournie avec chaque pilote moderne et l'environnement de développement est inclus dans le paquet CUDA Tools-SDK :

http://developer.nvidia.com/opencl

La version du SDK d'Intel (fonctionne uniquement sur Vista-Win7) :

http://software.intel.com/en-us/articles/download-intel-opencl-sdk/

Remarque : pour fonctionner correctement avec MetaTrader 4 ou 5, nous avons besoin d'OpenCL version 1.1 ou supérieure, mais pas 1.0 car ce n'est qu'à partir de la version 1.1 que le support du safe threading est activé. Dans MetaTrader 4 ou 5, le threading est créé et détruit dynamiquement et séparément pour chaque Expert Advisor. Par conséquent, pour utiliser le GPU des conseillers experts fonctionnant sur différentes paires de devises, vous avez besoin d'un threading sûr.

En pratique, cela signifie qu'il faut utiliser les pilotes ATI Catalyst uniquement à partir de la version 10.10, ou ceux de Nvidia à partir de la version 280.00. Les pilotes AMD-ATI s'améliorent et deviennent plus rapides à chaque version, tandis que les pilotes nVidia se détériorent et deviennent plus lents. La version 1.1 d'OpenCL de Nvidia est 30-40% plus lente que sa version 1.0, c'est-à-dire qu'elle est vraiment 2 fois plus lente et pas du tout plus rapide qu'OpenCL 1.1 d'AMD.

Comment puis-je vérifier la présence d'OpenCL ?

AIDA by FinalWire affiche les paramètres du GPU et la version OpenCL dans la section Affichage.

Comment puis-je tester la vitesse d'OpenCL ?

LuxMark :

http://www.luxrender.net/wiki/LuxMark

Résultats comparatifs approximatifs pour différents CPU et GPU :

http://www.luxrender.net/wiki/LuxMark_Results

Il est parfois nécessaire de modifier manuellement le fichier render.cfg afin de le séparer du test CPU-Native CPU-OpenCL.

La vitesse pour le CPU Phenom II X6 haut de gamme = environ 2300, le même programme, mais seulement en monstre de 8pc Nvidia GTX580 donne 70000, c'est-à-dire 30 fois plus. Même un tel ensemble monstre de 8 GTX580 coûtera 30 fois moins cher en coût primaire, et environ 40 fois moins en consommation d'énergie qu'un ensemble de 30 serveurs équivalents en double virgule flottante. De plus, il faut beaucoup d'efforts pour synchroniser les instances des programmes sur 30 serveurs, alors qu'avec OpenCL, tout fonctionne sur un seul ordinateur avec la même instance unique du programme.

Plus de résultats de LuxMark :

http://www.xtremesystems.org/forums/showthread.php?267385-LuxMark-The-OpenCL-CPU-amp-GPU-benchmark

Plus de logiciels pour tester OpenCL :

gpcbenchmarkocl

Il a été retiré du site des auteurs chinois (probablement, il s'agit d'un produit stratégique) mais vous pouvez le trouver sur le web. (Certaines parties de la section Traitement d'images ne fonctionnent qu'avec DirectX version 10 et plus, cela signifie qu'elles ne fonctionnent pas avec WinXP).

Il existe une autre particularité d'OpenCL : sa programmation exige que vous vous écartiez des abstractions mathématiques habituelles utilisées dans la programmation décente et que vous vous impliquiez dans l'optimisation du programme pour le matériel , ce qui n'est pas correct.

Un article sur OpenCL décrit les difficultés approximatives de sa mise en œuvre :

http://habrahabr.ru/blogs/hi/125398/

Un cours vidéo d'introduction à OpenCL par AMD :

http://developer.amd.com/documentation/videos/OpenCLTechnicalOverviewVideoSeries/Pages/default.aspx

En général, N'IMPORTE QUEL ordinateur exécutant SSE sera assez bon pour le développement et le débogage de programmes OpenCL, à condition d'utiliser la suite de programmes AMD. En outre, tout système GTS450....GTX580 de Nvidia peut être recommandé car il dispose également de CUDA, mais pour un travail vraiment rapide, les cartes et programmes AMD-ATI sont plus adaptés - ils sont plus évolutifs et plus stables dans les configurations Multi-GPU.

Le matériel multi-GPU d'OpenCL est le sujet d'un autre fil de discussion.

 
AlexEro:

Le matériel multi-GPU OpenCL est un sujet pour un fil séparé.

D'ailleurs, cette question a été étudiée de manière assez approfondie et il existe des caractéristiques comparatives des cartes. Étudié par les mineurs de la fameuse crypto-monnaie bitcoin (initialement) et d'autres crypto-monnaies (plus tard).

La comparaison se fait bien sûr sur des tâches spécifiques, mais grossièrement orientée sur la configuration et le budget est facile.

Et oui, n'optez pas pour de puissantes cartes graphiques b\u maintenant :)

 
TheXpert:

D'ailleurs, cette question a été étudiée de manière assez approfondie et il existe des caractéristiques comparatives des cartes. Étudié par les mineurs de la fameuse crypto-monnaie bitcoin (initialement) et d'autres crypto-monnaies (plus tard).

La comparaison se fait bien sûr sur des tâches spécifiques, mais grossièrement orientée sur la configuration et le budget est facile.

Et oui, n'achetez pas de cartes vidéo b\u puissantes maintenant :)

Je ne voulais simplement pas effrayer le lecteur avec ces mastodontes et le distraire de ce qui est plus important - la programmation. Bien que je sois d'accord, il faudrait montrer le résultat final, c'est-à-dire la vitesse réelle de mise à l'échelle à laquelle on peut s'attendre, et à quoi cela ressemble. La gamme est large - de la caisse à bière aux étagères :


 

OpenCL est l'avenir aujourd'hui.

Question : quand environ le support sera-t-il implémenté dans MT5 ?

Je suis sûr à plus de 100 % qu'OpenCL deviendra la norme pour la programmation des charges de travail parallèles.

 
Microsoft a introduit C++ AMP
Posté par shapovalovts le Jeu, 06/16/2011 - 10:07 am
Lors du sommet des développeurs AMD Fusion 11, Herb Sutter a annoncé une nouvelle technologie pour le développement d'applications C++ hétérogènes, appelée C++ Accelerated Massive Parallelism (AMP). Cette technologie, comme le déclarent les développeurs de Microsoft, permettra d'utiliser les capacités d'exécution de code parallèle à la fois sur le CPU et le GPU.

Les principaux concurrents d'AMP seront OpenCL et CUDA. M. Sutter a également souligné le potentiel de l'utilisation de C++ AMP dans l'informatique en nuage.

https://www.mql5.com/ru/forum/132431

 
Il s'agit donc de redevenir le petit frère de l'AMP propriétaire).
 
On dirait que l'AMP va passer un mauvais quart d'heure. OpenCL est déjà pleinement utilisé.
 
Le manque d'idées est difficile à remplacer par la puissance de calcul permettant de passer rapidement en revue ou de trier à la bulle les prochaines absurdités issues de la "perversion intellectuelle" sur les guillemets ;)))
 
artikul:
Le manque d'idées est difficile à remplacer par la puissance de calcul permettant de passer rapidement en revue ou de trier à la bulle les prochaines absurdités dérivées de la "perversion intellectuelle" sur les guillemets :)))

Je suppose que si l'on charge une telle puissance d'idées valables, on pourrait faire tourner notre planète autour du soleil dans le sens inverse. ))
 

Articul, tu n'as pas besoin d'être aussi catégorique. Le monde ne s'arrête pas. Les cartes graphiques modernes et monstrueuses, selon votre logique, devraient également être reconnues comme une conséquence du manque d'idées dans le traitement de l'image ?

Moi-même, j'aime parfois accélérer - juste pour ne pas avoir à attendre le débogage du code pour terminer les calculs lourds, qui sont tous dans mon init() (environ 10 secondes). Et tous les autres calculs, qui ont lieu "à la volée", sont vraiment très rapides, de sorte que le multithreading n'est pas nécessaire ici.

 
artikul:
Le manque d'idées est difficile à remplacer par la puissance de calcul permettant de passer rapidement en revue ou de trier à la bulle les prochaines absurdités issues de la "perversion intellectuelle" sur les guillemets ;)))

Très bien noté.Et ici les camarades s'échauffent activement en prévision de s'engager dans le 6ème point sous une forme particulièrement pervertie. =)