Speicher pro Compute Shader Thread

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

Speicher pro Compute Shader Thread

Beitrag von Raphael »

Hallo,

weiß jemand, wie oder wo ich herausfinden kann, wie viel lokaler Speicher pro OpenGL Compute Shader Thread zur Verfügung steht? Also der, in welchen z.B. globale Arrays des Shaders gespeichert werden? Ich habe schon ziemlich viel gesucht, habe aber wenn nur Informationen zum Shared Speicher für die gesamte Workgroup gefunden. Also testweise funktionieren 200 vec4 auf meiner Geforce 860m unter Linux, jedoch wäre ein Wert aus der Spezifikation oder einer OpenGL Abfrage besser.

Hier steht unten, dass der Shared Speicher 32KB als Minimum in OpenGL haben muss: https://www.opengl.org/wiki/Compute_Shader ("The OpenGL-required minimum is 32KB.")
Bei DirectCompute scheint es, dass der lokale Speicher vom Shared abgezwackt wird: https://msdn.microsoft.com/en-us/librar ... 85%29.aspx ("A single thread is limited to a 256 byte region of groupshared memory for writing.")
Benutzeravatar
Krishty
Establishment
Beiträge: 8237
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Speicher pro Compute Shader Thread

Beitrag von Krishty »

Raphael hat geschrieben:Bei DirectCompute scheint es, dass der lokale Speicher vom Shared abgezwackt wird: https://msdn.microsoft.com/en-us/librar ... 85%29.aspx ("A single thread is limited to a 256 byte region of groupshared memory for writing.")
Nur auf D3D 10.1-Hardware, also steinalt. Für D3D 11 gilt das Limit nicht.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

Re: Speicher pro Compute Shader Thread

Beitrag von Raphael »

Aber es muss doch eines geben? :D Ich möchte in meiner Masterarbeit halt ungerne schreiben: Hab es mal probiert, ging halt...
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Speicher pro Compute Shader Thread

Beitrag von dot »

Nun, wenn du dir mal z.B. CUDA anschaust, wirst du feststellen, dass praktisch alle NVIDIA GPUs (bis auf ein paar vorsteinzeitliche) mindestens 64k Shared Memory haben. Ich hab grad keine Zeit nachzuschaun, bin mir aber sicher, dass es in OpenGL und insbesondere OpenCL eine Möglichkeit gibt, das abzufragen... ;)
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

Re: Speicher pro Compute Shader Thread

Beitrag von Raphael »

Shared wird bei OpenGL auch mit mindestens 32KB angegeben. Mich interessiert aber der lokale, pro Thread. Wird der einfach von der gesamten Workgroup in den gemeinsamen Shared gelagert? Sprich Shared Speicher / Anzahl der Threads = Lokaler Speicher?
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Speicher pro Compute Shader Thread

Beitrag von dot »

Local Memory liegt zumindest auf NVIDIA effektiv im global Memory; jeder Thread hat auf allen Architekturen da bis zu 512 KB [1]. Die Frage ist, wieso das für dich wichtig ist, deinen local Memory Verbrauch willst du normalerweise so winzig wie nur irgendwie möglich halten...

[1] http://docs.nvidia.com/cuda/cuda-c-prog ... ifications, Table 13
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

Re: Speicher pro Compute Shader Thread

Beitrag von Raphael »

Für meine Arbeit "Visualisierung der Oberflächendynamik von Molekühlen" muss ich zuerst die Oberflächenatome extrahieren. Dazu setze ich einen Schnitt-Test-Algorithmus [1] auf der GPU um, wobei jedes Atom mit seinen Nachbarn geschnitten wird. Nun kann ein Atom teilweise über 100 Nachbarn besitzen und ich möchte bei einem Schnitt die Ebene als auch den Mittelpunkt des Schnittkreises speichern. Das funktioniert auch, nur würde ich gerne die maximale Anzahl der Nachbarn angeben, welche mit der Berechnung möglich sind.

[1] http://www.sciencedirect.com/science/ar ... 9313001866
Antworten