Evaluierung von CPU-Kernen zur Optimierung - Seite 6

 
Hier sind einige Informationen aus einer Quelle über die Art der Anweisungen

Anweisungen, die das E5-2670 nicht hat:
BMI (Bit Manipulation Instructions) sind Befehlssätze, die in Intel- und AMD-Prozessoren zur Beschleunigung von Bitmanipulationsoperationen verwendet werden. BMI sind keine SIMD-Befehle und arbeiten nur mit Universalregistern von Prozessoren.
Bitmanipulationsoperationen werden am häufigsten von Anwendungen verwendet, die für Low-Level-Gerätesteuerung, Fehlererkennung und -korrektur, Optimierung, Komprimierung und Verschlüsselung konzipiert sind. Die Verwendung von BMI durch Programme beschleunigt diese Vorgänge erheblich (manchmal um einen Faktor von mehreren); allerdings wird der Programmcode für die Programmierer schwieriger zu schreiben.
Die BMI-Befehlssätze in Intel- und AMD-Prozessoren unterscheiden sich erheblich.
Intel-Prozessoren verwenden BMI1 und BMI2 (zusätzlich zu BMI1).
AMD-Prozessoren verwenden ABM-Befehle (Advanced Bit Manipulation), die Teil des SSE4a-Pakets sind (diese Befehle werden auch von Intel verwendet, sind aber als Teil von SSE4.2 und BMI1 implementiert). Darüber hinaus verwenden AMD-Prozessoren den TBM-Befehlssatz (Trailing Bit Manipulation), der eine Erweiterung von BMI1 ist.

F16C ist ein Befehlssatz, der auf x86-Prozessoren verwendet wird, um Konvertierungen zwischen halbgenauen Binärzahlen (16 Bit) und standardmäßigen Gleitkommazahlen (32 Bit) zu beschleunigen.
F16C wird sowohl in AMD- als auch in Intel-Prozessoren eingesetzt und erweitert deren Fähigkeiten zur Verarbeitung von Multimediadaten und anderen Datentypen erheblich.
F16C (16-Bit-Gleitkomma-Konvertierung) - ist ein Befehlssatz, der auf x86-Prozessoren verwendet wird, um Konvertierungen zwischen halbgenauen Binärzahlen (16 Bit) und Standard-Gleitkomma-Binärzahlen (32 Bit) zu beschleunigen. Es handelt sich im Wesentlichen um eine Erweiterung der grundlegenden 128-Bit-SSE-Befehle.
Die Verwendung von Zahlen mit unterschiedlicher Genauigkeit in der Computertechnik ist ein Kompromiss zwischen der Genauigkeit und dem Bereich der dargestellten Werte, der notwendig ist, um eine hohe Geschwindigkeit und eine breite Palette von Aufgaben zu erreichen.
F16C wurde erstmals 2009 in AMD-Prozessoren verwendet, obwohl er schon viel früher entwickelt wurde und als CVT16 bekannt war. CVT16 war ursprünglich als Teil des nie veröffentlichten SSE5-Pakets geplant, das XOP- und BMI4-Anweisungen enthalten sollte.
Heutzutage wird der F16C-Befehlssatz sowohl in AMD- als auch in Intel-Prozessoren verwendet, was deren Fähigkeiten bei der Verarbeitung von Multimediadaten und anderen Datentypen erheblich erweitert.

FMA
Eine Reihe von Prozessorbefehlen, die Gleitkomma-Multiplikations-Additionsoperationen beschleunigen. FMA steht für Fused Multiply-Add.
Multiplikations- und Additionsoperationen sind weit verbreitet und spielen in der Computertechnik eine wichtige Rolle. Vor allem, wenn es um die digitale Verarbeitung analoger Signale geht (binäre Video- und Audiocodierung und andere ähnliche Operationen). Aus diesem Grund wurde die Unterstützung für FMA-Befehle nicht nur in die CPUs, sondern auch in die GPUs vieler heutiger Grafikkarten integriert.

