Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Herzlichen Dank!
Sind Ihre Berechnungen doppelt? Dann ist das Ergebnis besonders beeindruckend.Gutes Argument. An einer Stelle war es sogar float statt double:
Um sie zu verdoppeln, müssen wir sie korrigieren zu
Sie können auch die letzte Zeile loswerden (analog zum XRGB-Makro), indem Sie uchar4 statt uint für das *buf-Argument verwenden. Versuchen Sie es auf diese Weise:
Das ist wirklich beeindruckend! Fps ist 1,5 mal höher als bei Shadern.
Danke, der Code funktioniert, keine Leistungseinbußen, habe nur den Alphakanal in der letzten Zeile ans Ende verschoben:
Das ist wirklich beeindruckend! Fps ist 1,5 mal höher als bei Shadern.
Danke, der Code funktioniert, die Leistung wird nicht beeinträchtigt, nur in der letzten Zeile wurde der Alphakanal ans Ende verschoben:
Bei dieser Implementierung ist die Leistung stark von der Anzahl der Zentren (N) abhängig. Idealerweise sollten wir die Schleife im Kernel loswerden, aber in diesem Fall müssen wir S1 und S2 zu Ganzzahlen machen. Wir werden sehen müssen, wie groß die Streuung ihrer Werte ist, und vielleicht können wir sie mit etwas multiplizieren, ohne zu viel zu sündigen. Und dann ist es möglich, die Schleife in die dritte Dimension zu übertragen, was theoretisch zu einem Leistungsgewinn bei hohen Werten von N führt.
Ich bekomme 80-90 fps auf meiner HD 7950 auf einem Full-HD-Monitor bei N=128.
Bei dieser Implementierung ist die Leistung stark von der Anzahl der Zentren (N) abhängig. Es wäre gut, die Schleife im Kernel loszuwerden, aber dann müssten S1 und S2 ganzzahlig sein. Wir werden sehen müssen, wie groß die Streuung ihrer Werte ist, und vielleicht können wir sie mit etwas multiplizieren, ohne zu viel zu sündigen. Und dann ist es möglich, eine Schleife in die dritte Dimension zu übertragen, was theoretisch zu einem Leistungsgewinn bei hohen Werten von N führt.
Ich bekomme 80-90 fps auf meiner HD 7950 auf einem Full-HD-Monitor bei N=128.
Meine 750ti hat 11 fps. Ich habe die technischen Daten für die Karten gefunden:
Logischerweise kann der Wechsel zu Float die fps um den Faktor 4 bei amd und 32 bei nvidia erhöhen.
Ich habe eine Kopie der OCL-Version erstellt. Ich bin schockiert über das Ergebnis. Bei 1600 Zentren konnte die Vidia nicht mehr als 85% geladen werden.
Die Optimierung mit vorberechneten h hat keine Auswirkung, aber es bleibt dabei. Alle Berechnungen erfolgen in Float, ich sehe keinen Sinn darin, Double zu verwenden, da alle Funktionen ohnehin Float zurückgeben.
Einige Schlussfolgerungen.
1) Die Vorberechnung von h hatte keine Auswirkungen.
2) Ich habe keinen Unterschied bemerkt, als ich if loswerden wollte.
3) Es ist langsamer,
als es
Es scheint...
4) Kann die CPU nicht entlasten, d.h. Scalper Stacks etc. können vergessen werden.
Einige Schlussfolgerungen.
1) Die Vorberechnung von h hatte keine Auswirkungen.
2) Kein Unterschied beim Loswerden, wenn
3) Es ist langsamer,
als es
Es scheint...
4) Kann die CPU nicht entlasten, d.h. Scalper Stacks etc. können vergessen werden.
In MT5 können Scalper-Stacks problemlos in einem Thread ohne OCL laufen und die CPU nicht überlasten. Das heißt natürlich nicht, dass sie nicht gebraucht wird. Nur zu Ihrer Information.
Wenn Sie beim Bau eines Pfostens die Klasse CCanvas verwenden, ist die Arbeitsbelastung proportional zur Fläche des Pfostens. Das heißt, je größer das Fenster im Mull ist, desto größer ist die Belastung, weil die gesamte Leinwand neu gezeichnet wird und nicht nur einzelne, veränderte Teile. Werden die Becherzellen jedoch in unabhängige Elemente umgewandelt, können sie unabhängig vom Rest der Leinwandfläche aktualisiert werden, wodurch sich die Zeit für das Neuzeichnen und die damit verbundene Belastung des Prozessors um ein Vielfaches verringert.
Auf MT5 können Scalper-Stacks problemlos in einem Thread arbeiten, ohne OCL und ohne den Prozessor zu überlasten. Das heißt natürlich nicht, dass sie nicht gebraucht wird. Nur zu Ihrer Information.
Wenn Sie beim Bau eines Pfostens die Klasse CCanvas verwenden, ist die Arbeitsbelastung proportional zur Größe des Pfostens. Das heißt, je größer das Fenster im Mull ist, desto größer ist die Belastung, da die gesamte Leinwand neu gezeichnet wird und nicht nur einzelne, veränderte Teile. Werden die Becherzellen jedoch in unabhängige Elemente umgewandelt, können sie unabhängig vom Rest der Leinwandfläche aktualisiert werden, wodurch sich die Zeit für das Neuzeichnen und die damit verbundene Belastung des Prozessors um ein Vielfaches verringert.
Der vierte fragliche Punkt. Im Remnant3D-Beispiel wird die CPU kaum belastet.
Punkt 4 ist in Frage gestellt. Das Remnant3D-Beispiel belastet die CPU kaum.
Dies wurde bereits getestet. Die CPU auf dem MT5 wird bei normaler Dynamik des Canvas fast nicht belastet, wenn Sie einzelne Zellen, in denen sich der Wert geändert hat, neu zeichnen.
Im Gegenteil, wenn jeder eingehende Wert über die gesamte Leinwandfläche neu gezeichnet wird, wird der Prozessor stark belastet.
Der Unterschied liegt in der Anzahl der neu initialisierten Werte in der Pixelmatrix. Sie müssen einzelne Bereiche selektiv aktualisieren, und Sie werden keine Ladeprobleme haben.
Dies wurde bereits getestet. Die CPU auf dem MT5 wird bei normaler Dynamik des Canvas fast nicht belastet, wenn Sie einzelne Zellen, in denen sich der Wert geändert hat, neu zeichnen.
Im Gegenteil, wenn jeder eingehende Wert über die gesamte Leinwandfläche neu gezeichnet wird, wird der Prozessor stark belastet.
Der Unterschied liegt in der Anzahl der neu initialisierten Werte in der Pixelmatrix. Sie müssen einzelne Bereiche selektiv aktualisieren, und Sie werden keine Ladeprobleme haben.
Das ist das Besondere an Remnant3D: Es ist ein Vollbild-Canvas und belastet die CPU nicht.