/ / Initial Performance Hit mit lokalem Speicher - Opencl

Initial Performance Hit mit lokalem Speicher - Opencl

Gibt es einen anfänglichen Leistungseinbruch bei der Verwendung?lokaler Speicher? Ich konvertierte meinen bestehenden Kernel, der globalen Speicher verwendet, und bei erfolgreicher Konvertierung sah ich die Leistung verschlechtert. Offensichtlich denken Sie vielleicht, dass ich es nicht richtig benutzt habe, und ich stimme vielleicht sogar zu und finde einige weitere Optimierungen. Aber das ist nicht die Frage hier.

Als Seitenexperiment habe ich denselben Kernel benutztVerwenden von globalem Speicher wie ohne Zugriff auf lokalen Speicher. und dann wurde alles, was ich tat, in einem Kernel-Parameter mit lokalem Speicher, etwa 1024 ganze Zahlen, übergeben. und hier sah ich, dass diese Kernel-Ausführung fast doppelt so lange dauerte. Also verursacht die Zuweisung von lokalem Speicher selbst einen anfänglichen Leistungseinbruch? Hat jemand das gesehen und vielleicht eine Erklärung?

[UPDATE] Vielen Dank für Ihre Kommentare und Antworten. Ich habe versucht, einen separaten Testkern zu schreiben, um zu sehen, ob dieses Verhalten wiederholbar ist. Es war nicht. Ich habe einen Beitrag gefunden Ist privater Speicher langsamer als lokaler Speicher? das erwähnt übermäßigen Gebrauch des privaten Gedächtnissesführen zu einem Überlauf auf den globalen Speicher und können daher die Ausführung des Kernels verlangsamen. Es scheint, dass dies für nVidia-Karten spezifisch sein mag, ich frage mich, was auf AMD-Karten passiert. Könnte es sein, dass die Zuweisung von lokalem Speicher plötzlich dazu führte, dass der private Speicher überschwappte, um Platz für lokalen Speicher zu schaffen? Ich schaue jetzt aus diesem Blickwinkel auf meine Implementierung, es sei denn jemand von euch schlägt etwas anderes vor. Gibt es eine Dokumentation oder ein Buch mit einer solchen Erwähnung, die euch vielleicht bekannt ist?

Danke noch einmal.

Antworten:

0 für die Antwort № 1

Leistungseinbußen können durch Verwendung einer lokalen Arbeitsgruppe mit nicht optimaler Größe oder durch Synchronisierung von WI innerhalb von WG erzwungen werden.

Das Einlesen in den lokalen Speicher selbst führt nicht zu einem Leistungseinbruch - es hat dieselbe Geschwindigkeit wie das Einlesen in den privaten Speicher (beide auf dem Chip).

Überprüfen Sie außerdem, ob Ihre Daten in die lokale Speichergröße passen, da sie normalerweise klein ist.