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

 

Bonjour à tous.

Un conseil sur ce sujet très intéressant :

1. Existe-t-il déjà des EA pour le trading qui utilisent OpenCL pour les calculs ?

(il y a plus d'un an, le support a été annoncé et nous avons tous ensemble essayé les performances sur un script de test, mais beaucoup de temps a passé et le sujet est devenu silencieux...).

2. Si j'ai plusieurs cartes vidéo installées dans mon système, seront-elles toutes utilisées pour les calculs ou seulement l'une d'entre elles ?
 
vittt: 1. Existe-t-il déjà des EA de trading qui utilisent OpenCL pour les calculs ?

Il existe probablement, mais difficilement dans le kodobaz. Il y a peu de passionnés, et tous ne le font pas.

OpenCL est avantageux lorsqu'il permet d'accélérer considérablement les calculs, ce qui est essentiel pour le commerce. L'intégrer dans l'algorithme juste pour le plaisir de "shoblo" ou de charger la carte vidéo n'est pas très judicieux.

À mon avis, les résultats les plus sérieux peuvent être obtenus par des calculs intensifs bien parallèles ou pour les concepteurs de réseaux neuronaux. Cela vaut probablement la peine de leur demander.

Par exemple, personnellement, il y a une direction quim'intéresse, mais OpenCL n'y est guère nécessaire car il n'aurait guère d'utilité (trop d'opérations d'accès aléatoires en mémoire globale que seul le diable sait paralléliser). Je ne suis pas encore désespéré et je n'ai pas essayé toutes les possibilités raisonnables - mais ce ne sera certainement pas en accès libre.

2. Si vous avez plus d'une carte vidéo installée dans le système, seront-elles toutes utilisées pour le calcul ou seulement l'une d'entre elles ?

La société a parlé de problèmes liés à des cartes multiples ou même à des cartes à deux têtes. Je ne sais pas si elles sont résolues.

 

Bonjour.

Je fais des calculs en masse dans MetaTrader5, en résolvant un problème (modélisation d'une partie de poker). J'écris en Mcl5 parce que je suis un nerd et que je ne connais que ça. Dans mon cas, les questions de performance sont très importantes.

Je comprends donc que les tâches, où chaque étape de calcul successive n'est pas liée aux résultats des précédentes, peuvent être parallélisées. Bien ! J'ai justement une telle tâche.

Mais comment le paralléliser ? Si mon algorithme fonctionne avec des structures (struct) dont les méthodes

- Par exemple, ouvrir un fichier texte à partir d'un disque dur, le lire, ajouter des informations dans les tableaux de structure, fermer le fichier texte.

- et d'autres méthodes contiennent de nombreuses fonctions standard, par exemple rand(), ArrayResize(), etc.

OpenCl, tel que je le comprends, est un langage similaire à c++. Bref, ma question est la suivante : comment paralléliser les calculs en général ?

 
Stasikusssss:

Bonjour.

Je fais des calculs en masse dans MetaTrader5, en résolvant un problème (modélisation d'une partie de poker). J'écris en Mcl5 parce que je suis un nerd et que je ne connais que ça. Dans mon cas, les questions de performance sont très importantes.

Je comprends donc que les tâches, où chaque étape de calcul successive n'est pas liée aux résultats des précédentes, peuvent être parallélisées. Bien ! J'ai justement une telle tâche.

Mais comment le paralléliser ? Si mon algorithme fonctionne avec des structures (struct) dont les méthodes

- Par exemple, ouvrir un fichier texte à partir d'un disque dur, le lire, ajouter des informations dans les tableaux de structure, fermer le fichier texte.

- et d'autres méthodes contiennent de nombreuses fonctions standard, par exemple rand(), ArrayResize(), etc.

OpenCl, tel que je le comprends, est un langage similaire à c++. Bref, ma question est la suivante : comment puis-je paralléliser les calculs en général ?

Google est l'aide.

Vous n'obtiendrez pas de réponse à une telle question sur ce forum.

Pour une simple combinaison de deux raisons :

Les programmeurs débutants ne programment pas du tout en OpenCL (et ne traitent pas du tout le parallélisme) car ils ne peuvent pas le comprendre.

2 Les programmeurs expérimentés ne veulent pas vous bricoler parce qu'elle (votre question) nécessite une étude approfondie de votre qualification, pour y répondre dans un langage compréhensible pour vous, et ensuite vous donner une longue explication de votre réponse.

Par conséquent, respectez les ressources en temps des programmeurs expérimentés et étudiez les bases vous-même. Mais lorsque vous aurez compris et que vous aurez des questions spécifiques sur le langage (OpenCL), vous aurez plus de chances d'avoir une conversation fructueuse.

Быстрое погружение в MQL5
Быстрое погружение в MQL5
  • 2012.08.02
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы решили изучить язык программирования торговых стратегий MQL5, но ничего о нем не знаете? Мы постарались взглянуть на MQL5 и терминал MetaTrader 5 глазами новичка и написали эту небольшую вводную статью. Из неё вы сможете получить краткое представление о возможностях самого языка, а также несколько полезных советов по работе с редактором MetaEditor 5 и самим терминалом.
 

on pourrait répondre qu'il est possible de paralléliser

seulement en C pur, seulement les opérations arithmétiques les plus simples

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - Документация по MQL5
 

OpenCL 2.0

OpenCL 2.0 est la dernière évolution significative de la norme OpenCL, conçue pour simplifier davantage la programmation multiplateforme, tout en permettant d'accélérer facilement un large éventail d'algorithmes et de modèles de programmation. Comme base pour ces capacités accrues, OpenCL 2.0 définit un modèle d'exécution amélioré et un sous-ensemble des modèles de mémoire C11 et C++11, ainsi que des opérations de synchronisation et atomiques.

  • poster un commentaire sur le fil de discussion OpenCL 2.0 sur les forums Khronos - bon pour les commentaires et les questions d'ordre général
  • déposer un bogue dans le système Bugzilla de Khronos sous OpenCL 2.0 - bon pour les corrections détaillées et les erreurs trouvées dans la spécification.
Official OpenCL 2.0 Feedback thread
Official OpenCL 2.0 Feedback thread
  • www.khronos.org
The Khronos Group promotes the deployment and development of open standard APIs to enable authoring and playback of dynamic media on a wide variety of platforms and embedded devices. Current APIs are OpenGL ES, OpenML, OpenMAX, OpenSL ES, and Collada.
 
tol64:

OpenCL 2.0 est la dernière évolution significative de la norme OpenCL, ..............

Où vas-tu avec ça ?
 
MetaDriver:
Où voulez-vous en venir ?

J'ai vu cette nouvelle et j'ai décidé de la poster ici. C'est intéressant de s'y plonger, mais je ne trouve pas encore le temps. Voici la même nouvelle en russe :


Adoption de la spécification OpenCL 2.0

Khronos Group a annoncé la ratification et la disponibilité de la version finale de la spécification OpenCL 2.0. Selon les développeurs, la sortie d'OpenCL 2.0 représente une étape importante dans l'évolution d'un standard open source et gratuit qui simplifie la programmation parallèle multiplateforme.

La nouvelle version améliore le modèle d'exécution et les sous-ensembles du modèle de mémoire de C11 et C++11, la synchronisation et les opérations atomiques. Il est dit que la nouvelle version d'OpenCL permet d'utiliser un éventail beaucoup plus large d'algorithmes et de modèles de programmation. La nouvelle version tient compte des souhaits des développeurs de logiciels qui utilisent OpenCL. Les spécifications sont déjà disponibles sur le site web de Khronos.

Les améliorations et les nouvelles fonctionnalités d'OpenCL 2.0 comprennent : la mémoire virtuelle partagée, le parallélisme imbriqué, l'espace d'adressage partagé, un meilleur traitement des images, notamment la prise en charge de sRGB. En outre, les développeurs mettent en avant les opérations atomiques C11, les pipelines de piles FIFO en mémoire et les extensions de pilotes installables pour Android.

Принята спецификация OpenCL 2.0
  • www.ixbt.com
Принята спецификация OpenCL 2.0 Открытый, бесплатный для использования стандарт OpenCL 2.0 упрощает кроссплатформенное параллельное программирование
 
tol64:

J'ai vu cette nouvelle et j'ai décidé de la poster ici. C'est intéressant de s'y plonger, mais je ne trouve pas encore le temps. Voici la même nouvelle en russe :


Adoption de la spécification OpenCL 2.0

Khronos Group a annoncé la ratification et la disponibilité de la version finale de la spécification OpenCL 2.0. Selon les développeurs, la sortie d'OpenCL 2.0 représente une étape importante dans l'évolution d'une norme ouverte et gratuite qui simplifie la programmation parallèle multiplateforme.

La nouvelle version améliore le modèle d'exécution et les sous-ensembles du modèle de mémoire de C11 et C++11, la synchronisation et les opérations atomiques. Il est dit que la nouvelle version d'OpenCL permet d'utiliser un éventail beaucoup plus large d'algorithmes et de modèles de programmation. La nouvelle version tient compte des souhaits des développeurs de logiciels qui utilisent OpenCL. Les spécifications sont déjà disponibles sur le site web de Khronos.

Les caractéristiques et améliorations d'OpenCL 2.0 comprennent : la mémoire virtuelle partagée, le parallélisme imbriqué, l'espace d'adressage partagé, une meilleure gestion des images, y compris la prise en charge de sRGB. En outre, les développeurs mettent en avant les opérations atomiques C11, les pipelines de piles FIFO en mémoire et les extensions de pilotes installables pour Android.

C'est compréhensible, mais qu'en faire, le déverser en C#/C++ ?
 
MetaDriver:
Que dois-je faire avec ? Je dois l'intégrer en C#/C++ ?

Peut-être que Renat peut voir ce qu'on peut en tirer. Il est tout à fait possible que la nouvelle spécification donne de meilleures performances dans MQL5 également, n'est-ce pas ?

Quant à C#/C++, si besoin est, on peut aussi le laisser tomber. L'essentiel est d'obtenir le rendement maximal possible. ;)