Merci beaucoup !
J'attendais depuis longtemps un article sur OpenCL.
Je vais le lire maintenant. :)
Je vais le lire. :)
Vous n'en avez probablement pas besoin. Vous devriez déjà tout savoir.
Dans le prochain article, ce sera plus sérieux, il y aura beaucoup de choses sur le matériel.
Qu'est-ce qui est trop tôt pour l'activer, veuillez préciser. Si OpenCL - il est déjà activé. Toutes les expériences ont été réalisées directement dans MetaEditor 5.
P.S. L'essentiel est que, grâce à OCL, le codeur a accès à des choses auxquelles il n'avait pas accès auparavant. Il s'agit de
- (S)SSEx, qui peut être inclus dans Visual Studio, mais ne peut pas être inclus dans MQL5 sans OCL (sans compter les dll).
- l'accès aux calculs sur les GPU discrets, qui accélère encore ce qui peut être fait sur un seul cœur dans MQL5 sans aucune astuce de type dll.
.
1. Vous n'en avez probablement pas besoin. Vous devriez déjà savoir comment faire toutes ces choses.
2. Dans le prochain article, ce sera plus sérieux, il y aura beaucoup de choses sur le matériel.
1. J'en ai besoin.
2) Génial !
Le CPU n'est qu'un des appareils, avec le GPU, avec lequel le programme OCL peut fonctionner s'il existe un pilote correspondant à l'appareil et si tous les cœurs du processeur sont chargés.
- www.mql5.com
Parce que c'est ce qu'est l'émulation, une émulation lente. Dans le CPU (grâce à Intel, il y a un compilateur intelligent qui recherche la vectorisation si vous ne l'interdisez pas explicitement) la parallélisation est faite par les instructions (S)SSEx et peut-être l'analyse des dépendances, alors que les GPU ont beaucoup plus de possibilités liées aux moteurs SIMD. De plus, les bus sont plus larges et la mémoire plus rapide - en particulier la mémoire locale et privée.
À propos du matériel. Les principales recommandations s'appliquent au matériel AMD. Mais nombre d'entre elles, avec une terminologie légèrement modifiée, s'appliquent également au matériel NVidia.
Parce qu'il s'agit d'une émulation, une émulation lente. Dans les CPU (grâce à Intel, qui a un compilateur intelligent qui recherche la vectorisation si vous ne l'interdisez pas explicitement), la parallélisation est réalisée par les instructions (S)SSEx et éventuellement l'analyse des dépendances, alors que les GPU ont beaucoup plus de possibilités liées aux moteurs SIMD. De plus, les bus sont plus larges et la mémoire plus rapide - en particulier la mémoire locale et privée.
À propos du matériel. Les principales recommandations s'appliquent au matériel AMD. Mais nombre d'entre elles, avec une terminologie légèrement modifiée, s'appliquent également au matériel NVidia.
Voir - il n'est pas fait mention d'OCL pour les GPU et du mode d'émulation pour les autres appareils. OpenCL est un langage de programmation universel permettant d'organiser des calculs parallèles sur tous les appareils disposant de plus d'un cœur de calcul et prenant en charge OCL. Il ne s'agit pas de CUDA ou d'ATI Stream, qui sont adaptés aux GPU.
En outre, dans certains cas, la parallélisation et les calculs OCL sur les CPU sont encore plus rapides que sur les GPU. Aujourd'hui, il est obligatoire de choisir un dispositif dans les paramètres de mes programmes, car la vitesse des calculs dépend directement de la quantité de données traitées et de la "gravité" des calculs (qui dépend également des paramètres d'entrée) - elle est parfois plus rapide sur un GPU, parfois sur un CPU.
Voir - il n'est pas fait mention d'OCL pour les GPU et du mode d'émulation pour les autres appareils. OpenCL est un langage de programmation universel permettant d'organiser des calculs parallèles sur tous les appareils disposant de plus d'un cœur de calcul et prenant en charge OCL. Il ne s'agit pas de CUDA ou d'ATI Stream, qui sont conçus pour les GPU.
Vous avez peut-être raison à certains égards, puisque l'unité centrale est considérée comme un appareil. Mais certaines données suggèrent qu'il s'agit plutôt d'une émulation. Par exemple, on soupçonne que l'écriture d'un tampon dans la mémoire du périphérique CLBufferWrite() dans le cas de l'unité centrale n'est faite que "pour un tick", parce que l'unité centrale n'a qu'une seule mémoire globale. Cependant, l'unité centrale dispose également d'un cache, mais je ne sais pas ce qu'il en advient et comment il fonctionne.
En outre, dans certains cas, la parallélisation et les calculs OCL sur l'unité centrale sont encore plus rapides que sur le GPU.
Oui, il existe des cas où, par exemple, le produit scalaire de dot( ) est plus rapide sur le CPU. Mais je ne spéculerais pas sur ce qui serait plus rapide si la comparaison se faisait entre un Core 2 Duo et une carte graphique plus puissante que celle du lien. Surtout si l'on prend soin d'optimiser l'algorithme. C'est différent pour le CPU et le GPU, quoi qu'on en dise.
Qu'est-ce qui doit être activé plus tôt, merci de préciser. S'il s'agit d'OpenCL, il est déjà activé. Toutes les expériences ont été réalisées directement dans MetaEditor 5.
P.S. L'essentiel est que, grâce à OCL, le codeur a accès à des éléments auxquels il n'avait pas accès auparavant. Il s'agit des éléments suivants :
- (S)SSEx, qui peut être inclus dans Visual Studio, mais ne peut pas être inclus dans MQL5 sans OCL (sans compter les dll).
- l'accès aux calculs sur les GPU discrets, qui accélère davantage ce qui peut être fait sur un seul cœur dans MQL5 sans aucune astuce de type dll.
.
Je voulais parler de l'adaptation à l'informatique en nuage, si vous imaginez que chaque cœur de processeur est assisté par de nombreuses "abeilles affamées" d'accélérateurs graphiques mis en réseau avec de nombreux ordinateurs, ce sera vraiment cool et rapide.
La moitié du travail est fait, il ne reste plus qu'à l'activer pour le cloud....
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article OpenCL : Le Pont vers les Mondes Parallèles a été publié :
Fin janvier 2012, la société de développement de logiciels à l'origine de l’élaboration de MetaTrader 5 a annoncé la prise en charge native d'OpenCL dans MQL5. À l'aide d'un exemple illustratif, l'article présente les bases de la programmation en OpenCL dans l'environnement MQL5 et fournit quelques exemples d'optimisation naïve du programme pour augmenter la vitesse de fonctionnement.
Par conséquent, l'auteur a dû recourir au SDK. Dans ce cas, compte tenu de la configuration matérielle disponible pour l'auteur, il s'agissait du compilateur hors ligne Intel OpenCL SDK (32 bits) fourni dans Intel OpenCL SDK (pour les CPU/GPU autres qu'Intel, le SDK devrait également contenir les compilateurs hors ligne pertinents). C'est pratique car cela permet de déboguer le code du noyau sans se lier à l'API hôte.
Vous insérez simplement le code du noyau dans la fenêtre du compilateur, mais pas sous la forme utilisée dans le code MQL5 mais à la place sans guillemets externes et "\r\n" (caractères de retour à la ligne) et appuyez sur le bouton Build avec une icône de roue dentée sur ceci.
Ce faisant, la fenêtre Build Log affichera des informations sur le processus de Build et sa progression :
Fig. 9. Compilation de programmes dans le compilateur hors ligne Intel OpenCL SDK
Auteur : Sceptic Philozoff