OpenCl und die dazugehörigen Werkzeuge. Bewertungen und Eindrücke.

 
In Anbetracht der Tatsache, dass Metaquotes seine Meinung über die Anwendbarkeit von GPU in der Analyse und im Handel geändert hat (es wäre genauer zu sagen, dass GPU-Software endlich das Niveau erreicht hat, das für den Einsatz in kommerziellen Programmen erforderlich ist), schlage ich vor, dass wir heute bereit sind, OpenCL in der echten Programmierung zu testen.
Falls Sie diese Nachricht verpasst haben, weil Sie im Forum geblättert haben, anstatt zu handeln, zu modellieren und zu programmieren, finden Sie hier zum Beispiel eine Stellungnahme von Metacquotes:

.............................................................................................................................................................................

GPU-Erfahrungen in der Finanzmodellierung

http://habrahabr.ru/blogs/hi/131983/

MetaQuotes 7. November 2011, 19:27#

Die OpenCL-Unterstützung wird bald in MQL5 enthalten sein. Sie wird es ermöglichen, die Leistung von Berechnungen in einem verteilten Netzwerk um mehrere Größenordnungen zu steigern.

.............................................................................................................................................................................

Was ist also OpenCL?

Es handelt sich um einen Software-Ansatz, ein Interpreter-Programm, das Ihr Programm parallel auf der Grafikkarte, d. h. auf der GPU, ausführt.

Was bringt sie?

Erstens bietet es Skalierbarkeit, d. h. eine einfache und kostengünstige Skalierung der verfügbaren Rechenleistung. Es ist eine Sache, ein Dutzend Server zu kaufen, zu installieren und zu warten, und eine ganz andere, 3 oder 4 zusätzliche Grafikkarten zu kaufen und anzuschließen. Das Ergebnis ist dasselbe in Bezug auf die Geschwindigkeit, aber in Bezug auf den Geld- und Zeitaufwand - dutzendfach.

Zweitens ermöglicht sie die Anwendung anspruchsvoller mathematischer Methoden, die früher aufgrund der Schwäche von Computern unzugänglich waren.

Drittens: Wenn Metaquotes nicht nur für die Nutzer, sondern auch für die eingebauten Tester auf OpenCL aufsetzen könnten, ergäben sich zwei seltsam gegensätzliche Perspektiven:

(a) In der Hälfte der Fälle wird CloudNetwork für die individuelle Optimierung von einfachen Expertenberatern überhaupt nicht benötigt.

(b) Die Nutzung von CloudNetwork eröffnet so weitreichende Perspektiven für die Optimierung durch Experten, die Modellierung und Analyse sowie die Anwendung komplexer mathematischer Methoden, die zuvor schlichtweg undenkbar waren.

Wo soll man anfangen?

Hier ist ein Software-SDK (mit CPU-Treiber) für Entwickler von AMD (angeblich für Vista-Win7, funktioniert aber auch unter WinXP. Ohne Videobeschleunigerkarte funktionieren sie erfolgreich auf der CPU, und zwar auf jedem SSE-Prozessor von Intel, nicht nur AMD):

http://developer.amd.com/sdks/AMDAPPSDK/downloads/Pages/default.aspx

Ältere Versionen des AMD-ATI SDK (funktioniert unter WinXP):

http://developer.amd.com/sdks/AMDAPPSDK/downloads/pages/AMDAPPSDKDownloadArchive.aspx

Nvidias Version des Interpreterprogramms wird mit jedem modernen Treiber geliefert und die Entwicklungsumgebung ist im CUDA Tools-SDK-Paket enthalten:

http://developer.nvidia.com/opencl

Intels Version des SDK (funktioniert nur unter Vista-Win7):

http://software.intel.com/en-us/articles/download-intel-opencl-sdk/

Hinweis: Um mit MetaTrader 4 oder 5 zu arbeiten, benötigen wir OpenCL Version 1.1 oder höher, aber nicht 1.0, da erst ab Version 1.1 sichere Threading-Unterstützung aktiviert ist. In MetaTrader 4 oder 5 wird das Threading dynamisch und für jeden Expert Advisor separat erstellt und zerstört. Um die GPU von Expert Advisors zu nutzen, die auf verschiedenen Währungspaaren laufen, benötigen Sie daher ein sicheres Threading.

