Herzlichen Dank!
Ich habe schon lange auf einen Artikel über OpenCL gewartet.
Ich werde ihn jetzt lesen. :)
Ich werde ihn lesen. :)
Sie brauchen ihn wahrscheinlich nicht allzu sehr. Ihr solltet das alles schon wissen.
Im nächsten Artikel wird es ernst, es wird viel über Hardware geben.
Was ist zu früh zu aktivieren, bitte klären. Wenn OpenCL - es ist bereits aktiviert. Alle Experimente wurden direkt in MetaEditor 5 durchgeführt.
P.S. Die Hauptsache ist, dass der Programmierer durch OCL tatsächlich Zugang zu etwas hat, zu dem er vorher keinen Zugang hatte. Diese sind:
- (S)SSEx, das in Visual Studio eingebunden werden kann, aber ohne OCL nicht in MQL5 eingebunden werden kann (dlls nicht mitgerechnet).
- Zugang zu Berechnungen auf diskreten GPUs, was zusätzlich beschleunigt, was auf einem einzelnen Kern in MQL5 ohne dll-ähnliche Tricks erledigt werden kann.
.
1. Sie brauchen es wahrscheinlich nicht allzu sehr. Sie sollten bereits wissen, wie Sie all diese Dinge tun können.
2. Im nächsten Artikel wird es ernst, es wird eine Menge über Hardware geben.
1. Ich brauche es.
2. Großartig!
Die Frage bleibt für mich unklar: Warum nennen Sie die Ausführung des OCL-Programms auf der CPU "Emulation"? Die CPU ist nur eines der Geräte, neben der GPU, mit denen das OCL-Programm arbeiten kann, wenn es einen entsprechenden Treiber für das Gerät gibt und alle Prozessorkerne geladen sind.
- www.mql5.com
Weil Emulation genau das ist: langsame Emulation. Bei CPUs (dank Intel gibt es einen intelligenten Compiler, der nach Vektorisierung sucht, wenn man sie nicht explizit verbietet) erfolgt die Parallelisierung durch (S)SSEx-Befehle und vielleicht Abhängigkeitsanalysen, während GPUs viel mehr Möglichkeiten in Bezug auf SIMD-Engines haben. Außerdem gibt es breitere Busse und schnelleren Speicher - insbesondere lokalen und privaten Speicher.
Zur Hardware. Die wichtigsten Empfehlungen gelten für AMD-Hardware. Aber viele von ihnen gelten mit einer leicht abgewandelten Terminologie auch für NVidia-Hardware.
Weil es sich um eine Emulation handelt, eine langsame Emulation. Bei CPUs (dank Intel gibt es einen intelligenten Compiler, der nach Vektorisierung sucht, wenn man sie nicht ausdrücklich verbietet) erfolgt die Parallelisierung durch (S)SSEx-Befehle und möglicherweise durch die Analyse von Abhängigkeiten, während GPUs viel mehr Möglichkeiten in Verbindung mit SIMD-Engines haben. Außerdem gibt es breitere Busse und schnelleren Speicher - insbesondere lokalen und privaten Speicher.
Zur Hardware. Die wichtigsten Empfehlungen gelten für AMD-Hardware. Aber viele von ihnen gelten mit einer leicht modifizierten Terminologie auch für NVidia-Hardware.
Siehe - es gibt keine Erwähnung von OCL für GPUs und Emulationsmodus für andere Geräte. OpenCL ist eine universelle Programmiersprache zur Organisation paralleler Berechnungen auf allen Geräten, die mehr als einen Rechenkern haben und OCL unterstützen. Es handelt sich nicht um CUDA oder ATI Stream, die speziell für GPUs entwickelt wurden.
Außerdem sind Parallelisierung und OCL-Berechnungen auf CPUs in einigen Fällen sogar schneller als auf GPUs. Jetzt mache ich es zur Pflicht, in den Einstellungen meiner Programme ein Gerät auszuwählen, denn die Geschwindigkeit der Berechnungen hängt direkt von der Menge der verarbeiteten Daten und der "Schwere" der Berechnungen ab (hängt auch von den Eingabeeinstellungen ab) - manchmal ist es auf der GPU schneller, manchmal auf der CPU.
Siehe - es gibt keine Erwähnung von OCL für GPUs und Emulationsmodus für andere Geräte. OpenCL ist eine universelle Programmiersprache zur Organisation paralleler Berechnungen auf allen Geräten, die mehr als einen Rechenkern haben und OCL unterstützen. Es handelt sich nicht um CUDA oder ATI Stream, die für GPUs konzipiert sind.
Vielleicht haben Sie in mancher Hinsicht Recht, da die CPU als Gerät betrachtet wird. Aber einige Daten deuten darauf hin, dass es sich eher um eine Emulation handelt. Zum Beispiel gibt es solche Vermutungen, dass das Schreiben eines Puffers in den Gerätespeicher CLBufferWrite() im Falle der CPU nur "für einen Tick" erfolgt, weil die CPU nur einen globalen Speicher hat. Allerdings hat die CPU auch einen Cache, aber ich weiß nicht, was mit diesem passiert und wie er funktioniert.
Außerdem sind in einigen Fällen Parallelisierung und OCL-Berechnungen auf der CPU sogar schneller als auf der GPU.
Ja, es gibt solche Fälle, in denen z. B. das Skalarprodukt von dot( ) auf der CPU schneller ist. Aber ich würde nicht darüber spekulieren, was schneller wäre, wenn der Vergleich zwischen einem Core 2 Duo und einer leistungsfähigeren Grafikkarte als der im Link genannten stattfinden würde. Vor allem, wenn man sich um die Optimierung des Algorithmus kümmert. Es ist ein Unterschied zwischen CPU und GPU, egal was du sagst.
Was ist früh zu aktivieren, bitte klären. Wenn OpenCL - es ist bereits aktiviert. Alle Experimente wurden direkt in MetaEditor 5 durchgeführt.
P.S. Die Hauptsache ist, dass der Programmierer durch OCL tatsächlich Zugang zu etwas hat, zu dem er vorher keinen Zugang hatte. Diese sind:
- (S)SSEx, das in Visual Studio eingebunden werden kann, aber ohne OCL nicht in MQL5 eingebunden werden kann (dlls nicht mitgerechnet).
- Zugang zu Berechnungen auf diskreten GPUs, was zusätzlich beschleunigt, was auf einem einzelnen Kern in MQL5 ohne irgendwelche dll-artigen Tricks getan werden kann.
.
Ich meinte die Anpassung für Cloud Computing, wenn man sich vorstellt, dass jeder Prozessorkern von vielen "hungrigen Bienen" von Grafikbeschleunigern unterstützt wird, die mit vielen Computern vernetzt sind, wird es wirklich cool und schnell sein.
Die Hälfte der Arbeit ist getan, jetzt geht es nur noch darum, es für die Cloud einzuschalten....
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel OpenCL: Die Brücke zu parallelen Welten :
Ende Januar 2012 kündigte die Softwareentwicklungsfirma, die hinter der Entwicklung von MetaTrader 5 steht, die native Unterstützung von OpenCL in MQL5 an. Dieser Beitrag legt anhand eines anschaulichen Beispiels die Programmiergrundsätze für OpenCL in der MQL5-Umgebung dar und liefert einige Beispiele für die "naive" Optimierung des Programms, um die Betriebsgeschwindigkeit zu erhöhen.
Der Schreibbefehl (Host -> Device) initialisiert ein Speicherobjekt nach Daten und platziert das Objekt gleichzeitig im Device-Speicher.
Denken Sie daran, dass die Gültigkeit von Speicherobjekten, die im Device bereitgestellt werden, nicht in den Open-CL-Spezifikationen festgelegt ist, da sie vom Hersteller der dem Device entsprechenden Hardware abhängig ist. Seien Sie deshalb vorsichtig, wenn Sie Speicherobjekte erstellen.
Nachdem die Speicherobjekte initialisiert und in Devices geschrieben wurden, sieht das Bild etwa so aus:
Abb. 7. Ergebnis der Initialisierung der OpenCL-Speicherobjekte
Autor: Sceptic Philozoff