Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Mär 28, 2024 15:59

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Nov 17, 2015 10:44 
Offline
DGL Member

Registriert: Di Jun 10, 2014 06:59
Beiträge: 17
Programmiersprache: Delphi XE6
Hallo zusammen,

ich beschäftige mich schon seit einiger Zeit mit einem recht komischen Phänomen:

Ich erzeuge in meinem Programm recht umfangreiche Modelle, welche ich in einer Display-Liste ablege (ich weiß es gibt Alternativen, das ist aber nicht das Thema!). Nun habe ich hier drei Rechner, die sich beim Anzeigen der Listen - in Bezug auf Geschwindigkeit - recht unterschiedlich verhalten:

1. Rechner 1: Intel i7 - GTX 970 -> erste Ausgabe < 100ms
2. Rechner 2: Intel i7M - integrierte Grafik -> erste Ausgabe < 100ms
3. Rechner 3: Intel i7 - Quadro K3100M -> erste Ausgabe > 2500ms

Das Problem ist der 3. Rechner. Diese sollte eigentlich recht performant (wesentlich schneller als der Rechner 2 mit 2 Kernen und interner Grafikkarte) sein. Eigentlich sind alle Komponenten im dritten Rechner schneller (Prozessor, Speicher, Grafikkarte). Dennoch ist dieser Rechner am langsamsten. Ich habe schon alle möglichen Einstellungen gestestet - ohne Erfolg. Die Übertragung des Models erfolgt durch

glNewList(FOpenGLDrawingList, GL_COMPILE);
(* .... *)
glEndList;
glCallList(FOpenGLDrawingList);

Das erste glCallList benötigt hierbei extrem viel Zeit bei Maschine 3. Weitere Aufrufe von glCallList sind bei allen drei Maschinen sehr schnell...

Hat irgendwer eine Idee, warum der dritte Rechner so unendlich kangsam ist?

Bin für alle Ideen dankbar.

Alex


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Nov 17, 2015 16:31 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
Hat irgendwer eine Idee, warum der dritte Rechner so unendlich kangsam ist?

Grafik-Treiber aktuell ?

Wie sieht es mit einem Benchmark aus, ist er dort auch am langsamsten ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Nov 17, 2015 17:41 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2067
Programmiersprache: C++
Quadro und damit verbundene Optimierungen?
Wäre zumindest eine Überlegung. Sie haben ja spezielle Treiber für den CAD/CAM-Bereich.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 19, 2015 09:59 
Offline
DGL Member

Registriert: Di Jun 10, 2014 06:59
Beiträge: 17
Programmiersprache: Delphi XE6
Danke für Eure Ideen. Ich habe mittlerweile etwas im Bios rumgespielt und bin nun in der Lage festzulegen welche Grafikkarte für die Ausgabe verwendet wird. Solange ich die NVIDIA-Karte verwende ist alles sehr langsam. Wenn ich auf die Intel HD4600 gehe, dann ist alles rasend schnell. Eigentlich habe ich die NVIDIA ja zur Beschleunigung und nicht als Bremse im Rechner...

Und ja: Die Treiber sind aktuell.

Es ist wie gesagt das erste kompilieren der Display-Liste was auf der NVIDIA viel Zeit in Anspruch nimmt. Die sollte das doch eigentlich schneller machen als die Intel HD. Oder? Irgendwie verstehe ich das ganze nicht...

Alex


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 19, 2015 10:19 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 587
Programmiersprache: C++
Das "kompilieren" der Displayliste erfolgt ja auf der CPU. Deshalb ist es ziemlich egal, wie schnell die Grafikkarte ist. Die benötigte Zeit hängt davon ab, wie effizient der Treiber mit CPU-Ressourcen umgeht.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 19, 2015 10:28 
Offline
DGL Member

Registriert: Di Jun 10, 2014 06:59
Beiträge: 17
Programmiersprache: Delphi XE6
Ich dachte, dass das kompilieren der Liste auf der Grafikkarte stattfindet...

Wo könnte also der Flaschenhals sein?

Alex


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 19, 2015 13:16 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
BigAl hat geschrieben:
Ich dachte, dass das kompilieren der Liste auf der Grafikkarte stattfindet...

Wo könnte also der Flaschenhals sein?

Alex


Genau da liegt das Problem bei OpenGL : Wann genau die Grafikkarte was macht ist nicht wirklich vorhersehbar. Kann durchaus sein dass die Quadro das Kompilieren der Displayliste verzögert und erst beim ersten Aufruf (also glCallLists) macht. Selbiges kann dir auch mit Shadern passieren. Und das Erzeugen und Optimieren der Displayliste (wird ja intern vermutlich zerlegt) dauern kann hakts beim ersten Mal.

Mit ein Grund warum es neue APIs gibt.

Evlt. hilft aber auch die Nutzung eines OpenGL-Debuggers. NVidia hat da einiges dass direkt in Visual Studio integriert ist, und RenderDoc ist auch sehr schick.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 19, 2015 15:25 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Mhh klingt eher nach Fehlern innerhalb der DisplayListe. Ich kann mich zum Beispiel gut daran erinnern das Compile extrem lange dauert wenn du zum Beispiel glBegin / glEnd nicht richtig setzt.... Naja egal... wenn du Flush / Finish nach Endlist machst sollte er auf jeden Fall erst einmal alles durchladen.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Nov 22, 2015 11:59 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
NSight ist, was Sascha meinte.
Das solltest du wirklich mal mit den NV Karten austesten.

Quadro Karten sind ein ding für sich.
Ich hatte auch schon eine im Rechner und die war in vielen dingen sau langsam im vergleich zu ner normalen Graka aber in einigen Sachen sind die um einiges schneller.
Code:
  1. glHint(GL_LINE_SMOOTH_HINT);

Die Workstation Karten können z.B. Anti-Aliasing Linien per Hardware, das läuft bei normalen Karten entweder garnicht mehr oder über multi sampling.
Workstation Karten hatten immer sehr Viel Speicher 2-8GB, was aber die normalen Karten mitlerweile auch bekommen.
Workstation Karten waren früher wesentlich schneller als normale, heute sind in sachen Füllrate die normalen Karten schneller.
Die Treiber von Workstation Karten sind zumindestens bei NV auf bestimmte Programme ausgelegt(z.B. SolidWorks).
Eine GTX980TI ist z.B. langsamer als die Quadro(glaub ne M4000 war es), wenn man in SolidWorks an komplexeren Zeichnungen arbeitet.
Mehr spezielle Hardware für z.B. die neue OIT und NV Command List, Indirekte Listen zugriffe, sowie Listen sortierung wurde beschleunigt(spezielle Schaltkreise im Chip).
In Spielen schneiden aber Workstation Karten schlechter ab als normale Karten.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 22 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.050s | 17 Queries | GZIP : On ]