Anweisungen, die alle außer dem i7-8700 nicht haben:
TSX (Transactional Synchronization eXtensions) ist ein von Intel entwickelter Satz von Multicore-Prozessoranweisungen, der die Effizienz der miteinander kommunizierenden Kerne bei der gemeinsamen Nutzung der gleichen Daten verbessert und letztlich die Gesamtleistung des Computers erhöht.

MPX (Memory Protection Extensions) - Eine Technologie, die mit Hilfe von Pufferüberlaufmechanismen verbesserten Schutz vor Viren und anderen Bedrohungen bietet.
Der Prozessor kann die Heap- und Stack-Puffergrenzen prüfen, bevor er auf den Speicher zugreift, um sicherzustellen, dass Anwendungen, die auf den Speicher zugreifen, nur auf den ihnen zugewiesenen Speicherbereich zugreifen. Dies macht es für einen Hacker oder ein Malware-Programm viel schwieriger, seinen Code über den Speicher an die Stelle der CPU zu setzen.

SGX (Software Guard Extensions) - eine Reihe von Anweisungen, die von Intel entwickelt und in seinen Prozessoren ab der Skylake-Architektur verwendet werden.
SGX ermöglicht geschützte Code- und Datenabschnitte (so genannte "Enklaven"), die einen hohen Schutz für laufende Programme gegen bösartige Anwendungen und Hackerangriffe bieten.


BMI2 (ergänzend zu BMI1).

Da es bei MPX und SGX um den Schutz geht, würde ich die Vermutung wagen, dass der Compiler aktiv BMI2-Befehle/Technologien verwendet und es eine Auswirkung von TSX gibt, was weniger wahrscheinlich ist.

 
Alexey, es scheint mir, dass es effizienter wäre, zu lernen, wie man Code für OpenCL schreibt und eine gute Karte dafür zu kaufen.
OpenCL auf einer Karte ist a priori viel effizienter als mehrere Prozessoren.
Und vergessen Sie das lästige Vergleichen von Prozessoren.
Aber ja, man muss herausfinden, wie man Code für OpenCL schreibt.
Ich kann nicht wirklich sagen, wie informativ es ist - ich habe versucht, es selbst zu lesen.
 
Roman:
Alexey, ich denke, es wäre effizienter zu lernen, wie man OpenCL-Code schreibt und eine gute Karte dafür zu bekommen.
OpenCL auf einer Karte wird von vornherein viel effizienter sein als mehrere Prozessoren.
Und vergessen Sie die Mühe, Prozessoren zu vergleichen.
Aber ja, man muss herausfinden, wie man Code für OpenCL schreibt.
Ich kann nicht wirklich sagen, wie informativ es ist - ich habe versucht, es selbst zu lesen.

Es ist nicht so einfach, in OpenCL zu schreiben, ich habe die Theorie ein wenig studiert, es ist einfacher, einen Agenten mit OpenCL-Technologie zu machen, nicht wie jetzt, einfacher in Bezug auf die Verbraucher.

Und dann, OpenCL ist nicht immer effizient, so war ich auf Software von Yandex(CatBoost) Karte 1060 und FX-8350-Prozessor zu vergleichen - es stellte sich heraus, dass der Prozessor doppelt so schnell ist, und wenn dieser Trend ist wirtschaftlich profitabler, einen leistungsstarken Prozessor als fünf 1080i, von denen es sicherlich einen Effekt zu kaufen, aber teuer ... Im Allgemeinen ist es nicht eindeutig, und es ist keine Lösung für alle.

Und dann, ich denke, dass in den Compiler können Sie einfach deaktivieren Sie die Unterstützung für die neuesten Technologien und für Oldtimer alles schneller funktionieren wird, die Option zu deaktivieren.
 
Aleksey Vyazmikin:

Es ist nicht so einfach, in OpenCL zu schreiben, ich habe die Theorie ein wenig studiert, es ist einfacher, einen Agenten mit OpenCL-Technologie zu machen, nicht wie jetzt, einfacher in Bezug auf die Verbraucher.

