Diskussion zum Artikel "Neuronale Netze leicht gemacht (Teil 5): Parallele Berechnungen mit OpenCL" - Seite 2

 
Aleksey Vyazmikin:

Das ist also keine Neuigkeit - es gab 1 Kern, und er war ausgelastet, und jetzt gibt es zwei Kerne, die Belastung ist um die Hälfte gesunken.... Höchstwahrscheinlich sind die Änderungen bedeutender und der Vergleich ist nicht korrekt.

Um die Gründe für die Beschleunigung zu verstehen, reicht es nicht aus, die Anzahl der Kerne zu betrachten, sondern man sollte sich auch die Architektur der Berechnungen ansehen.
 
Dmitriy Gizlyk:
Um die Gründe für die Beschleunigung zu verstehen, reicht es nicht aus, die Anzahl der Kerne zu betrachten, sondern man muss sich auch die Architektur des Rechners ansehen.

Das sehe ich auch so. Ich habe nicht verstanden, warum 4 Vektoren anstelle von 2 parallelisiert wurden?

 
Aleksey Vyazmikin:

Das ist also keine Neuigkeit - es gab 1 Kern, und er war ausgelastet, und jetzt gibt es zwei Kerne, die Belastung ist um die Hälfte gesunken.... Wahrscheinlich sind die Änderungen deutlicher und der Vergleich ist nicht korrekt.

Die Speicherzuweisung kann effizienter sein, ein Kern erhält die Daten vollständig auf einmal, ohne Umverteilung. Es stellt sich heraus, dass dies schneller ist. Aber für einige Aufgaben kann es langsamer sein, wenn die Kernelberechnungen ressourcenintensiv sind.

 
Aleksey Vyazmikin:

Einverstanden. Hier habe ich nicht verstanden, warum dann 4 Vektoren parallelisiert wurden und nicht 2?

Es wurden 2 Vektoren mit je 4 Elementen parallelisiert. Vektoren inp und Gewicht. Sie haben jeweils vier Elemente eingesetzt und sie dann mit Punkt multipliziert.

dot(inp,weight) -> i1*w1+i2*w2+i3*w3+i4*w4
 
Dmitriy Gizlyk

Dimitri, danke für die Antwort.

 
Maxim Dmitrievsky:

Effizientere Speicherzuweisung kann sein, der Kernel bekommt die Daten in vollem Umfang auf einmal, ohne Neuzuweisung. Es stellt sich heraus, dass dies schneller ist. Aber für einige Aufgaben kann es langsamer sein, wenn die Kernel-Berechnungen ressourcenintensiv sind.

Vielleicht.

 
Vielen Dank für die Reihe von Artikeln, interessant und informativ. Aber wie das Netzwerk zu trainieren, etwas, das ich nicht bekommen. Ich habe es bereits mehrere Male auf dem EURUSD-Chart ausgeführt. Die Vorhersage wächst und beginnt dann zu fallen. Hat jemand das Netzwerk bereits trainiert?
 
Dmitriy Gizlyk:

Zwei Vektoren mit je 4 Elementen werden parallelisiert. Vektoren inp (Ausgangsdaten) und Gewicht (Gewichte). Jeweils vier Elemente wurden in die Vektoren geschrieben und dann in dot multipliziert

D.h. durch die sequentielle Multiplikation kommt es zu einer Erhöhung? Immerhin werden zwei Vektoren parallelisiert, wobei in jedem Vektor 4 (bedingte) Multiplikationen sequentiell durchgeführt werden?

 
Ein sehr interessanter Artikel, und das Thema der neuronalen Netze ist heutzutage ein heißes Eisen. Vielen Dank an den Autor für die gute Arbeit.
 
Aleksey Vyazmikin:

D.h. durch die sequentielle Multiplikation kommt es zu einer Erhöhung? Immerhin werden zwei Vektoren parallelisiert, wobei in jedem Vektor 4 (bedingte) Multiplikationen sequentiell durchgeführt werden?

Die Verwendung von Vektoroperationen ermöglicht es Ihnen, das Produkt von 4 Elementen parallel statt sequentiell durchzuführen. Sehen Sie sich das Video https://ru.coursera.org/lecture/parallelnoye-programmirovaniye/4-1-chto-takoie-viektorizatsiia-i-zachiem-ona-nuzhna-f8lh3 an. Es geht zwar um OpenMP, aber die Bedeutung ist dieselbe.

4.1. Что такое векторизация и зачем она нужна - Векторные вычисления с помощью OpenMP 4.0 | Coursera
4.1. Что такое векторизация и зачем она нужна - Векторные вычисления с помощью OpenMP 4.0 | Coursera
  • ru.coursera.org
Video created by Национальный исследовательский Томский государственный университет for the course "Введение в параллельное программирование с использованием OpenMP и MPI". Приветствуем вас на четвертой неделе курса! На этой недели мы разберемся ...