Gibt es einen Vorteil für die Verwendung mehrerer globaler Arbeitsgruppen statt nur einer einzigen Arbeitsgruppe für Compute-Shader in OpenGL? Ich muss Aufrufe für ein großes Bild synchronisieren, damit globale Arbeitsgruppen nicht funktionieren. Ich habe mich gefragt, warum man nicht eine einzige lokale Arbeitsgruppe für die ganze Arbeit verwenden kann.OpenGL: Gibt es einen Vorteil für die Verwendung mehrerer globaler Arbeitsgruppen für Compute Shader
OpenGL: Gibt es einen Vorteil für die Verwendung mehrerer globaler Arbeitsgruppen für Compute Shader
Antwort
Der Vorteil mehrerer Arbeitsgruppen ist der größere Platz.
Eine Arbeitsgruppe hat eine maximale Größe und auch keine besonders große. GL 4.5 erfordert nur, dass GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS
mindestens 1024 Aufrufe innerhalb einer Arbeitsgruppe sein wird. Einige Implementierungen unterstützen 1536, aber keine höher als 1792.
Der Grund für die Einschränkung ist die Speicherung.
Jeder Aufruf hat seinen eigenen lokalen Speicher. Um einen barrier
-Aufruf zu implementieren, muss das System in der Lage sein, diese Daten aus der Recheneinheit zu speichern und einige neue Daten zu laden. Wenn Sie Millionen von Aufrufen innerhalb einer einzigen Arbeitsgruppe hätten, würde dies eine große Menge an Daten erfordern. Während Sie mit dem aktuellen Design nur genügend Speicher benötigen, um einige tausend Aufrufe ausführen zu können.
Sie müssen Ihre Algorithmen so entwerfen, dass sie innerhalb dieser Einschränkung arbeiten. diese eine Sache, die GPU macht schwer.
- 1. OpenGL Compute Shader Synchronisation zwischen den Gruppen
- 2. OpenGL mischt Farben für GL_TEXTURE_3D in Compute Shader
- 3. Gibt es einen Vorteil für dieses Makro?
- 4. Erhalten Sie maximale Arbeitsgruppengröße für Compute Shader?
- 5. Sample Depth Buffer im OpenGL Compute Shader
- 6. Wiederverwendung bindBufferBase und OpenGL compute Shader
- 7. Gibt es einen Vorteil für die Verwendung von Py_DECREF anstelle von Py_XDECREF für Python C-Erweiterungen?
- 8. Schutz globaler Variable bei Verwendung mehrerer Threads
- 9. Gibt es einen Vorteil für die Verwendung einer Return-Anweisung, die nichts zurückgibt?
- 10. OpenGL ES 1.x Shader
- 11. OpenGL ES und OpenGL kompatible Shader
- 12. Warum gibt OpenGL + GLSL Shader nichts aus?
- 13. Gibt es einen Vorteil für die Verwendung des HtmlHelper in MVC?
- 14. Gibt es einen Vorteil für die Verwendung von "will-change" im HTML5-Videoelement?
- 15. Gibt es einen Vorteil für die Verwendung von SecureString in ASP.NET?
- 16. Gibt es in einem Userscript einen Vorteil für die Verwendung von querySelector() vs jQuery $()?
- 17. Gibt es einen Vorteil für die Verwendung von "1" anstelle von "2"?
- 18. Gibt es einen Vorteil für die Verwendung sehr spezifischer Selektoren in CSS?
- 19. Gibt es für die Website-Entwicklung einen Vorteil bei der Verwendung von privaten vs öffentlichen Repositories?
- 20. Gibt es einen Vorteil/Nachteil für die Verwendung von Funktionsdelegaten über Lambdas in einer Sammlung?
- 21. OpenGL: Fragment vs Vertex Shader für Farbverläufe?
- 22. OpenGL Fragment Shader Return Festfarbe für Textur
- 23. Unterstützt OpenGL ES Umgebungs-Shader?
- 24. Gibt es einen Vorteil bei der Verwendung einer Python-Klasse?
- 25. Gibt es einen echten Vorteil der Verwendung von J #?
- 26. Gekachelte verzögerte Schattierung ohne Compute-Shader
- 27. Gibt es einen Vorteil für einen Webdienst oder einen direkten Zugriff auf die Datenbank (Oracle)?
- 28. Unity Compute Shader Synchronisation
- 29. Compute Shader Shared Memory enthält Artefakte
- 30. Gibt es einen Vorteil für die Verwendung von Prototypen anstatt Eigenschaften für das Objekt selbst zu deklarieren?
Ich werde nur auf ein paar Bilder schreiben, also habe ich mich gefragt, ob es einen Leistungseinfluss geben würde, wenn ich nur eine globale Arbeitsgruppe verwende und die Pixel mit Schleifen in diesem einzelnen Aufruf bedeckt. Da es sich bei Bildern um globalen Speicher handelt, ist dies kein offensichtliches Problem. – Jens
Vielleicht hätte ich diesen Teil der Frage besser formulieren sollen. – Jens
@Jens: Das ist eine * ganz andere * Frage. Es ist keine Synchronisation erforderlich, um Aufrufe an * verschiedene Pixel * eines Bildes zu schreiben. –