Und dann, OpenCL ist nicht immer effizient, so war ich auf Software von Yandex (CatBoost) Karte 1060 und FX-8350-Prozessor zu vergleichen - es stellte sich heraus, dass der Prozessor doppelt so schnell ist, und wenn dieser Trend ist wirtschaftlich profitabler, einen leistungsstarken Prozessor als fünf 1080i, von denen es sicherlich einen Effekt zu kaufen, aber teuer ... Im Allgemeinen ist es nicht eindeutig, und es ist keine Lösung für alle.

Für mathematische Berechnungen sind die grünen nicht besonders geeignet.
Die roten sind besser für Mathe, sie haben sogar standardmäßig einen Mathe-Modus, der über die offizielle App eingestellt werden kann.
Ich habe eine alte Referenz Radeon 7970, sie unterstützt noch Mining. Das soll nicht heißen, dass ich nur auf eine Karte setze, nein, das ist nicht rentabel, aber es zieht die Berechnungen nach sich.
Für mathematische Berechnungen auf der Karte, müssen Sie auf die Anzahl der Shader schauen, je mehr von ihnen die besser, der Rest der fps, etc. spielt keine Rolle, vor allem die Shader-Blöcke.


 
Roman:

Für mathematische Berechnungen sind die grünen nicht besonders geeignet.
Für Mathe sind die roten besser. Sie haben sogar standardmäßig einen Mathe-Modus, der über die offizielle App eingestellt werden kann.
Ich habe eine alte Radeon 7970 Referenz, sie unterstützt noch Mining. Das soll nicht heißen, dass ich auf eine Karte setze, nein, das ist nicht rentabel, aber es zieht die Berechnungen nach sich.
Für mathematische Berechnungen auf der Karte, müssen Sie auf die Anzahl der Shader schauen, je mehr von ihnen die besser, der Rest der fps, etc. spielt keine Rolle, vor allem die Shader-Blöcke.


Soweit ich weiß, wissen die Roten nur, wie man mit dem Doppelten arbeitet und die Grünen nicht - das weiß ich. Aber beim maschinellen Lernen (CatBoost) gibt es eine Schärfung der Vergleichsoperationen, die von der Idee her genauso schnell funktionieren sollte wie bei Rot und Grün. Und rote Farben werden von CatBoost leider nicht unterstützt.

Auf jeden Fall kann ich es nicht selbst tun, und die Künstler zu finden, war nicht so einfach für einen angemessenen Preis und Verständnis.

 

Es wurde mir vorgeschlagen, dass der Code durch die Verwendung von Switch-Enumerationen beschleunigt werden könnte.

Früher war es so:

         if(Type_Poisk_Tree==Tree_Buy_Filter || Type_Poisk_Tree==Tree_Sell_Filter || Type_Poisk_Tree==Tree_Buy || Type_Poisk_Tree==Tree_Sell)
           {
            if(Test_P>=1000 && Test_P<5000)
              {
               if(Test_P<2500)
                 {
                  if(Test_P==1000)if(DonProc<5.5 && Levl_Down_DC<-7.5) CalcTest=CalcTest+1; //(0.4810127 0.3037975 0.2151899)
                  if(Test_P==1001)if(DonProc< 5.5 && Levl_Down_DC>=-7.5 && TimeH< 21.5 && TimeH>=16.5 && TimeH< 19.5 && Levl_Close_H1s1N< 2.5) CalcTest=CalcTest+1; //(0.4400657 0.4072250 0.1527094)
                  if(Test_P==1002)if(DonProc< 5.5 && Levl_Down_DC>=-7.5 && TimeH< 21.5 && TimeH>=16.5 && TimeH< 19.5 && Levl_Close_H1s1N>=2.5) CalcTest=CalcTest+1; //(0.3739837 0.5121951 0.1138211)
                  if(Test_P==1003)if(DonProc<5.5 && Levl_Down_DC>=-7.5 && TimeH<21.5 && TimeH>=16.5 && TimeH>=19.5) CalcTest=CalcTest+1; //(0.3390706 0.4647160 0.1962134)
                //Ещё 70к сравнений
                }

Und jetzt ist es so:

         if(Type_Poisk_Tree==Tree_Buy_Filter || Type_Poisk_Tree==Tree_Sell_Filter || Type_Poisk_Tree==Tree_Buy || Type_Poisk_Tree==Tree_Sell)
           {
                  switch(Test_P)
                    {
                     case 1000: if(DonProc<5.5 && Levl_Down_DC<-7.5) CalcTest=CalcTest+1; break; //(0.4810127 0.3037975 0.2151899)
                     case 1001: if(DonProc< 5.5 && Levl_Down_DC>=-7.5 && TimeH< 21.5 && TimeH>=16.5 && TimeH< 19.5 && Levl_Close_H1s1N< 2.5) CalcTest=CalcTest+1; break; //(0.4400657 0.4072250 0.1527094)
                     case 1002: if(DonProc< 5.5 && Levl_Down_DC>=-7.5 && TimeH< 21.5 && TimeH>=16.5 && TimeH< 19.5 && Levl_Close_H1s1N>=2.5) CalcTest=CalcTest+1; break; //(0.3739837 0.5121951 0.1138211)
                     case 1003: if(DonProc<5.5 && Levl_Down_DC>=-7.5 && TimeH<21.5 && TimeH>=16.5 && TimeH>=19.5) CalcTest=CalcTest+1; break; //(0.3390706 0.4647160 0.1962134)
                     //ещё 70к сравнений
                   }

Ersten Schätzungen zufolge ist der FX-8350 um 30 % schneller, aber die Phenom II-Prozessoren sind etwa dreimal so schnell! Ich werde später Vergleichstests durchführen, wenn die Maschinen frei von Optimierungen sind.

Ich hänge die neue Version von Tree_Brut_TestPL Expert Advisor an, und ich habe "_Fast" zu seinem Namen hinzugefügt. Bitte testen Sie es auch, da es sehr interessant ist, zu wissen, auf welchen Architekturen der Gewinn sein wird. Es besteht die Hoffnung, dass diese Forschungen dazu beitragen werden, ME-Compiler zu verbessern.

Dateien:
 

Ich habe zusätzliche Daten von ForumsmitgliedFast528 erhalten(derzeit nicht in der Lage, im Forum zu posten)

Ryzen 2700 nicht übertaktet, Speicher 3333

Tree_Brut_TestPL 8 Kerne 16 Threads

2019.08.13 10:24:14.813 Tester optimization finished, total passes 11
2019.08.13 10:24:14.824 Statistics optimization done in 1 minutes 56 seconds
2019.08.13 10:24:14.824 Statistics shortest pass 0:01:13.337, longest pass 0:01:20.403, average pass 0:01:15.853
2019.08.13 10:24:14.824 Statistics 8731 frames (3.43 Mb total, 412 bytes per frame) received
2019.08.13 10:24:14.824 Statistics local 11 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2019.08.13 10:24:14.864 Tester 11 new records saved to cache file 'tester\cache\Tree_Brut_TestPL.30.E415F787BBBCE67C438526613B41CB4F.opt'

Tree_Brut_TestPL_F8 Kerne 16 Threads

2019.08.13 10:24:14.824 Statistics 8731 frames (3.43 Mb total, 412 bytes per frame) received
2019.08.13 10:31:30.562 Tester optimization finished, total passes 11
2019.08.13 10:31:30.573 Statistics optimization done in 2 minutes 32 seconds
2019.08.13 10:31:30.573 Statistics shortest pass 0:02:12.689, longest pass 0:02:31.529, average pass 0:02:21.243
2019.08.13 10:31:30.573 Statistics 11000 frames (4.32 Mb total, 412 bytes per frame) received
2019.08.13 10:31:30.573 Statistics local 11 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2019.08.13 10:31:30.626 Tester 11 new records saved to cache file 'tester\cache\Tree_Brut_TestPL_F.30.E415F787BBBCE67C438526613B41CB4F.opt'

Dieser Test ist nicht vollständig, da wir aufgrund der Aktivierung von 8 Agenten eine Variante mit 8 Kernen und 8 Threads benötigen und auch 16 Durchläufe in der Registerkarte "Optimierung" angegeben werden sollten - entsprechend der Anzahl der Threads (Start 0, Step 1, Stop 15).

Wenn Sie den Test erneut ausführen, vergessen Sie nicht, den Cache zu löschen, der sich unter ..\Tester\cache

Ich werde die Zwischenergebnisse als 8 Kerne / 8 Agenten in die Tabelle eintragen.

 

Leider kann ich den ersten Beitrag nicht mehr bearbeiten, deshalb poste ich die Bewertung hier

 

Hier ist das Ergebnis des fx8320e Frequenz 4GHz, Speicher 1866 2 Kanäle, Rang 2.

Baum_Brut_TestPL_F_Fast

4 Agenten 8 Pässe

DF      0       13:27:26.728    Core 4  pass 6 returned result 1001000.00 in 0:00:28.342
HL      0       13:27:26.732    Core 1  pass 2 returned result 1001000.00 in 0:00:28.414
PE      0       13:27:26.844    Core 3  pass 4 returned result 1001000.00 in 0:00:28.476
PJ      0       13:27:26.936    Core 2  pass 0 returned result 1001000.00 in 0:00:28.619
QP      0       13:27:53.132    Core 4  pass 7 returned result 1001000.00 in 0:00:26.406
KI      0       13:27:53.219    Core 1  pass 3 returned result 1001000.00 in 0:00:26.489
MN      0       13:27:53.337    Core 3  pass 5 returned result 1001000.00 in 0:00:26.495
ND      0       13:27:53.571    Core 2  pass 1 returned result 1001000.00 in 0:00:26.637
OR      0       13:27:53.571    Tester  optimization finished, total passes 8
OF      0       13:27:53.582    Statistics      optimization done in 0 minutes 57 seconds
PI      0       13:27:53.582    Statistics      shortest pass 0:00:26.406, longest pass 0:00:28.619, average pass 0:00:27.484
NM      0       13:27:53.582    Statistics      8000 frames (3.14 Mb total, 412 bytes per frame) received
HL      0       13:27:53.582    Statistics      local 8 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

8 Agenten 8 Pässe

DI      0       13:30:59.789    Core 2  pass 1 returned result 1001000.00 in 0:00:33.072
KN      0       13:30:59.887    Core 1  pass 0 returned result 1001000.00 in 0:00:33.177
PD      0       13:31:00.132    Core 3  pass 2 returned result 1001000.00 in 0:00:33.422
PM      0       13:31:00.245    Core 4  pass 3 returned result 1001000.00 in 0:00:33.531
RR      0       13:31:00.590    Core 8  pass 7 returned result 1001000.00 in 0:00:32.922
IH      0       13:31:00.615    Core 5  pass 4 returned result 1001000.00 in 0:00:33.197
CQ      0       13:31:00.981    Core 6  pass 5 returned result 1001000.00 in 0:00:33.506
GF      0       13:31:01.111    Core 7  pass 6 returned result 1001000.00 in 0:00:33.614
CS      0       13:31:01.111    Tester  optimization finished, total passes 8
KG      0       13:31:01.122    Statistics      optimization done in 0 minutes 35 seconds
RN      0       13:31:01.122    Statistics      shortest pass 0:00:32.922, longest pass 0:00:33.614, average pass 0:00:33.305
NO      0       13:31:01.122    Statistics      8000 frames (3.14 Mb total, 412 bytes per frame) received
HJ      0       13:31:01.122    Statistics      local 8 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

8 Agenten fast 2x schneller

 
Maxim Romanov:

Hier ist das Ergebnis des fx8320e Frequenz 4GHz, Speicher 1866 2 Kanäle, Rang 2.

Baum_Brut_TestPL_F_Fast

4 Agenten 8 Pässe

8 Agenten 8 Pässe

8 Agenten fast 2x schneller

Danke, aber fügen Sie die Ergebnisse von Tree_Brut_TestPL_F und Tree_Brut_TestPL zur Auswertung hinzu!

Grund der Beschwerde: