OpenCL: interne Implementierungstests in MQL5 - Seite 39

 
casinonsk: Die zweite ist immer noch bei 0 Last.

Und der dritte? Oder gibt es keine?

QE 0 ParallelTester_00-01x__1 (EURUSD,H1) 13:23:02 Count inticators = 16; Count history bars = 144000; Count pass = 480000

EF 0 ParallelTester_00-01x__1 (EURUSD,H1) 13:23:02 Ergebnis auf Gpu MachResult==0.0 bei 0 Durchgang

Ich habe den Eindruck, dass der Test irgendwie schief gelaufen ist. Oh, und setzen Sie Count pass auf einen niedrigeren Wert, 1280 ist genug.

Und wo sind die vergleichenden Ergebnisse CPU vs. GPU?

 
joo:


Bei CountPass 262144 stürzt der Grafikkartentreiber bewusstlos ab. Sie steigt jedoch sofort wieder an.

Ich habe durch die Methode von Professor Tychkov herausgefunden, dass CountPass nicht mehr als 6628025 mit CountBars 10 sein kann, sonst weigert sich der MQL-Compiler zu kompilieren und erzeugt einen Fehler:

inds' - Abschnitt der globalen Variablen ist zu groß ParallelTester_00-01x.mq5 86 7

Wenn CountBars kleiner ist, überspringt der Compiler noch schlimmere Werte von CountPas.

2012.03.17 20:40:36     ParallelTester_00-01 x (EURUSD,H1)       Соunt inticators = 16; Count history bars = 10; Count pass = 6628025
2012.03.17 20:40:36     ParallelTester_00-01 x (EURUSD,H1)       GPU time = 717 ms

Ach, du liebe Zeit!

Woher weiß der MQL-Compiler, dass einfach nicht genug Speicher auf der GPU (oder nicht auf der GPU???) vorhanden ist? - Es sieht so aus, als ob der Grafikkartentreiber aufgrund des fehlenden Speichers abstürzt.


an Wladimir:

Und warum sollte ich jeder Fliege das gleiche Array geben (der Speicherverbrauch ist direkt proportional zur Anzahl der CountPass)? - Lassen Sie sie Daten aus einem gemeinsamen Array nehmen.

 
joo:

an Wladimir:

Warum sollte ich jeder Fliege dasselbe Array zuweisen (der Speicherverbrauch steht in direktem Verhältnis zur Anzahl der CountPass)? - Lassen Sie sie Daten aus einem gemeinsamen Array nehmen.

Sie haben bereits eine gemeinsame Palette von Preisen und Indikatoren.

Und in dem Array, dessen Länge CountPass ist, gibt es Nicht-Gitter (ein optimierter Parameter). Sie ist für jedes Netz individuell.

--

... Aber ich mag die Art, wie Sie denken. :)

 
joo:

Ich habe durch die Methode von Professor Tychkov herausgefunden, dass CountPass nicht größer als 6628025 mit CountBars von 10 sein kann, sonst weigert sich der MQL-Compiler zu kompilieren und erzeugt einen Fehler:

inds' - Abschnitt der globalen Variablen ist zu groß ParallelTester_00-01x.mq5 86 7

Wenn CountBars kleiner ist, überspringt der Compiler noch schlimmere Werte von CountPas.

Ach, du liebe Zeit!

Woher weiß der MQL-Compiler, dass einfach nicht genug Speicher auf der GPU (oder nicht auf der GPU???) vorhanden ist? - Es sieht so aus, als würde der Grafikkartentreiber wegen des fehlenden Speichers abstürzen.

А! Es gibt also ein elementares Plus in meinem Code (Zeile 82).

////////////float nets[sizeof(NETs)];   // Вот так было. В корне неправильно.
////////////float inds[sizeof(Inds)];  

////////////float nets[sizeof(NETs)/sizeof(float)];  // Вот так будет видно в чём была ошибка.
////////////float inds[sizeof(Inds)/sizeof(float)];  // И в принципе будет работать, хотя лучше...
// ...Вот так - правильно и понятно откуда ноги.
float nets[CountPass*CountInd];
float inds[CountInd*CountBars];  

Reparieren Sie es und erhalten Sie einen fast vierfachen "Speicherschub" .....nasharoo...!!! :)))))))))))))

// In solchen Momenten fühle ich mich wie der Weihnachtsmann... ;)

 
MetaDriver:

// In Zeiten wie diesen fühle ich mich wie der Weihnachtsmann... ;)

// Wenn du der Weihnachtsmann bist, wer bin dann ich?... ;)
 
Ich habe mir das englischsprachige Forum der fünf angesehen. Es gibt einen ähnlichen Thread, aber die Aktivität und das Interesse sind nicht vergleichbar mit dem russischsprachigen Forum.
 
Mathemat:

Und der dritte? Oder gibt es keine?

Es scheint, als ob der Test irgendwie schief gelaufen ist. Und setzen Sie Count pass auf einen kleineren Wert, 1280 reicht aus.

Und wo sind die vergleichenden Ergebnisse zu CPU und GPU?

CL 0 ParallelTester_00-01x__1 (EURUSD,H1) 00:02:09 OpenCL init OK!
IH 0 ParallelTester_00-01x__1 (EURUSD,H1) 00:02:09 GPU-Zeit = 187 ms
FN 0 ParallelTester_00-01x__1 (EURUSD,H1) 00:02:09 Count inticators = 16; Count history bars = 144000; Count pass = 1280
CL 0 ParallelTester_00-01x__1 (EURUSD,H1) 00:02:09 Ergebnis auf Gpu MachResult==0.92493 bei 1190 pass
 

Siemüssen eine MQL-Funktion haben, die die Temperatur der Grafikkarte zurückgibt. Andernfalls ist das ein guter Weg, um sich auszubrennen. Nicht auf Ihre, sondern auf die des Kunden.

// Wenn es keine MQL-Funktion gibt, müssen Sie eine DLL verwenden, was nicht gut ist - der Markt ist abgeschnitten und andere Unannehmlichkeiten.

 
MetaDriver:

Sie müssen eine MQL-Funktion haben, die die Temperatur der Grafikkarte zurückgibt. Andernfalls ist das ein guter Weg, um sich auszubrennen. Nicht auf Ihrer eigenen, sondern auf der Seite des Kunden.
Es sollte auch die Grenztemperatur zurückgeben und die Berechnungen selbst verlangsamen, wenn es sich der Grenztemperatur nähert. Es gibt verschiedene Grafikkarten und unterschiedliche Wärmeableitungen.
 
MetaDriver:

Siemüssen eine MQL-Funktion haben, die die Temperatur der Grafikkarte zurückgibt. Andernfalls ist das ein guter Weg, um sich auszubrennen. Nicht für sich selbst, sondern für den Kunden.

// Wenn es keine MQL-Funktion gibt, müssen wir eine DLL verwenden, was nicht gut ist - der Markt ist abgeschnitten und andere Unannehmlichkeiten.

Computerspiele kümmern sich nicht um die GPU-Temperatur und belasten sie bis zum Anschlag, und nichts passiert - Grafikkarten funktionieren. Und kein Spieler würde auf die Idee kommen, den Spielehersteller zu bitten, die FPS selbst zu verlangsamen, um die GPU nicht zu verwöhnen. Bei Gamern ist die Analogie direkt - wir brauchen Geschwindigkeit, und um die Temperatur sollte man sich bei Bedarf zusätzlich kümmern (zusätzliches Kühlsystem).

Dann brauchen Sie auch MQL-Funktion, die CPU-Temperatur zurückgibt. Andernfalls wird der Prozessor durchgebrannt.


FPS, wenn es machbar ist - warum nicht? - Es würde natürlich nicht schaden.