MetaTrader 5 Python User Group - Comment utiliser Python dans Metatrader - page 23

 
Lyuk:


Ce qui est triste, c'est que les calculateurs n'ont été multipliés que par 12 au cours des 15 dernières années. Je pensais que les processeurs modernes étaient plus rapides.

J'ai un vieux i7-3770K, il a sept ans. Les processeurs d'aujourd'hui sont plus rapides.

 
Roman:

J'ai un vieux i7-3770K, il a sept ans. Les processeurs modernes sont plus rapides.

Hélas, votre 3770K est facilement overclocké jusqu'à 4.8Ghz, même s'il serait plus ancien que le 2600K, vous atteindriez le paradis de l'overclocking, le tout est de tendre à réduire la taille du CPU ce qui entraîne des problèmes de refroidissement. Par exemple, le 6xxx est même un problème pour l'overclock. Dans l'ensemble, pour les utilisateurs, les spécifications n'ont pas beaucoup changé, à l'exception des derniers i9 qui sont devenus plus proches des xeons. L'avantage des xeons est l'efficacité énergétique par rapport aux CPU pour les consommateurs normaux. Donc votre 3770k est encore tout à fait normal pour l'utilisateur moyen.

 
Il y a un fil de discussion sur les tests de processeurs, et l'auteur a fait un bon travail de collecte de statistiques.
Si vous êtes intéressé, vous pouvez tester vos processeurs.
Оцениваем ядра CPU для оптимизации
Оцениваем ядра CPU для оптимизации
  • 2019.08.09
  • www.mql5.com
Предлагаю собрать статистику по производительности разных процессоров с целью оценки их эффективности для работы тестера стратегий в режиме оптимиз...
 

Je l'ai testé sur une machine virtuelle Windows7 32bit avec 2 cœurs AMD FX.

Sur le mql5, c'était 6 secondes.

Sur Python, dans un fil de discussion, il était de 2,5 secondes.

C'est beaucoup plus rapide, et même plus rapide que vous sur I7 dans un seul fil, ce qui est étonnant.

Apparemment, le compilateur jit fonctionne mieux pour AMD, ou AMD est meilleur pour de telles tâches.

 
Ainsi, Python avec un compilateur jit bat le C (mql) par un facteur de 2 ! Si vous l'exécutez sur un processeur moderne à 8 cœurs, il bat le C par un facteur de 8 simplement parce qu'il est multithread.

Eh bien, le test normal, a permis à python de bump la conformité exacte avec la norme IEEE (fastmath=true), alors vous devez glisser -Ofast à syshka aussi. Et puis il y a OpenMP, qui permet de paralléliser les boucles - [quelques lignes supplémentaires] (https://www.ibm.com/developerworks/ru/library/au-aix-openmp-framework/index.html).

Les amateurs d'abstractions... Et s'il y a un autre add-on au-dessus de python ? Et s'il y en a un de plus ? Compiler en code d'octet de la machine virtuelle d'une machine à octet virtuelle.

 

Malheureusement, un nombre indénombrable d'algorithmes peuvent être décomposés en parallélisme.

L'exemple donné du calcul de pi sert uniquement à démontrer ce type de test synthétique. On procède de la même manière avec OpenMP en C++. Cela peut être fait encore plus rapidement dans MQL5 avec OpenCL.

 

J'ai trouvé un tel paramètre de parallélisme pour les boucles dans Visual Studio.
Peut-on implémenter une telle directive dans mql également ?
Ou les boucles dans mql sont-elles parallèles par défaut ?

vs

 
Roman:

J'ai trouvé un tel paramètre de parallélisme pour les boucles dans Visual Studio.
Peut-on implémenter une telle directive dans mql également ?
Ou les boucles dans mql sont-elles mises en parallèle par défaut ?

Je n'ai pas réussi à voir l'utilisation de ce paramètre dans Visual Studio (ainsi que dans tous les autres) depuis 10 ans. Même en ayant allumé tous les drapeaux du reportage en boucle.

Cela n'a tout simplement pas fonctionné et ne fonctionne pas non plus sur les grands projets où il existe de nombreuses possibilités de parallélisation. Seul l'OpenMP direct avec marquage manuel des boucles fonctionne.

Dans le MQL5, les boucles ne sont pas mises en parallèle.

 
Renat Fatkhullin:

Malheureusement, un nombre indénombrable d'algorithmes peuvent être décomposés en parallélisme.

L'exemple donné du calcul de pi sert uniquement à démontrer ce type de test synthétique. On procède de la même manière avec OpenMP en C++. Cela peut être fait encore plus rapidement dans MQL5 avec OpenCL.

J'ai posté un calcul sur le blog qui fait un parallèle parfait. Malheureusement, les informations sur OpenCL sont d'un niveau tel qu'elles nécessitent des compétences bien plus élevées que celles dont je dispose.

J'aimerais voir un exemple simple (comme dans le blog) d'une implémentation OpenCL et le résultat de l'accélération.

 
fxsaber:

J'ai posté un calcul sur le blog qui fait un parallèle parfait. Malheureusement, les informations sur OpenCL sont d'un niveau tel qu'elles requièrent des compétences bien supérieures à celles dont je dispose.

J'aimerais voir un exemple simple (comme dans le blog) d'une implémentation OpenCL et le résultat de l'accélération.

En dehors du sujet de l'OpCl mais sur le sujet de Python

Les cas visuellement similaires sont également assez bien définis (distributions incrémentales).

Notez le groupe 0-6 heures (par GMT + 2)

Mois en 10 ans

Heures en 10 ans