Compilation des programmes MQL5 avec le jeu d'instructions AVX / AVX2 + FMA3 / AVX512 + FMA3 à partir du build 3902 - page 6

 

Terminal :

Éditeur :


Au démarrage dans le journal du terminal :

2023.09.06 10:53:15.635 Terminal        MetaTrader 5 x64 build 3915 started for MetaQuotes Software Corp.
2023.09.06 10:53:15.635 Terminal        Windows 10 build 19045, 4 x Intel Core i3-7100  @ 3.90 GHz, AVX2, 10 / 15 Gb memory, 205 / 476 Gb disk, UAC, GMT+7


Dans les paramètres de l'éditeur :


Et à la compilation dans le journal :

0 errors, 0 warnings, 14 msec elapsed, cpu='X64 Regular'                1       1

Pourquoi ? Processeur avec AVX2, dans les paramètres de compilation AVX2+FMA3 est sélectionné, mais compile en X64 Regular.... Pourquoi ?

 
Dmitry Fedoseev #:

Pourquoi ne pas faire en sorte que plusieurs options de compilation soient regroupées dans un seul fichier compilé avec priority.... ? Il doit y avoir un avenir pour une telle variante. Mais pour l'instant, ce n'est qu'un jouet.

Vous n'en avez pas besoin. X64 fonctionne et c'est très bien. Pourquoi dois-je vérifier les quatre variantes pour voir si elles fonctionnent ? Je me souviens encore de l'époque où MQL x32 et x64 donnaient des résultats différents

 
Artyom Trishkin #:

Et lors de la compilation dans le journal :

Pourquoi ? Processeur avec AVX2, dans les paramètres de compilation AVX2+FMA3 est sélectionné, mais il compile en X64 Regular... Pourquoi ?

Il est très probable que vous compiliez un projet et non un fichier unique.

Les projets ont leurs propres paramètres de mode de compilation.

 
Renat Fatkhullin #:

Le passage clair à des versions spécialisées des terminaux pour les processeurs modernes est une étape importante et correcte. Nous nous concentrons sérieusement sur l'amélioration des performances de l'ensemble de la plate-forme et nous sommes désormais libres de mettre en œuvre directement de nouvelles méthodes d'optimisation sans avoir à construire des béquilles.

Il n'est pas évident de savoir comment conserver les versions précédentes des terminaux.

Par exemple, sur la machine AVX2-home, un bogue critique a été trouvé dans la version b3521 du terminal. J'avais des sauvegardes des versions précédentes sur ma machine personnelle en cas de retour en arrière temporaire jusqu'à ce que le bogue soit corrigé.

Et maintenant, sur DDS (AVX2 ne le supporte pas), où des terminaux de combat sont en cours d'exécution et où la version b3521 est installée, j'ai besoin de revenir en arrière de toute urgence. Les fichiers AVX2-exe de la machine personnelle ne fonctionneront pas. Comment faire pour revenir en arrière ?

 

Ajout de l'affichage et de la sélection du mode de compilation dans la barre d'outils :


 
fxsaber #:

Comment revenir en arrière ?

Veuillez créer un mécanisme qui sauvegarderait automatiquement les fichiers exe actuels lorsque LiveUpdate démarre.

 
Renat Fatkhullin #:

Lorsque vous distribuez des logiciels, y compris sur le marché, vous devez créer la variante x64.

Et pour les agents en nuage ?
 
Renat Fatkhullin #:

Vous compilez probablement un projet, et non un fichier unique.

Les projets ont leurs propres paramètres de mode de compilation.

Non, un seul fichier .mqh

UPD. Lors de la compilation des classes dans le fichier .mqh, oui, X64 Regular est utilisé, mais lors de la compilation de .mq5 auquel le fichier avec les classes est attaché, tout va bien :

0 errors, 0 warnings, 3318 msec elapsed, cpu='AVX2 + FMA3'              1       1
 
fxsaber #:
Et pour les agents du nuage ?

Dans MQL5 Cloud Network, la limite supérieure pour EX5 sera sur AVX2 et les tâches seront automatiquement distribuées aux agents avec l'ensemble de CPU requis.

En d'autres termes, tout fonctionnera de manière transparente dans quelques jours. Demain, nous lançons une version bêta ouverte pour les courtiers, et dans une semaine, nous aurons une version définitive.

 
Renat Fatkhullin #:

Dans le réseau MQL5 Cloud, la limite supérieure pour EX5 sera sur AVX2 et les tâches seront automatiquement distribuées aux agents avec l'ensemble de CPU requis.

En d'autres termes, tout fonctionnera de manière transparente dans quelques jours. Demain, nous lançons la version bêta ouverte pour les courtiers, et dans une semaine, nous aurons la version définitive.

Les agents sans AVX2 recevront-ils moins de missions ? Si compilé sur AVX512 - ne peut pas utiliser le nuage ?