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
Sehen Sie sich Ihren eigenen Code an: Und dann, in der letzten Zeile, dividieren Sie selbst 240 durch 18 (das sind die Einheiten für Ihre Karte).
Sie sind offensichtlich etwas verwirrt. Hier ist der umstrittene Artikel:
Schlussfolgerung: global=30 lokal=1
Und 240 Bytes sind genau dann, wenn Sie den Puffer erstellen.
Sie sind offensichtlich etwas verwirrt. Hier ist ein kontroverser Artikel:
Ausgabe: global=30 lokal=1
Und genau 240 Bytes bei der Erstellung des Puffers.
global_work_size[0]
Und local_work_size[0] = (uint) 240/18 = 13
P.S. Ja, Sie haben es richtig verstanden. Verzeihung. Ich war ein wenig verwirrt.
local_work_size[0] = (uint) 30/18 = 1. Und ich habe das Gleiche, da Einheiten=28.
Nochmals, Roffild:
Mathemat: Давай тупо прикинем. 18 задач, выполняемых одновременно на мухах GPU, - это максимум то, что можно сделать на 4-5 нитках CPU. А CPU на x86 эмуляции может организовать гораздо больше ниток. Во всяком случае, если это Intel. Мой бывший Pentium G840 (2 ядра) дал ускорение примерно в 70 раз - на двух unit'ах! Я уже не говорю о том, что вытворяет мой текущий... условно говоря, i7.
Eine gut parallelisierte Aufgabe (siehe die Skripte von MetaDriver aus dem ersten ocl-Thread) kann auf der GPU Geschwindigkeitssteigerungen von bis zu 1000 oder mehr erreichen (im Vergleich zur Ausführung mit einem Thread auf der CPU bei MQL5). Wenn Sie es nicht finden können - ich kann es Ihnen schicken, Sie können es auf Ihrer Karte testen.
Haben Sie den Puffer und seine Geschwindigkeit herausgefunden?
Verwenden Sie besser AMD CodeXL, um UNITS usw. herauszufinden - es hat schöne Leistungsdiagramme.
AMD CodeXL selbst ist fehlerhaft, aber ohne ihn ist es schwierig, irgendwelche Schlussfolgerungen zu ziehen.
Ich werde OpenCL erst verwenden, wenn der Tester mir erlaubt, die CPU zu verwenden, oder wenn ich eine Aufgabe habe, die länger als Number of_buffers * 0,353 msec dauert.
P.S.
Ich habe die Optimierung meines Codes abgeschlossen und die endgültige Variante besteht den Test in 33 Sekunden (320 Sekunden - vor der Optimierung, 55 Sekunden - "OpenCL-Stil").
Da gibt es nichts herauszufinden. Es ist klar, dass dies ein langsamer Vorgang ist. Fazit: Mehr Arbeit im Kernel (davon gibt es in Ihrem Code zu wenig).
Und kaufen Sie eine modernere Grafikkarte, es scheint damit besser geworden zu sein.
AMD CodeXL selbst ist fehlerhaft, aber es ist schwer, ohne ihn irgendwelche Schlüsse zu ziehen.
Das Dienstprogramm von Intel ist ebenfalls recht nützlich, allerdings für Intel-Steine. Nun, und um die offensichtlichsten Fehler im Kernel zu erkennen.
P.S. Ich habe schließlich die Optimierung meines Codes abgeschlossen und die endgültige Variante besteht den Test in 33 Sekunden (320 Sekunden - vor der Optimierung, 55 Sekunden - "OpenCL-Stil").
Es ist schon viel besser.
Heute musste ich ein Array mit 1 Bit in Zahlen erzeugen.
Gleichzeitig habe ich mit OpenCL geübt.
Ich poste den Code als Demonstration einer interessanten Methode zur Berechnung von global_work_size und local_work_size. Die Idee selbst stammt aus IntrotoOpenCL.pdf (ich habe ein Exemplar), aber ich habe sie abgeändert.