OpenCL: interne Implementierungstests in MQL5 - Seite 69

 

Guten Tag zusammen.

Ein Ratschlag zu diesem sehr interessanten Thema:

1. Gibt es schon EAs für den Handel, die OpenCL für Berechnungen nutzen?

(vor mehr als einem Jahr wurde die Unterstützung angekündigt und wir haben alle zusammen die Leistung an einem Testskript ausprobiert, aber es ist viel Zeit vergangen und das Thema wurde still...).

2. Wenn ich mehrere Grafikkarten in meinem System installiert habe, werden dann alle für die Berechnungen verwendet oder nur eine von ihnen?
 
vittt: 1. Gibt es bereits Trading EAs, die OpenCL für Berechnungen verwenden?

Wahrscheinlich existieren, aber kaum in kodobaz. Es gibt nur wenige Enthusiasten, und nicht alle tun es.

OpenCL ist vorteilhaft, wenn es eine erhebliche Beschleunigung der Berechnungen ermöglicht, was für den Handel entscheidend ist. Es in den Algorithmus zu packen, nur um "shoblo" zu machen oder die Grafikkarte zu belasten, ist nicht sehr sinnvoll.

Imho lassen sich die seriösesten Ergebnisse mit intensiven, gut parallelisierbaren Berechnungen oder für Designer neuronaler Netze erzielen. Das sollte man sie vielleicht fragen.

Ich persönlich habe zum Beispiel eine Richtung, die michinteressiert, aber OpenCL wird dort kaum gebraucht, da es kaum von Nutzen wäre (zu viele Zufallszugriffsoperationen im globalen Speicher, die nur der Teufel zu parallelisieren weiß). Ich bin noch nicht verzweifelt und habe noch nicht alle vernünftigen Möglichkeiten ausprobiert - aber es wird definitiv nicht im freien Zugang sein.

2. Wenn Sie mehr als eine Grafikkarte im System installiert haben, werden dann alle für die Berechnungen verwendet oder nur eine von ihnen?

Das Unternehmen sagte etwas über Probleme mit mehreren Karten oder sogar doppelköpfigen Karten. Ich weiß nicht, ob sie gelöst sind.

 

Hallo.

Ich führe Massenberechnungen in MetaTrader5 durch, um ein Problem zu lösen (Modellierung eines Pokerspiels). Ich schreibe in Mcl5, weil ich ein Nerd bin und nur diese Sprache beherrsche. In meinem Fall sind Leistungsfragen sehr wichtig.

Ich verstehe also, dass Aufgaben, bei denen jeder aufeinanderfolgende Berechnungsschritt nicht an die Ergebnisse der vorangegangenen Schritte gebunden ist, parallelisiert werden können. Gut! Ich habe gerade eine solche Aufgabe.

Aber wie kann ich es parallelisieren? Wenn mein Algorithmus mit Strukturen (struct) arbeitet, deren Methoden

- z.B. eine Textdatei von einer Festplatte öffnen, lesen, Informationen in Strukturfelder einfügen, die Textdatei schließen

- und andere Methoden enthalten viele Standardfunktionen, z.B. rand(), ArrayResize(), usw.

OpenCl ist, soweit ich weiß, eine Sprache ähnlich wie C++. Wie auch immer, meine Frage ist, wie kann ich Berechnungen im Allgemeinen parallelisieren?

 
Stasikusssss:

Hallo.

Ich führe Massenberechnungen in MetaTrader5 durch, um ein Problem zu lösen (Modellierung eines Pokerspiels). Ich schreibe in Mcl5, weil ich ein Nerd bin und nur diese Sprache beherrsche. In meinem Fall sind Leistungsfragen sehr wichtig.

Ich verstehe also, dass Aufgaben, bei denen jeder aufeinanderfolgende Berechnungsschritt nicht an die Ergebnisse der vorangegangenen Schritte gebunden ist, parallelisiert werden können. Gut! Ich habe gerade eine solche Aufgabe.

Aber wie kann ich es parallelisieren? Wenn mein Algorithmus mit Strukturen (struct) arbeitet, deren Methoden

- z.B. eine Textdatei von einer Festplatte öffnen, lesen, Informationen in Strukturfelder einfügen, die Textdatei schließen

- und andere Methoden enthalten viele Standardfunktionen, z.B. rand(), ArrayResize(), usw.

OpenCl ist, soweit ich weiß, eine Sprache ähnlich wie C++. Wie auch immer, meine Frage ist: Wie kann ich Berechnungen im Allgemeinen parallelisieren?

Google ist die Hilfe.

Auf eine solche Frage werden Sie in diesem Forum keine Antwort erhalten.

Aus einer einfachen Kombination von zwei Gründen:

Anfänger programmieren überhaupt nicht in OpenCL (und beschäftigen sich überhaupt nicht mit Parallelität), da sie es nicht verstehen können.

2 Die erfahrenen Programmierer wollen sich nicht mit Ihnen anlegen, weil sie (Ihre Frage) ein gründliches Studium Ihrer Qualifikation erfordert, um sie in einer für Sie verständlichen Sprache zu beantworten, und Ihnen dann eine lange Erklärung Ihrer Antwort geben.

Respektieren Sie daher die Zeitressourcen erfahrener Programmierer und befassen Sie sich selbst mit den Grundlagen, aber wenn Sie es herausfinden und spezifische Fragen zur Sprache (OpenCL) haben, haben Sie bessere Chancen auf ein sinnvolles Gespräch.

Быстрое погружение в MQL5
Быстрое погружение в MQL5
  • 2012.08.02
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы решили изучить язык программирования торговых стратегий MQL5, но ничего о нем не знаете? Мы постарались взглянуть на MQL5 и терминал MetaTrader 5 глазами новичка и написали эту небольшую вводную статью. Из неё вы сможете получить краткое представление о возможностях самого языка, а также несколько полезных советов по работе с редактором MetaEditor 5 и самим терминалом.
 

könnten Sie antworten, dass es möglich ist, zu parallelisieren

nur in reinem C, nur die einfachsten arithmetischen Operationen

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - Документация по MQL5
 

OpenCL 2.0

OpenCL 2.0 ist die jüngste bedeutende Weiterentwicklung des OpenCL-Standards, die die plattformübergreifende Programmierung weiter vereinfachen und gleichzeitig die Beschleunigung einer Vielzahl von Algorithmen und Programmiermustern ermöglichen soll. Als Grundlage für diese erweiterten Fähigkeiten definiert OpenCL 2.0 ein verbessertes Ausführungsmodell und eine Teilmenge der Speichermodelle von C11 und C++11 sowie Synchronisation und atomare Operationen.

  • einen Kommentar im OpenCL 2.0-Feedback-Thread in den Khronos-Foren abgeben - gut für allgemeines Feedback und Fragen
  • einen Bug im Khronos Bugzilla System unter OpenCL 2.0 einreichen - gut für detaillierte Korrekturen und Fehlerfunde in der Spezifikation.
Official OpenCL 2.0 Feedback thread
Official OpenCL 2.0 Feedback thread
  • www.khronos.org
The Khronos Group promotes the deployment and development of open standard APIs to enable authoring and playback of dynamic media on a wide variety of platforms and embedded devices. Current APIs are OpenGL ES, OpenML, OpenMAX, OpenSL ES, and Collada.
 
tol64:

OpenCL 2.0 ist die letzte bedeutende Weiterentwicklung des OpenCL-Standards,.............

Worauf wollen Sie damit hinaus?
 
MetaDriver:
Worauf wollen Sie hinaus?

Ich habe diese Nachricht gesehen und beschlossen, sie hier zu veröffentlichen. Es ist interessant, sich damit zu befassen, aber ich finde noch nicht die Zeit dazu. Hier ist die gleiche Nachricht auf Russisch:


OpenCL 2.0-Spezifikationangenommen

Die Khronos Group hat die Ratifizierung und Verfügbarkeit der endgültigen Version der OpenCL 2.0-Spezifikation bekannt gegeben. Laut den Entwicklern stellt die Veröffentlichung von OpenCL 2.0 einen bedeutenden Meilenstein in der Entwicklung eines quelloffenen, frei verwendbaren Standards dar, der die plattformübergreifende parallele Programmierung vereinfacht.

Die neue Version verbessert das Ausführungsmodell und die Speichermodell-Teilmengen von C11 und C++11, Synchronisation und atomare Operationen. Es heißt, dass die neue Version von OpenCL eine viel breitere Palette von Algorithmen und Programmiermustern ermöglicht. Die neue Version berücksichtigt die Wünsche von Softwareentwicklern, die OpenCL verwenden. Die Spezifikationen sind bereits auf der Khronos-Website verfügbar.

Zu den Verbesserungen und neuen Funktionen von OpenCL 2.0 gehören: gemeinsam genutzter virtueller Speicher, verschachtelte Parallelität, gemeinsam genutzter Adressraum, bessere Bildverarbeitung, einschließlich sRGB-Unterstützung. Darüber hinaus heben die Entwickler atomare C11-Operationen, In-Memory-FIFO-Stack-Pipelines und installierbare Treibererweiterungen für Android hervor.

Принята спецификация OpenCL 2.0
  • www.ixbt.com
Принята спецификация OpenCL 2.0 Открытый, бесплатный для использования стандарт OpenCL 2.0 упрощает кроссплатформенное параллельное программирование
 
tol64:

Ich habe diese Nachricht gesehen und beschlossen, sie hier zu veröffentlichen. Es ist interessant, sich damit zu befassen, aber ich finde noch nicht die Zeit dazu. Hier ist die gleiche Nachricht auf Russisch:


OpenCL 2.0-Spezifikationangenommen

Die Khronos Group hat die Ratifizierung und Verfügbarkeit der endgültigen Version der OpenCL 2.0-Spezifikation bekannt gegeben. Laut den Entwicklern stellt die Veröffentlichung von OpenCL 2.0 einen bedeutenden Meilenstein in der Entwicklung eines quelloffenen, frei verwendbaren Standards dar, der die plattformübergreifende parallele Programmierung vereinfacht.

Die neue Version verbessert das Ausführungsmodell und die Speichermodell-Teilmengen von C11 und C++11, Synchronisation und atomare Operationen. Es heißt, dass die neue Version von OpenCL eine viel breitere Palette von Algorithmen und Programmiermustern ermöglicht. Die neue Version berücksichtigt die Wünsche von Softwareentwicklern, die OpenCL verwenden. Die Spezifikationen sind bereits auf der Khronos-Website verfügbar.

Zu den Verbesserungen und neuen Funktionen von OpenCL 2.0 gehören: gemeinsam genutzter virtueller Speicher, verschachtelte Parallelität, gemeinsam genutzter Adressraum, bessere Bildverarbeitung, einschließlich sRGB-Unterstützung. Darüber hinaus heben die Entwickler atomare C11-Operationen, In-Memory-FIFO-Stack-Pipelines und installierbare Treibererweiterungen für Android hervor.

Nun, das ist verständlich, aber was soll man damit machen, es in C#/C++ ablegen?
 
MetaDriver:
Was soll ich damit machen? Soll ich es in C#/C++ ablegen?

Vielleicht kann Renat sehen, was man daraus lernen kann. Es ist durchaus möglich, dass die neue Spezifikation auch in MQL5 eine bessere Leistung bringt, nicht wahr?

Was C#/C++ betrifft, so können wir es notfalls auch wegwerfen. Die Hauptsache ist, dass man die größtmögliche Leistung erzielt. ;)