MetaTrader 5 Python User Group - Comment utiliser Python dans Metatrader - page 25
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Comment avez-vous débogué la partie OpenCL du code ?
Renat, pourriez-vous nous indiquer quand OpenCL aurait un avantage à travailler avec un grand nombre de tableaux ou quand il y a un grand nombre de symboles et d'indicateurs dans un EA ?
Si vous pouvez construire des millions de matrices sans réticulation et les analyser en parallèle, vous pouvez accélérer le processus.
En général, toute personne qui résout et comprend les limites de ses tâches répondra facilement à sa question. Tant qu'il n'y a pas de compréhension des limites (et qu'il n'y a que des rêves "et si")en permanence avec le tiraillement des tâches à résoudre, le parallélisme reste juste une idée cool.
La plupart des tâches ne peuvent malheureusement pas être parallélisées efficacement.
Si vous pouvez construire des millions de matrices sans liens croisés et qui peuvent être analysées en parallèle, vous pouvez accélérer.
En général, une personne qui résout et comprend les limites de ses tâches répondra facilement à sa question. Tant qu'il n'y a pas de compréhension des limites (et il n'y a que des rêves "et si") en permanence avec le déchirement des tâches à résoudre, le parallélisme reste juste une idée cool.
La plupart des tâches ne peuvent malheureusement pas être parallélisées efficacement.
Je me souviens du fait qu'il y a des moments d'accompagnement dans les calculs, c'est pourquoi la question s'est posée dans mon esprit
En exécutant et en désamorçant les résultats.
Est-il possible de mettre une amorce à l'intérieur du code OpenCL ?
Grosso modo, OpenCL
On peut imaginer un processeur doté de grands registres (vectoriels), dans lesquels il est possible d'écrire des valeurs individuelles doubles N (par exemple, si N=64, 64 valeurs peuvent être écrites dans le registre).
De tels registres peuvent être additionnés, multipliés, etc., les uns avec les autres, il s'avère que pour une instruction, vous pouvez effectuer une opération sur N tableaux.
Mais il y a des limites.
Il est impossible d'opérer avec les valeurs d'un registre, c'est-à-dire qu'il est impossible, par exemple, d'ajouter une partie des valeurs d'un registre entre elles.
En termes de fréquence, ce type de processeur est nettement inférieur à l'unité centrale habituelle. Il est donc inutile de l'utiliser pour des tâches nécessitant le traitement séquentiel d'une valeur.
Outre la fréquence plus basse, il y a également une limitation de la mémoire, les valeurs ne peuvent être chargées et déchargées qu'à partir de la mémoire spéciale.
Il est possible de copier des données de la RAM dans cette mémoire spéciale, mais uniquement via un canal très étroit (lent).
Par conséquent, les tâches qui nécessitent le traitement de grandes quantités de données sont également mal adaptées à OpenCL.
Est-il possible de mettre une amorce à l'intérieur du code OpenCL ?
A l'extérieur.
Sautons la séance de cours. Il vous suffit de prendre et de lire tout ce qui a été créé et décrit en détail sur OpenCL par nous et sur le web en général.
Recherche OpenCL:
En fait, il est très intéressant que "opencl trading" a été googlé avec beaucoup de choses de nos ressources :
Voici une comparaison dans Python 3.8 et MQL5 en modes single thread/OpenCL : temps en secondes, le moins possible, le mieux c'est
Python en mode JIT via numba, le matériel est comme ceci :
L'exemple d'utilisation d'OpenCL est très simple et il n'y a pas de fioritures dans son optimisation. Bien que la tâche ne soit pas massive pour OpenCL et qu'elle ait déclenché des surcharges en préparation, elle a tout de même donné un bien meilleur résultat.
De très gros calculs parallèles peuvent être couramment exécutés avec OpenCL. Le seuil d'entrée n'est pas élevé et il suffit d'une journée pour comprendre comment l'utiliser.
Les fichiers de lecture sont joints.
Il s'avère que ce problème de calcul de PI dans OpenCL a déjà été résolu il y a 7 ans :
Quelqu'un a-t-il des liens directs vers ce qui doit être téléchargé ? Sur Intel, il faut s'inscrire.
HH Sur Intel GPU dans CPU je dois grok les pilotes de l'adaptateur vidéo, puis installé Intel_OpenCL_driver, puis mis les pilotes de l'adaptateur vidéo. De cette façon, tout fonctionne et la vidéo ne ralentit pas.
Vict:
Je crains que l'utilisation active de cette fonctionnalité ne transforme le démarrage en une quête de plusieurs minutes.
Ne tournera pas vous pouvez activer la mise en cache.
Voici une comparaison dans Python 3.8 et MQL5 en modes single thread/OpenCL : temps en secondes, le moins, le mieux
Python en mode JIT via numba, le matériel est comme ceci :
En mode multithreading, vous comparez les performances du CPU et du GPU dans 10000 threads. Le GPU n'est pas impliqué dans python.
Si je trouve un ordinateur avec une carte vidéo appropriée, je corrigerai le code Python et le testerai sur cet ordinateur. Je vais essayer d'exécuter votre code sur le CPU, je pensais que le GPU était nécessaire.
Je n'ai pas du tout l'intention de prouver qui est le plus rapide. Il est plus intéressant de connaître vos projets d'intégration de Python.
Prévoyez-vous des fonctions de trading et des événements tick en python ?
Pourtant, le GPU semble être obligatoire, "AMD APP SDK" n'est pas téléchargeable.
Grosso modo, OpenCL
Nous pouvons imaginer qu'il existe un processeur avec de grands registres (vectoriels) dans lesquels nous pouvons écrire des valeurs individuelles doubles N (par exemple, si N=64, alors 64 valeurs peuvent être écrites dans le registre).
De tels registres peuvent être additionnés, multipliés, etc., les uns avec les autres, il s'avère que pour une instruction, vous pouvez effectuer une opération sur N tableaux.
Mais il y a des limites.
Il est impossible d'opérer avec les valeurs d'un registre, c'est-à-dire qu'il est impossible, par exemple, d'ajouter une partie des valeurs d'un registre entre elles.
En termes de fréquence, ce type de processeur est nettement inférieur à l'unité centrale habituelle. Il est donc inutile de l'utiliser pour des tâches nécessitant le traitement séquentiel d'une valeur.
Outre la fréquence plus faible, il existe également une limitation de la mémoire, les valeurs ne pouvant être chargées et déchargées qu'à partir de la mémoire spéciale.
Il est possible de copier des données de la RAM dans cette mémoire spéciale, mais uniquement via un canal très étroit (lent).
Par conséquent, les tâches qui nécessitent le traitement de grandes quantités de données sont également mal adaptées à OpenCL.
Il n'y a pas de vecteurs dans l'exemple de calcul de l'IP. Il divise simplement la somme totale en plusieurs morceaux indépendants et les envoie à chaque cœur OpenCL. Tout est additionné à la fin.
Par exemple, s'il n'y a pas de carte vidéo discrète et qu'il y a 4 cœurs physiques + 4 cœurs virtuels dans le CPU, l'exécution sera huit fois plus rapide. En d'autres termes, des morceaux de somme seront comptés sur chaque cœur en parallèle.