Voici ce que vous pouvez faire avec OpenCL directement dans MetaTrader 5, sans aucune DLL. - page 6

 
Alexey Volchanskiy:

Tout est génial, mais ! Il y a un gros problème avec OCL et en général avec tous les moyens de parallélisation - très peu d'algorithmes peuvent être efficacement parallélisés. Pourquoi dans les exemples de calcul parallèle si populaires sont la simulation de vagues, la chute d'une balle sur une pyramide avec leur destruction, c'est-à-dire tout ce qui peut être décomposé en petits morceaux et calculé sur votre propre processeur.

Pour fora/bear, il s'agit bien sûr des réseaux neuronaux, des diverses transformées de Fourier, des ondelettes, des filtres, etc. qui sont tous parfaitement parallèles. Mais il existe des algorithmes linéaires qui ne peuvent pas du tout être mis en parallèle. En règle générale, c'est lorsque le résultat de l'étape suivante de l'algorithme est basé sur le résultat de l'étape précédente.

J'ai écrit ceci pour ceux qui pensent que je vais acheter deux cartes vidéo cool et que tout va bien fonctionner dans mon testeur.

Quand j'ai commencé à travailler avec ce truc, j'ai eu le sentiment que l'algorithme sera basé sur les résultats de l'étape précédente, donc je l'ai écrit pour ceux qui pensent, "Je vais acheter 2 puces vidéo cool et tout va voler dans mon testeur. Si vous voulez faire du commerce avec elle, vous devez avoir une bonne relation avec elle.

 
Alexey Volchanskiy:

Tout est génial, mais ! Il y a un gros problème avec OCL et en général avec tous les moyens de parallélisation - très peu d'algorithmes peuvent être efficacement parallélisés. Pourquoi dans les exemples de calcul parallèle si populaires sont la simulation de vagues, la chute d'une balle sur une pyramide avec leur destruction, c'est-à-dire tout ce qui peut être cassé en petits morceaux et calculé sur son propre processeur.

Pour fora/bear, il s'agit bien sûr des réseaux neuronaux, des diverses transformées de Fourier, des ondelettes, des filtres, etc. qui sont tous parfaitement parallèles. Mais il existe des algorithmes linéaires qui ne peuvent pas du tout être mis en parallèle. En règle générale, c'est lorsque le résultat de l'étape suivante de l'algorithme est basé sur le résultat de l'étape précédente.

J'ai écrit ceci pour ceux qui sont impatients d'acheter deux cartouches cool et tout va bien se passer dans mon testeur.

Lorsque la logique interne de l'EA n'est pas mise en parallèle, l'ensemble de l'EA peut être mis en parallèle, un fil - un EA. C'est ainsi que le nuage et les agents en général fonctionnent - un fil == une EA == un historique, j'ai donné un exemple d'un tel parallélisme.

Par exemple, cette approche permet non seulement d'accélérer considérablement les optimiseurs maison sans trop de difficultés, mais aussi d'effectuer une optimisation interne auto-motivée dans le cadre d'une optimisation générale dans le nuage (par exemple, une optimisation avec roll-forward interne). Et bien sûr, personne n'interdit d'utiliser une parallélisation supplémentaire à l'intérieur de chaque thread (je ne l'ai pas fait dans mon exemple, bien que ce soit possible). Ainsi, en matière d'optimisation, nous pouvons dire qu'il y a toujours quelque chose que vous pouvez paralléliser, toujours.

 
Andrey Dik:

Lorsque la logique interne de l'EA n'est pas parallélisée, vous pouvez paralléliser l'ensemble de l'EA, un fil - un EA. C'est ainsi que le nuage et les agents fonctionnent en général, un fil == une EA == un historique, j'ai donné un exemple de cette mise en parallèle.

Par exemple, cette approche permet non seulement d'accélérer considérablement les optimiseurs maison sans trop de difficultés, mais aussi d'effectuer une optimisation interne auto-motivée dans le cadre d'une optimisation générale dans le nuage (par exemple, une optimisation avec roll-forward interne). Et bien sûr, personne n'interdit d'utiliser une parallélisation supplémentaire à l'intérieur de chaque thread (je ne l'ai pas fait dans mon exemple, bien que ce soit possible). Ainsi, en matière d'optimisation, nous pouvons dire qu'il y a toujours quelque chose que vous pouvez paralléliser, toujours.

Tout est vrai, mais qu'est-ce que la mise en lumière a à voir avec l'OCL ? C'est aux développeurs de l'optimiseur de fournir l'optimisation sur le GPU, comme sur le cloud, ce qui, je crois, n'est pas encore le cas. Ou bien parlez-vous d'écrire une enveloppe autour de l'EA, à l'intérieur de laquelle ils sont exécutés comme des threads OCL ? L'optimiseur d'aujourd'hui ne comprendrait pas une telle démarche.

Tout ce que vous avez à faire maintenant est d'écrire vous-même votre propre optimiseur, vous pouvez faire ce que vous voulez.

En général, le but de ce post était de dégriser les non-programmeurs ou les programmeurs novices en général et de les priver d'illusions inutiles.

 
Alexey Volchanskiy:

Tout est vrai, mais qu'est-ce que la mise en évidence a à voir avec l'OCL ? C'est aux développeurs de l'optimiseur de fournir l'optimisation sur le GPU, comme sur le nuage, ce qui, je crois, n'est pas encore le cas. Ou bien parlez-vous d'écrire une enveloppe autour de l'EA, à l'intérieur de laquelle ils sont exécutés comme des threads OCL ? L'optimiseur d'aujourd'hui ne comprendrait pas une telle démarche.

Tout ce que vous avez à faire maintenant est d'écrire vous-même votre propre optimiseur, vous pouvez faire ce que vous voulez.

En fait, le but de cet article était de dégriser les non-programmeurs ou les novices en général et de les débarrasser d'illusions inutiles.

J'ai donné un exemple où toute la logique de l'EA ainsi que l'historique testé sont envoyés au dispositif OCL(un thread == un EA == un historique). Cette solution est comprise par le testeur et l'optimiseur. Bien entendu, cette solution est destinée aux programmeurs.

Mais pour les utilisateurs ordinaires - oui, ils n'obtiendront aucune vitesse des innovations dans leurs EAs. Cela ne peut se faire que si les développeurs parviennent à envoyer un EA entier à OCL sous la forme d'un programme spécifique recompilé similaire aux shaders, mais jusqu'à présent ce n'est pas le cas.

 
Andrey Dik:

J'ai donné un exemple où toute la logique de l'EA est envoyée au dispositif OCL avec l'historique des tests(un fil == un EA == un historique). Cette solution est comprise par le testeur et l'optimiseur. Bien entendu, cette solution est destinée aux programmeurs.

Mais pour les utilisateurs ordinaires - oui, ils n'obtiendront aucune vitesse des innovations dans leurs EAs. Cela ne peut se faire que lorsque les développeurs parviennent à envoyer un EA entier à OCL sous la forme d'un programme spécifique recompilé similaire aux shaders, mais jusqu'à présent nous n'en parlons pas.

Je ne peux pas encore me prononcer sur l'exemple ; je dois aller vérifier OCL en personne, mais cela semble fonctionner.

D'un autre côté, je ne crois pas vraiment à ceux qui sont mis en évidence. MQ devra écrire des passerelles permettant de tirer l'API MQL d'OCL, notamment les fonctions de trading, l'accès aux séries chronologiques et aux indicateurs... C'est la morosité totale, MT5 a encore beaucoup de maladies infantiles qui sont en cours de correction, généralement par une référence à SD.

 
Alexey Volchanskiy:

Je ne peux pas encore juger de l'exemple, je dois sentir l'OCL en personne, mais il semble être vivant.

Mais je ne crois pas vraiment à la mise en évidence. MQ devra écrire quelques ponts pour pouvoir tirer l'API MQL d'OCL, en particulier les fonctions de trading, l'accès aux séries temporelles, les indicateurs... C'est un comble, MT5 a encore beaucoup d'effets secondaires puérils qui sont toujours en cours de correction, généralement via SD.

Ce n'est pas grave, mais le fait que le méta-éditeur reste au niveau du "Notepad" de 1995 est assez triste, et avec le fait que nous sommes en 2017. Ils font quelque chose, mais pour écrire quelque chose, il faut écrire dans un ancien éditeur.

Messieurs les DÉVELOPPEURS, faites enfin au moins une mise en évidence des correspondances, comme dans le Bloc-notes !

 
Alexey Volchanskiy:

C'est génial, mais il y a un gros problème avec OCL et tous les outils de parallélisation en général : très peu d'algorithmes peuvent être efficacement parallélisés.



Tyu, c'est simple. Il n'est pas nécessaire de se demander si un algorithme est parallèle ou non. L'approche est la suivante : lorsque vous regardez l'algorithme - vous voyez une boucle -> considérez qu'elle peut déjà être mise en parallèle (une bonne probabilité). Pas de boucles - pas de raison de s'inquiéter.

 
Vitaly Muzichenko:

C'est bien, mais le fait que le méta-éditeur reste au niveau du Notepad de 1995 est assez triste, même si nous sommes en 2017. Ils font quelque chose, mais pour écrire quelque chose, il faut écrire dans un ancien éditeur.

Messieurs les DÉVELOPPEURS, faites enfin au moins une mise en évidence des correspondances, comme dans le Bloc-notes !

Oui, j'ai déjà écrit deux posts ici sur le fait que les tiques sont grossières. Ils ont été supprimés. Et votre message sera supprimé. Les administrateurs/modérateurs n'ont pas besoin de mentionner les défauts de la MQ dans ce fil de discussion. Un festin pendant la peste...
 
Alexey Kozitsyn:
Oui, j'ai déjà écrit 2 posts ici sur les tiques à vif. Supprimé. Et votre message sera supprimé. Les administrateurs/modérateurs n'ont pas besoin de mentionner les défauts de la MQ dans ce fil de discussion. Un festin pendant la peste...

D'une certaine manière, cela me rappelle quand on peint une voiture, qu'on lui met des roues en titane et toutes sortes de babioles inutiles, mais que le moteur de la voiture précédente "cogne" et s'enraye, tout cela est inutile, car la voiture est cassée.

Et ici, un tas de toutes sortes de gimmicks pour l'écriture, mais où tout cela doit être écrit, est au niveau de 1995, en elle, d'écrire - une torture, si le code se compose de plus de 200 lignes

et en même temps Renat écrit :

Renat Fatkhullin:

Malheureusement, vous devez oublier OpenCL sur Windows XP. Et les systèmes d'exploitation 32 bits en général - 2017 arrive.

Où est le méta-éditeur de 2016 alors ?

S'il vous plaît, faites au moins la mise en évidence du code, et éventuellement, si possible, le pliage !

 
Vitaly Muzichenko:

D'une certaine manière, cela me rappelle quand on peint une voiture, qu'on lui met des roues en titane et toutes sortes de babioles inutiles, mais que le moteur de la voiture précédente "cogne" et s'enraye, tout cela est inutile, car la voiture est cassée.

Et ici, un tas de toutes sortes de gimmicks pour l'écriture, mais où tout cela doit être écrit, est au niveau de 1995, en elle, d'écrire - une torture, si le code se compose de plus de 200 lignes

et en même temps Renat écrit :

Où est donc le méta-éditeur de 2016 ?

S'il vous plaît, faites au moins la mise en évidence du code, et éventuellement si possible - le pliage !

Moi aussi, je m'interroge parfois sur la direction que prend MT. Mais les développeurs savent mieux que quiconque...