Evaluierung von CPU-Kernen zur Optimierung

 

Ich schlage vor, Statistiken über die Leistung der verschiedenen Prozessoren zu erstellen, um ihre Effektivität für den Strategy Tester im Optimierungsmodus abzuschätzen.

Um objektiver zu sein, schlage ich vor, einen Expert Advisor zu verwenden, der im Modus"Mathematisches Rechnen" läuft, der es Ihnen ermöglicht, die Nutzung der Festplatte und des Speichers Ihres Computers zu minimieren. Wenn möglich, geben Sie den Namen des Prozessors, der Hauptplatine und die Frequenz des Arbeitsspeichers an.

Der Expert Advisor hat nur einen Parameter, der optimiert werden sollte (in der Tat, es ist nichts und die Daten sind identisch für alle Agenten - um objektiv zu sein), geben Sie die Anzahl der Durchläufe gleich der Anzahl der Threads und wählen Sie Agenten durch die Anzahl der Prozessorkerne (kein Hypertraining!).

Ich hoffe, dass die gesammelten Daten den Menschen bei der Auswahl einer Hardware für die Optimierung, die vernünftig ist, nicht von der ersten Ordnung zu nehmen, zumindest war es so in letzter Zeit, aber etwas ändern kann.

Der Expert Advisor selbst ist ein Fragment eines echten EA, den ich in einer ähnlichen Aufgabe verwende, um Blätter aus einem Entscheidungsbaum auszuwählen, d.h. es ist eine echte MoD-Aufgabe, und wenn Sie Ideen haben, wie man den Code beschleunigen kann, würde ich mich freuen, sie zu hören. Es gibt nur 1000 Blätter im Code, in Wirklichkeit sind es aber schon mehr als 70.000, also werden sie in eine Funktion eingefügt, um eine akzeptable Wartezeit für das Ergebnis der Kompilierung zu haben.

2019.08.09 23:04:26.397 Terminal        Windows 7 Service Pack 1 (build 7601) x64, IE 11, Intel Core i5  M 450 @ 2.40 GHz, Memory: 2045 / 3766 Mb, Disk: 53 / 148 Gb, GMT+3
Aktivieren Sie im Protokoll des Strategietesters über das Kontextmenü die Option "Vollständiges Optimierungsprotokoll".
2019.08.09 22:41:25.630 Core 2  pass 2 returned result 1001000.00 in 0:04:50.391
2019.08.09 22:41:26.642 Core 1  pass 0 returned result 1001000.00 in 0:04:51.365
2019.08.09 22:46:09.036 Core 2  pass 3 returned result 1001000.00 in 0:04:43.441
2019.08.09 22:46:10.759 Core 1  pass 1 returned result 1001000.00 in 0:04:44.152
2019.08.09 22:46:10.759 Tester  optimization finished, total passes 4
2019.08.09 22:46:10.769 Statistics      optimization done in 9 minutes 36 seconds
2019.08.09 22:46:10.769 Statistics      shortest pass 0:04:43.441, longest pass 0:04:51.365, average pass 0:04:47.337

Hinzugefügt: In diesem Thread hat sich herausgestellt, dass die Dateigröße in einigen (das ist noch herauszufinden) Prozessoren die Leistung des Systems als Ganzes beeinflusst, obwohl sich der Code strukturell nicht viel ändert. Deshalb bitte ich jeden, zwei Tester zu testen.

Beispiel für Testereinstellungen - Symbol, Periode und Zeitrahmen sind nicht wichtig - die anderen Einstellungen sind relevant. Der Screenshot zeigt einen anderen EA, aber die Einstellungen sind korrekt


Bis jetzt haben wir die folgende Bewertung, bei der die durchschnittliche Zeit in Sekunden verwendet wurde - die beiden letzten Spalten und die letzte Spalte zeigen die Anzahl der Durchläufe des Prozessors in einer Stunde.

Die Tabelle wird nach der letzten Spalte gefiltert, die den höchsten Verbrauch an Rechenressourcen für die EA-Option angibt.



Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Большую часть времени современные компьютеры простаивают и не используют всех возможностей процессора. Мы предлагаем задействовать их с пользой. Вы можете сдавать мощности вашего компьютера другим участникам нашей сети для выполнения разнообразных...
Dateien:
 
Aleksey Vyazmikin:

Ich schlage vor, Statistiken über die Leistung der verschiedenen Prozessoren zu sammeln, um ihre Effizienz zu schätzen, damit der Strategietester im Optimierungsmodus arbeiten kann.

Gute Initiative, ich unterstütze sie.

Ich erhalte beim Kompilieren eine Warnung:

implicit conversion from 'number' to 'string'   Tree_Brut_TestPL.mq5    2567    16

Ist das so gewollt?

Zeichenfolge:

   if(FrameAdd(Test_P,1,0,stat_values)==false)
 
Aleksey Vyazmikin:

Ich schlage vor, Statistiken über die Leistung der verschiedenen Prozessoren zu erstellen, um ihre Effektivität für den Strategy Tester im Optimierungsmodus abzuschätzen.

Um objektiver zu sein, schlage ich vor, einen Expert Advisor zu verwenden, der im Modus"Mathematisches Rechnen" läuft, der es Ihnen ermöglicht, die Nutzung der Festplatte und des Speichers Ihres Computers zu minimieren. Wenn möglich, geben Sie den Namen des Prozessors, der Hauptplatine und die Frequenz des Arbeitsspeichers an.

Der Expert Advisor hat nur einen Parameter, der optimiert werden sollte (in der Tat ist es nichts und die Daten sind identisch für alle Agenten - um objektiv zu sein), geben Sie die Anzahl der Durchläufe gleich der Anzahl der Threads und wählen Sie Agenten durch die Anzahl der Prozessorkerne (kein Hypertruding!).

Ich hoffe, dass die gesammelten Daten den Leuten bei der Wahl einer Hardware für die Optimierung helfen werden, die vernünftigerweise nicht in erster Linie zu nehmen ist, zumindest war das in letzter Zeit so, aber einige Dinge können sich geändert haben.

Der Expert Advisor selbst ist ein Ausschnitt aus einem echten EA, den ich in einer ähnlichen Aufgabe verwende, um Blätter aus einem Entscheidungsbaum auszuwählen, d.h. es ist eine echte MoD-Aufgabe, und wenn es Ideen gibt, wie man den Code beschleunigen kann, wäre ich sehr daran interessiert, sie zu hören. Es gibt nur 1000 Blätter im Code, in Wirklichkeit sind es bereits mehr als 70.000, also werden sie in eine Funktion eingefügt, um eine akzeptable Kompilierzeit zu erreichen.

Über welchen Zeitraum sollten Sie optimieren und in welchem Zeitrahmen? Ist das Werkzeug wichtig?
 
Serhii Shevchuk:

Gute Initiative, ich unterstütze sie.

Beim Kompilieren wird eine Warnung ausgegeben:

Ist das der richtige Weg?

Zeile:

Korrigiert und relauncht!

Testen Sie es.

 
Maxim Romanov:
Über welchen Zeitraum soll optimiert werden und in welchem Zeitrahmen? Ist das Werkzeug wichtig?

Immathematischen Berechnungsmodus spielt das keine Rolle, dort werden keine Ticks erzeugt!

 
Wie steht es damit? Hebt der Stumpf der späten 2000er Jahre nicht mehr ab? :D
 
Artem Prischepa:
Was gibt es da draußen? Ist der Stumpf der späten 2000er Jahre nicht mehr im Kommen? :D

Probieren Sie Ihren Prozessor aus und posten Sie Ihre Ergebnisse - mal sehen, ob er abhebt oder nur rollt!

 

Verdirbt ein altes Pferd die Furche?

Hardware

Ergebnisse:

2019.08.09 23:22:07.472 Tester  set "Custom max" as optimization criterion for mathematical calculations
2019.08.09 23:22:07.540 Experts optimization frame expert Tree_Brut_TestPL (EURUSD.m,H1) processing started
2019.08.09 23:22:07.592 Tester  cache file 'tester\cache\Tree_Brut_TestPL.30.DFF2DB61B8A3751199D61AD0A0F226D3.opt' deleted
2019.08.09 23:22:07.623 Tester  Experts\Tree_Brut_TestPL.ex5 math calculations test means no history and no symbol info for EURUSD.m
2019.08.09 23:22:07.623 Tester  complete optimization started
2019.08.09 23:22:07.648 Core 1  agent process started on 127.0.0.1:3008
2019.08.09 23:22:07.650 Core 2  agent process started on 127.0.0.1:3009
2019.08.09 23:22:07.652 Core 3  agent process started on 127.0.0.1:3010
2019.08.09 23:22:07.654 Core 4  agent process started on 127.0.0.1:3011
2019.08.09 23:22:07.657 Core 5  agent process started on 127.0.0.1:3012
2019.08.09 23:22:07.659 Core 6  agent process started on 127.0.0.1:3013
2019.08.09 23:22:07.662 Core 7  agent process started on 127.0.0.1:3014
2019.08.09 23:22:07.664 Core 8  agent process started on 127.0.0.1:3015
2019.08.09 23:22:07.972 Core 1  connecting to 127.0.0.1:3008
2019.08.09 23:22:07.973 Core 1  connected
2019.08.09 23:22:07.983 Core 1  authorized (agent build 2097)
2019.08.09 23:22:07.997 Core 1  common synchronization completed
2019.08.09 23:22:08.035 Core 3  connecting to 127.0.0.1:3010
2019.08.09 23:22:08.036 Core 3  connected
2019.08.09 23:22:08.046 Core 3  authorized (agent build 2097)
2019.08.09 23:22:08.056 Core 2  connecting to 127.0.0.1:3009
2019.08.09 23:22:08.057 Core 2  connected
2019.08.09 23:22:08.059 Core 3  common synchronization completed
2019.08.09 23:22:08.067 Core 5  connecting to 127.0.0.1:3012
2019.08.09 23:22:08.068 Core 5  connected
2019.08.09 23:22:08.068 Core 2  authorized (agent build 2097)
2019.08.09 23:22:08.082 Core 2  common synchronization completed
2019.08.09 23:22:08.083 Core 5  authorized (agent build 2097)
2019.08.09 23:22:08.103 Core 7  connecting to 127.0.0.1:3014
2019.08.09 23:22:08.104 Core 7  connected
2019.08.09 23:22:08.119 Core 7  authorized (agent build 2097)
2019.08.09 23:22:08.125 Core 5  common synchronization completed
2019.08.09 23:22:08.140 Core 7  common synchronization completed
2019.08.09 23:22:08.150 Core 4  connecting to 127.0.0.1:3011
2019.08.09 23:22:08.151 Core 4  connected
2019.08.09 23:22:08.151 Core 8  connecting to 127.0.0.1:3015
2019.08.09 23:22:08.151 Core 8  connected
2019.08.09 23:22:08.162 Core 8  authorized (agent build 2097)
2019.08.09 23:22:08.164 Core 4  authorized (agent build 2097)
2019.08.09 23:22:08.184 Core 6  connecting to 127.0.0.1:3013
2019.08.09 23:22:08.185 Core 6  connected
2019.08.09 23:22:08.208 Core 6  authorized (agent build 2097)
2019.08.09 23:22:08.228 Core 4  common synchronization completed
2019.08.09 23:22:08.240 Core 6  common synchronization completed
2019.08.09 23:22:08.250 Core 8  common synchronization completed
2019.08.09 23:24:45.931 Tester  optimization finished, total passes 8
2019.08.09 23:24:45.941 Statistics      optimization done in 2 minutes 38 seconds
2019.08.09 23:24:45.941 Statistics      shortest pass 0:02:35.945, longest pass 0:02:37.669, average pass 0:02:37.006
2019.08.09 23:24:45.941 Statistics      8000 frames (3.14 Mb total, 412 bytes per frame) received
2019.08.09 23:24:45.941 Statistics      local 8 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2019.08.09 23:24:45.988 Tester  8 new records saved to cache file 'tester\cache\Tree_Brut_TestPL.30.DFF2DB61B8A3751199D61AD0A0F226D3.opt'

Terminal-Version:

2019.08.09 23:20:35.776 Terminal        MetaTrader 5 x64 build 2085 started (MetaQuotes Software Corp.)
2019.08.09 23:20:35.778 Terminal        Windows 10 (build 17763) x64, IE 11, UAC, AMD FX-8300 Eight-Core Processor , Memory: 17102 / 24574 Mb, Disk: 2407 / 2441 Gb, GMT+2
 
Serhii Shevchuk:

Verdirbt ein altes Pferd die Furche?

Ergebnisse:

Terminal-Version:

Es scheint, dass Sie 8 Agenten beteiligt sind, und Sie brauchen 4, weil FPU in FX nur 4 und 8 ALUs haben, und es ist FPU, die während der Optimierung geladen wird. Warum so - ist nicht klar - Frage an die Entwickler, denn der Code ist weitgehend auf den Vergleich gebaut, aber offenbar der Verbrauch von Gleitkomma-Berechnung herrscht oder mal langsamer, so stellt sich heraus, dass es notwendig ist, um die Anzahl der Coprozessoren setzen, dann 1 Pass wird schneller und die durchschnittliche Zeit wird die gleiche bleiben.

 
Aleksey Vyazmikin:

Es scheint, dass Sie 8 Agenten beteiligt sind und Sie brauchen 4, da die FPU in FX nur 4 und 8 APUs hat, und es ist die FPU, die während der Optimierung geladen wird. Warum es so ist - ist nicht klar - Frage an die Entwickler, weil der Code meistens auf dem Vergleich basiert, aber anscheinend überwiegt der Verbrauch der Gleitkommaberechnung oder ist mal langsamer, so stellt es sich heraus, dass es notwendig ist, genau die Anzahl der Koprozessoren zu stellen, dann wird 1 Durchgang schneller sein und die durchschnittliche Zeit wird ungefähr gleich bleiben.

Bitte klären Sie das. Ich schalte 4 Agenten aus und stelle den zu optimierenden Parameter so ein, dass ich 4 Optimierungsdurchgänge oder 8 Durchgänge erhalte?
 
Serhii Shevchuk:
Bitte klären Sie das. Schalte ich 4 Agenten aus und stelle den zu optimierenden Parameter so ein, dass ich 4 Optimierungsdurchgänge oder 8 Durchgänge erhalte?

8 geht an 4 Agenten vorbei, quasi analog zum Hypertrading - entsprechend der Anzahl der Threads.

Aktivieren Sie"Vollständiges Optimierungsprotokoll", um die Zeit jedes Durchgangs zu sehen.
Grund der Beschwerde: