Ich habe ein OpenGL-Programm, das Shader verwendet (OpenGL Version 3.3, GLSL Version 1.5). Ich habe gehört, dass die Shader tatsächlich auf der CPU laufen, es sei denn, Sie sagen ausdrücklich, dass sie auf der GPU laufen sollen. (Natürlich ist der ganze Grund, warum ich Shader benutze, das Rendern zu beschleunigen, indem ich die Berechnungen in der GPU statt in der CPU durchführe. Das ist also nicht das Verhalten, das ich will.) Stimmt das? Wenn ja, wie kommt der Shader auf die GPU?Shader auf der GPU ausführen
Antwort
Ich bin nicht sicher, wo Sie das gehört haben, aber vorausgesetzt, Sie haben halbwegs brauchbare Treiber vom Grafikhersteller, werden Ihre Shader auf der GPU laufen, ohne dass Sie etwas tun, sondern sie laden und benutzen.
Ich bin ziemlich sicher, dass der Treiber immer versucht, jeden Shader auf GPU nicht auf der CPU laufen zu lassen. Aber nicht alle modernen Grafikkarten unterstützen den vollen Funktionsumfang von Shader-Operationen. Zum Beispiel kann die OpenGL 4.0-Erweiterung GL_ARB_gpu_shader_fp64, wie ich weiß, in Teilunterstützung verfügbar sein. Daher muss der Treiber einige Operationen im Softwaremodus auf der CPU emulieren. Wie bei Erweiterungen können Sie Ihre Karte überprüfen, indem Sie glGetString mit Parameter GL_EXTENSIONS aufrufen.
- 1. Einfacher GL Fragment Shader verhält sich seltsamerweise auf neueren GPU
- 2. GLSL-GPU-Skinning mit Drittanbieter-Shader
- 3. Messzeit auf der GPU
- 4. Three.js: Rendering-Canvas skalieren (GPU-hungriger Fragment-Shader)
- 5. Wie können Desktop-Browser WebGL-Shader ausführen?
- 6. C#: Ausführen von Operationen auf GPU, nicht CPU (Pi berechnen)
- 7. Wie PHP aktivieren Python-Skript auf GPU ausführen?
- 8. Compute Shader schreibe auf Textur
- 9. OpenGL GPU Speicherbereinigung, erforderlich?
- 10. GPU-Programmierung auf der Xbox 360
- 11. Graph-Algorithmen auf GPU
- 12. Koordinatentransformationen auf GPU verschieben
- 13. Verrechnung auf die GPU
- 14. Skalierbarkeitsanalyse auf GPU
- 15. OpenGL-Farbindex in Frag Shader?
- 16. Webgl Textur interlaced Flimmern auf dedizierten GPU
- 17. CUDA | OpenCV | GPU-Modul | Wie man auf ein Element auf der cv :: gpu :: GpuMat-Matrix zugreift
- 18. Wie wird die Speicherbegrenzung der GPU für die hochauflösende Bildverarbeitung auf der GPU gehandhabt?
- 19. Wie verwende ich MATLAB-Code auf der GPU mit CUDA?
- 20. GPU liest von CPU oder CPU schreibt auf die GPU?
- 21. Große Matrix-Multiplikation auf GPU
- 22. atomicAdd() für doppelt auf GPU
- 23. Summen Bild Intensitäten in GPU
- 24. CUDA Kernel Scheduler auf GPU
- 25. Ressourcen für die GPU-beschleunigte Berechnung (GPGPU) auf dem iPhone?
- 26. Wähle GPU während der Ausführung in Theano
- 27. Variablen auf CPU, Training/Gradienten auf GPU
- 28. Was ist der Unterschied zwischen OpenCL und OpenGLs Compute Shader?
- 29. Verwenden von Shader für Berechnungen
- 30. Wie kommuniziert OpenGL mit der GPU?
+1 Als ein Hinweis, obwohl einige Funktionen auf sogar modernen Karten OpenGL dazu bringen, den Shader im Software-Modus auszuwerten, was zu einer ziemlich schrecklichen Leistung führt ('GL_LINE_SMOOTH' ist ein klassisches Beispiel). –
Der OpenGL-Stack von Mac OS X kann auf die CPU zurückgreifen (wenn etwas völlig daneben geht). – Stringer
Unterstützt OSX [gleichmäßige Unterstützung] (http://developer.apple.com/graphicsimaging/opengl/capabilities/) 3.3? – genpfault