In der Praxis bedeutet dies, dass Sie nur ATI Catalyst-Treiber ab Version 10.10 oder Nvidia-Treiber ab Version 280.00 verwenden. AMD-ATI-Treiber werden mit jeder Version besser und schneller, während nVidia-Treiber schlechter und langsamer werden. OpenCL von Nvidia Version 1.1 ist 30-40% langsamer als seine Version 1.0, d.h. es ist wirklich 2 mal langsamer und überhaupt nicht schneller als OpenCL 1.1 von AMD.

Wie prüfe ich auf OpenCL?

AIDA von FinalWire zeigt die GPU-Parameter und die OpenCL-Version im Abschnitt Anzeige an.

Wie kann ich die Geschwindigkeit von OpenCL testen?

LuxMark:

http://www.luxrender.net/wiki/LuxMark

Ungefähre Vergleichsergebnisse für verschiedene CPUs und GPUs:

http://www.luxrender.net/wiki/LuxMark_Results

Manchmal ist es notwendig, die Datei render.cfg manuell zu bearbeiten, um sie vom CPU-Native CPU-OpenCL-Test zu trennen.

Geschwindigkeit für Top-End Phenom II X6 CPU = rund 2300, das gleiche Programm, aber nur in Monster von 8pc Nvidia GTX580 gibt 70000, d.h. 30 mal mehr. Selbst ein solcher Monstersatz von 8 GTX580 kostet 30 Mal weniger an Primärkosten und verbraucht etwa 40 Mal weniger Strom als ein Satz von 30 Servern mit doppelter Fließkommazahl. Außerdem ist es sehr aufwändig, die Instanzen von Programmen auf 30 Servern zu synchronisieren, während bei OpenCL alles auf einem Computer mit einer einzigen Instanz des Programms läuft.

Weitere Ergebnisse von LuxMark:

http://www.xtremesystems.org/forums/showthread.php?267385-LuxMark-The-OpenCL-CPU-amp-GPU-benchmark

Mehr Software zum Testen von OpenCL:

gpcbenchmarkocl

Es wurde von der Website der chinesischen Autoren entfernt (wahrscheinlich handelt es sich um ein strategisches Produkt), aber Sie können es im Internet finden. (Einige Teile des Bildverarbeitungsbereichs funktionieren nur mit DirectX Version 10 und höher, d.h. sie funktionieren nicht mit WinXP).

Es gibt noch eine weitere Besonderheit von OpenCL: Die Programmierung erfordert, dass man von den üblichen mathematischen Abstraktionen abweicht, die in der ordentlichen Programmierung verwendet werden, und sich mit der Optimierung des Programms für die Hardware beschäftigt , was nicht richtig ist.

Ein Artikel über OpenCL beschreibt ungefähre Schwierigkeiten bei der Implementierung:

http://habrahabr.ru/blogs/hi/125398/

Ein einführender Videokurs über OpenCL von AMD:

http://developer.amd.com/documentation/videos/OpenCLTechnicalOverviewVideoSeries/Pages/default.aspx

Im Allgemeinen ist JEDER Computer, auf dem SSE läuft, gut genug für die Entwicklung und das Debugging von OpenCL-Programmen, solange die AMD-Programmsuite verwendet wird. Weiterhin kann jedes GTS450....GTX580 System von Nvidia empfohlen werden, da es auch CUDA hat, aber für wirklich schnelle Arbeit sind AMD-ATI Karten und Programme besser geeignet - sie sind besser skalierbar und stabiler in Multi-GPU Konfigurationen.

OpenCL-Multi-GPU-Hardware ist ein Thema für einen separaten Thread.

 
AlexEro:

OpenCL Multi-GPU-Hardware ist ein Thema für einen separaten Thread.

Übrigens ist das Thema recht ausführlich untersucht worden, und es gibt vergleichbare Merkmale der Karten. Von Minern der berüchtigten Kryptowährung Bitcoin (zunächst) und anderer Kryptowährungen (später) untersucht.

Der Vergleich ist natürlich aufgabenspezifisch, aber grob orientiert an Konfiguration und Budget einfach.

Und ja, greifen Sie jetzt nicht zu leistungsstarken b\u-Grafikkarten :)

 
TheXpert:

Übrigens ist das Thema recht ausführlich untersucht worden, und es gibt vergleichbare Merkmale der Karten. Von Minern der berüchtigten Kryptowährung Bitcoin (zunächst) und anderer Kryptowährungen (später) untersucht.

Der Vergleich ist natürlich aufgabenspezifisch, aber grob orientiert an Konfiguration und Budget einfach.

Und ja, besorgen Sie sich jetzt keine leistungsstarken b\u-Grafikkarten :)

Ich wollte den Leser nur nicht mit diesen Ungetümen erschrecken und von wichtigeren Dingen ablenken - der Programmierung. Ich stimme zwar zu, aber das Endergebnis, d. h. die zu erwartende tatsächliche Skalierungsgeschwindigkeit und wie sie aussieht, sollte gezeigt werden. Die Auswahl ist groß - von der Bierkiste bis zum Regal:


 

OpenCL ist heute die Zukunft.

Frage: Wann ungefähr wird die Unterstützung in MT5 implementiert?

Ich bin mir mehr als 100 % sicher, dass OpenCL der Standard für die Programmierung paralleler Arbeitslasten werden wird.

 
Microsoft hat C++ AMP eingeführt
Geschrieben von shapovalovts am Thu, 06/16/2011 - 10:07 am
Auf dem AMD Fusion 11 Developer Summit kündigte Herb Sutter eine neue Technologie für die Entwicklung heterogener C++-Anwendungen an: C++ Accelerated Massive Parallelism (AMP). Wie die Microsoft-Entwickler erklären, wird diese Technologie es ermöglichen, die Möglichkeiten der parallelen Codeausführung sowohl auf der CPU als auch auf der GPU zu nutzen.

Die wichtigsten Konkurrenten von AMP werden OpenCL und CUDA sein. Sutter wies auch auf das Potenzial der Verwendung von C++ AMP im Cloud Computing hin.

https://www.mql5.com/ru/forum/132431

 
Es ist also wieder der kleine Bruder des proprietären AMP).
 
Es sieht so aus, als ob AMP eine harte Zeit haben wird. OpenCL ist bereits in vollem Einsatz.
 
Mangel an Ideen ist schwer zu ersetzen mit der Rechenleistung, um schnell durchzugehen oder Blase sortieren den nächsten Unsinn aus der "intellektuellen Perversion" über die Anführungszeichen )))
 
artikul:
Mangel an Ideen ist schwer zu ersetzen mit der Rechenleistung, um schnell durchzugehen oder Blase sortieren den nächsten Unsinn aus der "intellektuellen Perversion" über die Anführungszeichen )))

Ich denke, wenn man eine solche Macht mit lohnenden Ideen auflädt, könnte man unseren Planeten dazu bringen, sich in umgekehrter Richtung um die Sonne zu drehen. ))
 

articul, Sie müssen nicht so kategorisch sein. Die Welt steht nicht still. Moderne Monstergrafikkarten sollten nach Ihrer Logik auch als Folge von Ideenlosigkeit in der Bildverarbeitung erkannt werden?

Ich selbst mag es manchmal, schneller zu sein - nur um nicht auf das Debuggen des Codes warten zu müssen, um die umfangreichen Berechnungen zu beenden, die alle in meinem init() (etwa 10 Sekunden) enthalten sind. Und alle anderen Berechnungen, die "on the fly" stattfinden, laufen wirklich sehr schnell, so dass Multithreading hier nicht notwendig ist.

 
artikul:
Mangel an Ideen ist schwer zu ersetzen mit der Rechenleistung, um schnell durchzugehen oder Blase sortieren den nächsten Unsinn aus der "intellektuellen Perversion" über die Anführungszeichen )))

Und hier bereiten sich die Genossinnen und Genossen aktiv darauf vor, den 6. Punkt in einer besonders perversen Form aufzugreifen. =)

Grund der Beschwerde: