Jammer-Thread

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.

Re: Jammer-Thread

Beitragvon BeRsErKeR » 22.06.2012, 11:37

Krishty hat geschrieben:
BeRsErKeR hat geschrieben:
Krishty hat geschrieben:
BeRsErKeR hat geschrieben:hab mich da teilweise an D orientiert, genau wie bei der Syntax von Arrays
Array-Syntax ist ein interessantes Thema … ich hasse C(++)-Arrays. Im Augenblick löse ich in meinen C++-Projekten alles über range-Strukturen, die auf Anfang und Ende von Feldern zeigen, und das fließt wie Butter – abgesehen von dem winzigen Detail, dass der Compiler es nicht ausreichend optimiert, weil es keine Wurzel in der Sprache selber hat; und dass mir bei String-Literalen immer die automatisch angehängte Null zum Verhängnis wird (for teh luv of gawd, WHY!). Ich muss mir auch unbedingt nochmal Gos Slices ansehen, falls ich irgendwann mal Zeit habe. Und dann wären da noch Strings, die ja auch ein Thema für sich sind (Rein in die Sprache oder nicht? Nur Literale? Nullterminiert oder nicht? …).


Klingt interessant. Kannst du mir da mal ein Beispiel zeigen? Zwecks range-Strukturen.
Sie arbeiten ziemlich genau wie .begin() und .end() in STL-Containern; mit Zeigern als Iteratoren. Eigentlich kannst du jedes Array im Programm durch einen STL-Container ersetzen und hast ziemlich genau diese Syntax, nur eine Million mal langsamer als wenn es direkt in der Sprache verankert wäre.(Nachtrag: Nein, idiotisch. Eine Range referenziert vorhandenen Speicher, während ein STL-Container ihn kopiert.)

Dann gibt es noch so Kunststückchen wie, dass man eine Range an beliebiger Stelle in zwei Teile zerlegen kann. Ein Parser würde z.B. die Range des verbliebenen Textes so lange hinter dem ersten Buchstaben teilen, bis nichts mehr übrig (der Text also geparst) ist. Bisher habe ich das aber nicht explizit gebraucht; schlicht den Anfang zu inkrementieren hat gereicht.

Der Clou ist nun, dass man out-of-bounds-Fehler einfach analyisieren kann, weil jeder Zeiger nur entweder an einer einzelnen Instanz oder aber an einer Range bestimmter Größe hängt.

Kein Beispieltext, weil mein Entwicklungssystem atm nicht am Netz hängt.


Wie kann ich mir dann einen gezielten Zugriff auf ein beliebiges Element im Array vorstellen?

So in etwa?

Code: Ansicht erweitern :: Alles auswählen
foo : int_array;
// fill array with values
bar : int(foo.begin() + 5); // Zugriff auf das 6. Element?
// normal: int bar = foo[5];


Oder muss ich dann sogar noch selbst durchiterieren?
Ohne Input kein Output.
Benutzeravatar
BeRsErKeR
 
Beiträge: 551
Registriert: 27.04.2002, 21:01

Re: Jammer-Thread

Beitragvon Krishty » 22.06.2012, 19:02

Seht ihr die rot umkringelten Einstellungen? Seht ihr die?

i_cant_even.png

Die sind auch ohne Debug Runtime aktiv. Sie kommen nur nicht zur Benutzerschnittstelle durch.

Wenn man an einem 8-Kern-i7 entwickelt, merkt man es nicht. Wenn man aber an einen drei Jahre alten Eee PC zurückgeht, entwickelt man wochenlang die abstrusesten Optimierungen, die alle mysteriöserweise nicht einmal ein Prozentchen Leistung bringen. Das System verbringt weiterhin 87 % der Ausführungszeit in Shader Validation und 5 % in Debug-Output-Funktionen, von denen man nie etwas zu Gesicht bekommt. Schaltet man die umkringelten Einstellungen ab, klettert die Einzelbildrate plötzlich von 7 auf 78, und zwei Wochen Fummelei waren quasi umsonst.

Ist natürlich mein Fehler, denn wenn sie mit der Retail Version keine Wirkung hätten, wären sie ausgegraut. Trotzdem eine Stelle, an der man sich das ganze System zerschießen kann. Plötzlich rendert nämlich auch Visual Studio 2010 seinen Text schneller und das Scrollen geht wieder absolut flüssig.

Ich habe noch nie so lange gebraucht, um einen Flaschenhals zu finden. Mein Programm verwaltet mittlerweile jeden Render-State selber, um auch die unscheinbarsten überflüssigen API-Aufrufe vorzeitig rauszufiltern und ist auf tausenden Zeilen für die Intel Atom-Pipeline optimiert … und das alles hatte nichts mit der 90-%igen Leistungseinbuße zu tun.
Sterne rendern (mit Demo) und viele kleine Optimierungen

state is the enemy
Benutzeravatar
Krishty
 
Beiträge: 3502
Registriert: 26.02.2009, 11:18

Re: Jammer-Thread

Beitragvon TDK » 22.06.2012, 22:38

Du arme Sau... :D

Und sowas kommt mir nicht mal unbekannt vor.

... :twisted:
TDK
 
Beiträge: 13
Registriert: 06.04.2012, 10:15

Re: Jammer-Thread

Beitragvon glassbear » 22.06.2012, 22:45

2.5 Jahre nach dem ersten iPad und es gibt endlich ernsthafte Konkurrenz. Von Microsoft. Mit Surface.

Schade, ich wuerde ja gerne Geld fuer ein Android-Tablet auf den Tisch legen. Doch es gibt einfach nix.
Ein Hoch auf uns Männer... Auf die Frau, die uns HAT ( oder hat, und nicht weiß, dass sie uns hat ) ...auf die Idiotinnen ... besser gesagt VOLLPFOSTINNEN ... die uns hatten und uns verloren haben ... und auf die GLÜCKLICHEN, die das Vergnügen & Glück haben werden uns kennenzulernen!
glassbear
Enrico
 
Beiträge: 293
Registriert: 08.04.2003, 17:09
Wohnort: San Diego
Alter Benutzername: Enrico_

Re: Jammer-Thread

Beitragvon eXile » 22.06.2012, 23:26

Ich habe gerade gemerkt, dass ich noch vergessen habe, 30 Vergleichsoperatoren zu schreiben (und nein, Templates helfen hier ausnahmsweise nicht). Aber man muss ja auch morgen noch etwas zu tun haben.
Benutzeravatar
eXile
 
Beiträge: 1081
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitragvon Krishty » 23.06.2012, 10:28

Visual C++’ automatisch generierte Zuweisungsoperatoren sind ein Witz. Die Zuweisung einer 4×3-float-Matrix wurde durch ein call memcpy (ja – durch einen Aufruf in die CRT-DLL!) ersetzt statt durch drei SSE-Befehle.

Die Optimierung von Zeigerarithmetik ist so gut wie garnicht vorhanden. Ich habe eben 4 KiB Maschinentext in einer inneren Schleife gespart, indem ich alle Adressberechnungen von Hand auf char * durchführe statt den Compiler mit unsigned short * rumrechnen zu lassen. Echt zum Kotzen.

Nach meiner Optimierung auf Eee hat sich die Anzahl der Render State Changes mehr als halbiert, aber die Anzahl der Draw Calls fast verdoppelt. Genau das sollte ja verhindert werden. WTF. Ich hasse komplexe Systeme.
Sterne rendern (mit Demo) und viele kleine Optimierungen

state is the enemy
Benutzeravatar
Krishty
 
Beiträge: 3502
Registriert: 26.02.2009, 11:18

Re: Jammer-Thread

Beitragvon dot » 23.06.2012, 10:35

Krishty hat geschrieben:Nach meiner Optimierung auf Eee hat sich die Anzahl der Render State Changes mehr als halbiert, aber die Anzahl der Draw Calls fast verdoppelt. Genau das sollte ja verhindert werden. WTF. Ich hasse komplexe Systeme.

Wie gibt's denn das!?
Benutzeravatar
dot
 
Beiträge: 1146
Registriert: 06.03.2004, 18:10

Re: Jammer-Thread

Beitragvon Krishty » 23.06.2012, 11:05

Wie wohl? Irgendwo einen Fehler gemacht. Vielleicht versehentlich einen Cache verkleinert. Vielleicht wurde der Zähler vorher falsch hochgezählt; oder jetzt doppelt. Mal gucken.
Sterne rendern (mit Demo) und viele kleine Optimierungen

state is the enemy
Benutzeravatar
Krishty
 
Beiträge: 3502
Registriert: 26.02.2009, 11:18

Re: Jammer-Thread

Beitragvon CodingCat » 23.06.2012, 12:00

Wieso installiert sich das CUDA SDK in einen versteckten ProgramData-Ordner? Und sehe ich das richtig, dass in diesem 1,3 GiB-Paket nichts drin ist, was ich brauche? Steht SDK neuerdings für Sample-Documentation-Kit?

Oh, und gibt es irgendeine Möglichkeit, CUDA-Integration für ein Visual Studio 2010-Projekt nachträglich zu aktivieren?
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
CodingCat
 
Beiträge: 1700
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT

Re: Jammer-Thread

Beitragvon dot » 23.06.2012, 13:04

CodingCat hat geschrieben:Wieso installiert sich das CUDA SDK in einen versteckten ProgramData-Ordner? Und sehe ich das richtig, dass in diesem 1,3 GiB-Paket nichts drin ist, was ich brauche? Steht SDK neuerdings für Sample-Documentation-Kit?

Das SDK brauchst du sowieso nicht unbedingt, das Toolkit sollte normalerweise reichen.

CodingCat hat geschrieben:Oh, und gibt es irgendeine Möglichkeit, CUDA-Integration für ein Visual Studio 2010-Projekt nachträglich zu aktivieren?

Selbstverständlich, einfach die Custom Build Rule hinzufügen.
Benutzeravatar
dot
 
Beiträge: 1146
Registriert: 06.03.2004, 18:10

Re: Jammer-Thread

Beitragvon CodingCat » 23.06.2012, 13:56

Danke, Custom Build Rules habe ich mit Visual Studio 2010 komplett aus den Augen verloren, wo ich mir selbst praktisch keine mehr basteln kann. Hoffentlich kommt das mit VS11 wieder.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
CodingCat
 
Beiträge: 1700
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT

Re: Jammer-Thread

Beitragvon eXile » 23.06.2012, 14:18

CodingCat hat geschrieben:Wieso installiert sich das CUDA SDK in einen versteckten ProgramData-Ordner? Und sehe ich das richtig, dass in diesem 1,3 GiB-Paket nichts drin ist, was ich brauche? Steht SDK neuerdings für Sample-Documentation-Kit?
Ja, das machen das GPU Computing SDK und das Graphics SDK so; wobei ich mal versucht habe, die Pfade umzustellen, mit dem Ergebnis, dass dann nichts mehr lief. :evil:

CodingCat hat geschrieben:Danke, Custom Build Rules habe ich mit Visual Studio 2010 komplett aus den Augen verloren, wo ich mir selbst praktisch keine mehr basteln kann. Hoffentlich kommt das mit VS11 wieder.
Du könntest doch die .rules-Datei basteln, in ein Visual-Studio-2008-Projekt von Hand per Texteditor einbinden, und dieses automatisch in ein Visual-Studio-2010-Projekt umwandeln lassen; zumindest hier hat er dann passende .props-, .targets- und .xml-Dateien produziert.
Benutzeravatar
eXile
 
Beiträge: 1081
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitragvon CodingCat » 23.06.2012, 14:49

ARGH. Stell dir vor es ist 2012 und CUDA nutzt keine Namespaces. Error: uint4 is ambiguous. OH REALLY? Was mache ich jetzt? Straßenmusiker?
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
CodingCat
 
Beiträge: 1700
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT

Re: Jammer-Thread

Beitragvon dot » 23.06.2012, 15:04

CodingCat hat geschrieben:Danke, Custom Build Rules habe ich mit Visual Studio 2010 komplett aus den Augen verloren, wo ich mir selbst praktisch keine mehr basteln kann. Hoffentlich kommt das mit VS11 wieder.

Der Umstieg auf MSBuild ist imo ein Segen. Irgendwelche Build Rules sind dagegen echt armselig. Zurück wünschen würd ich mir die niemals...
Benutzeravatar
dot
 
Beiträge: 1146
Registriert: 06.03.2004, 18:10

Re: Jammer-Thread

Beitragvon CodingCat » 23.06.2012, 15:11

Für mich als Außenstehender ist MS Build nur ein Haufen C#-Fetzen unlesbar verpackt und verstreut in XML. Die Schnelle Integration von Kommandozeilenwerkzeugen über einen Konfigurationsdialog war dagegen extrem einfach. Wie das intern gespeichert und verarbeitet wird, ist mir dann egal, weil ich es nicht verstehen muss. ;)
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
CodingCat
 
Beiträge: 1700
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT

VorherigeNächste

Zurück zu Allgemeines Talk-Brett

Wer ist online?

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

cron