Seite 81 von 252

Re: Jammer-Thread

Verfasst: 10.08.2012, 17:45
von Artificial Mind
Alexander Kornrumpf hat geschrieben:&v[0]
how about no?
_bool_-vector
Versuch es einfach mal.

Re: Jammer-Thread

Verfasst: 10.08.2012, 17:55
von dot
std::vector<bool> ist eine Ausgeburt der Hölle, wer das verwendet, ist wirklich einfach nur selber schuld...

Und nein, es gibt keine Möglichkeit. ;)

Re: Jammer-Thread

Verfasst: 10.08.2012, 18:03
von glassbear
kaiserludi hat geschrieben:1.5GiB, nicht 15, ist natürlich immer noch eine riesige Menge. Das müsste ja locker in der Größenordnung von 100 Millionen Zeilen Code sein.
Sind etwa 20 Jahre * ~200 Engineers ;)
Treiber fuer 5-6 unterstuetzte Generationen von Hardware, mehrere voellig unterschiedliche Karten pro Generation. Dazu die User Software. Laeppert sich.

Re: Jammer-Thread

Verfasst: 10.08.2012, 19:18
von Jonathan
Wie viele Tage braucht das so zum kompilieren?

Re: Jammer-Thread

Verfasst: 10.08.2012, 20:29
von glassbear
Jonathan hat geschrieben:Wie viele Tage braucht das so zum kompilieren?
Kann ich gar nicht so genau sagen. Wir nutzen sogenannte Wink-Ins: Kompilierte Object-Files, die zentral im Netz gelagert werden. Bei einem Compile werden die herangezogen, falls der Code nicht geaendert wurde.

Mit Winkins etwa 3-4h auf einer HP Z800 (16 Cores, 16-32GiB RAM, 10k oder 15k RPM Platten).

Re: Jammer-Thread

Verfasst: 12.08.2012, 12:40
von CodingCat
Schon zum dritten Mal hat sich mein Bildschirm in Schlieren von Magenta aufgelöst. Wenn ich Pech habe, verabschiedet sich meine Grafikkarte demnächst nach nicht mal einem halben Jahr "Forschungsgebrauch".

Re: Jammer-Thread

Verfasst: 12.08.2012, 15:46
von eXile
CodingCat hat geschrieben:Wenn ich Pech habe, verabschiedet sich meine Grafikkarte demnächst nach nicht mal einem halben Jahr "Forschungsgebrauch".
Und wenn du Glück hast, sind seit dem Kauf noch keine 6 Monate vergangen und du kannst beim Händler auf Gewährleistung pochen, wobei der Händler die Beweislast tragen muss. Nach diesen 6 Monaten dreht sich die Beweislast um, und du hast es sehr viel schwerer. Also nicht die Graphikkarte im Backofen grillen, sondern auf Beseitigung des Mangels bestehen. ;)

Re: Jammer-Thread

Verfasst: 13.08.2012, 10:20
von Krishty
Sobald man einen Zuweisungsoperator hinzufügt, hört eine C++-Klasse auf, POD zu sein.

Wäre ja an sich nicht schlimm, wenn da nicht ein winziges Detail wäre: Die Standardinitialisierung ändert sich von nullen zu undefiniert lassen. Und Visual C++ spuckt nirgends auch nur den Hauch einer Warnung aus, dass die Daten, die ich mühsam mit () initialisiert habe, jetzt voll Dreck sind. Wer hat sich diese scheiß Schikane bloß ausgedacht? Wenn ich es nicht initialisiere soll es ruhig undefiniert bleiben, in Ordnung. Aber wenn ich explizit eine Initialisierungsaufforderung hinschreibe?! WTF?

Das hat mich daran denken lassen, dass ich immernoch viel zu wenig Annahmen im Quelltext dokumentiere. Hätte

    static_assert(type_traits<Foo>::is_pod, "Jedes Mal, wenn du eine Mikrooptimierung einbaust, pflanzt irgendwo auf der Welt ein besoffener MS-Programmierer einen Bug in den Optimizer!");

vor der betroffenen Stelle gefunden, hätte ich es sofort gemerkt.

Re: Jammer-Thread

Verfasst: 13.08.2012, 10:51
von Krishty
Warum sind die meisten von Mobys Hits nun schon über zehn Jahre her? Ich komme mir so alt vor.

Habt ihr euch mal die Pläne alter Intel-CPUs angeschaut, z.B. des 4004er von 1969? Ich schätze, dass etwa um diese Zeit herum CPUs so kompliziert wurden, dass nur noch Autisten die Funktionsweise bis auf die Transistoren runter verstehen konnten. Mitte der 80er dann so, dass sie menschlich nicht mehr vollständig verstehbar wurden. Ich komme mir so jung vor.

Re: Jammer-Thread

Verfasst: 13.08.2012, 15:15
von BeRsErKeR
glassbear hat geschrieben:
kaiserludi hat geschrieben:1.5GiB, nicht 15, ist natürlich immer noch eine riesige Menge. Das müsste ja locker in der Größenordnung von 100 Millionen Zeilen Code sein.
Sind etwa 20 Jahre * ~200 Engineers ;)
Treiber fuer 5-6 unterstuetzte Generationen von Hardware, mehrere voellig unterschiedliche Karten pro Generation. Dazu die User Software. Laeppert sich.
Ist das dann in Brainfuck oder Malbolge geschrieben? :D Ne mal ehrlich da kann man ja quasi mehrere Betriebssysteme draus machen ... Aber ich kenne solche Riesenteile leider nur zu gut hier von Siemens ...

Re: Jammer-Thread

Verfasst: 13.08.2012, 16:00
von Matthias Gubisch
Die CUDA-OpenGL interop ist echt der letze Dreck...

cudaGraphicsGLRegisterBuffer(..) funktioniert bei 2 von vier Buffern einwandfrei bei den anderen beiden zerschiest es mir den Speicher und ich bekomm ein Race zwischen OGL und CUDA :(

Re: Jammer-Thread

Verfasst: 13.08.2012, 16:35
von antisteo
Wenn man ein Feature nicht durchdenkt, kann man viele Stunden damit verbringen, seine Designfehler zu korrigieren.

Closures sind geil zum programmieren, aber schwierig zu implementieren. (Ich schwitze gerde an statisch getypten Closures mit generischen Datentypen)

Re: Jammer-Thread

Verfasst: 13.08.2012, 16:44
von kimmi
glassbear hat geschrieben:
Jonathan hat geschrieben:Wie viele Tage braucht das so zum kompilieren?
Kann ich gar nicht so genau sagen. Wir nutzen sogenannte Wink-Ins: Kompilierte Object-Files, die zentral im Netz gelagert werden. Bei einem Compile werden die herangezogen, falls der Code nicht geaendert wurde.

Mit Winkins etwa 3-4h auf einer HP Z800 (16 Cores, 16-32GiB RAM, 10k oder 15k RPM Platten).
Ihr benutzt ClearCase? Das wäre in der Tat ein Grund zu jammern... Gerade die Winkins können einem bei einem recht großen Repo das Netzwerk zu dichtmachen.

Kimmi

Re: Jammer-Thread

Verfasst: 13.08.2012, 17:13
von glassbear
kimmi hat geschrieben:hr benutzt ClearCase? Das wäre in der Tat ein Grund zu jammern... Gerade die Winkins können einem bei einem recht großen Repo das Netzwerk zu dichtmachen.
Ja, Clearcase. Das Netzwerk ist auch oft genug "langsam" oder faellt halt mal aus. Sehr lustig, wenn der Backup-Switch nicht anspringt und spontan 200 Leute nicht mehr arbeiten koennen bis HP Ersatz liefert :lol:

Code ist groesstenteils C mit etwas C++ und bischen Java.

Re: Jammer-Thread

Verfasst: 13.08.2012, 17:17
von j.klugmann
Würde mich mal interessieren, wie viel Duplicated Code bei solch einem riesigen Projekt existiert. Ich tippe, ohne je an solch einem Projekt gearbeitet zu haben, auf 15%. :D

Re: Jammer-Thread

Verfasst: 13.08.2012, 17:39
von glassbear
j.klugmann hat geschrieben:Würde mich mal interessieren, wie viel Duplicated Code bei solch einem riesigen Projekt existiert. Ich tippe, ohne je an solch einem Projekt gearbeitet zu haben, auf 15%. :D
Ich kann sicherlich nicht fuer das ganze System sprechen, doch fuer die Teile, die ich kenne: Dort gibt es erstaunlich wenig duplizierten Code. Was es auch nicht gibt, es einheitliche Fehlerbehandlung (wahlweise ueber Exceptions, die einfach weggeworfen werden, einfache Ausgaben auf stdout/stderr bis hin zu zu asserts(), die in Release-Builds deaktiviert werden :roll: ). Oder ein Memory Management. Oder hilfreiche Fehlermeldungen. Oder ...

Re: Jammer-Thread

Verfasst: 13.08.2012, 17:43
von Chromanoid
Historisch gewachsen halt :)

Re: Jammer-Thread

Verfasst: 13.08.2012, 19:36
von Chromanoid
http://www.gamesindustry.biz/articles/2 ... ine-gamers
Das amerikanische Schulsystem ist schuld an schlechten Spielen -.-
;)

Re: Jammer-Thread

Verfasst: 13.08.2012, 20:41
von glassbear
Chromanoid hat geschrieben:http://www.gamesindustry.biz/articles/2 ... ine-gamers
Das amerikanische Schulsystem ist schuld an schlechten Spielen -.-
;)
Punkt 1 kann ich aus verschiedenen Multiplayer-Spielen (Mass Effect 3, Rage, ... ) definitiv bestaetigen :evil: Sobald es schwierig wird, quitten viele Leute. Oder wenn sich jemand mit Light Armor einem grossem Mech in den Weg stellt und stirbt, ist natuerlich das Spiel dran Schuld :roll:

Re: Jammer-Thread

Verfasst: 14.08.2012, 00:28
von CodingCat
Matthias Gubisch hat geschrieben:Die CUDA-OpenGL interop ist echt der letze Dreck...

cudaGraphicsGLRegisterBuffer(..) funktioniert bei 2 von vier Buffern einwandfrei bei den anderen beiden zerschiest es mir den Speicher und ich bekomm ein Race zwischen OGL und CUDA :(
Nähere Informationen? Ich habe mich gerade selbst 2 Wochen mit DX11/CUDA rumgeärgert. Was nicht zuverlässig ging: Interop mit StructuredBuffers, Interop mit sehr großen Puffern. Außerdem haut cudaGraphicsMapResource() gigantische Verzögerungen ins Programm, sobald allgemein der VRAM knapp wird.

Re: Jammer-Thread

Verfasst: 14.08.2012, 09:32
von Matthias Gubisch
CodingCat hat geschrieben:
Matthias Gubisch hat geschrieben:Die CUDA-OpenGL interop ist echt der letze Dreck...

cudaGraphicsGLRegisterBuffer(..) funktioniert bei 2 von vier Buffern einwandfrei bei den anderen beiden zerschiest es mir den Speicher und ich bekomm ein Race zwischen OGL und CUDA :(
Nähere Informationen? Ich habe mich gerade selbst 2 Wochen mit DX11/CUDA rumgeärgert. Was nicht zuverlässig ging: Interop mit StructuredBuffers, Interop mit sehr großen Puffern. Außerdem haut cudaGraphicsMapResource() gigantische Verzögerungen ins Programm, sobald allgemein der VRAM knapp wird.
Kommt demnächst in nem eigenen Thread

Re: Jammer-Thread

Verfasst: 15.08.2012, 01:08
von eXile
Na, mögt ihr alle unique_ptr? Ja? Dann schaut mal her:

Code: Alles auswählen

auto nicePointer = std::unique_ptr<char>(new char[123]);
Schön, oder?

Gratulation, wir haben gerade ein Speicherloch erzeugt. Genauer: Unter Visual C++ 2010 werden 122 chars nicht freigegeben, weil nur delete, aber nicht delete[] aufgerufen wird. unique_ptr wählt den auszuführenden Deleter (d.h. delete oder delete[]) anhand des Template-Parameters, und der ist nun einmal kein Array. Richtig lautet es:

Code: Alles auswählen

auto nicePointer = std::unique_ptr<char[]>(new char[123]);
Wenn man sich mit C++03 den Fuß abschießen kann, dann kann man sich wohl mit C++11 den halben Torso wegblasen. :roll:

Re: Jammer-Thread

Verfasst: 15.08.2012, 02:28
von kaiserludi
eXile hat geschrieben: Wenn man sich mit C++03 den Fuß abschießen kann, dann kann man sich wohl mit C++11 den halben Torso wegblasen. :roll:
Mal schauen, wie viele Standardversionen es noch dauert, bis bei Fehlern ganze Universen ausradiert werden :lol:

Re: Jammer-Thread

Verfasst: 15.08.2012, 02:41
von CodingCat
Ja, dass make_unique() es nicht in den Standard geschafft hat, ist eine erschreckend grobe Verfehlung.

Re: Jammer-Thread

Verfasst: 15.08.2012, 09:44
von Thoran
eXile hat geschrieben:Wenn man sich mit C++03 den Fuß abschießen kann, dann kann man sich wohl mit C++11 den halben Torso wegblasen. :roll:
Zum Glück bläst man sich nicht den Kopf weg, sonst würde man ja kopflos programmieren ;)
Da wäre dann wohl das Ausradieren des Universums die bessere Alternative. Man kann wenigsten keine Programmierfehler mehr machen. ;)

Re: Jammer-Thread

Verfasst: 15.08.2012, 10:58
von Chromanoid
Ich glaube phpBB hat irgendwie deinen Avatar ausradiert. Sehr komisch was da momentan als Alternative prangt.

Re: Jammer-Thread

Verfasst: 15.08.2012, 12:57
von Schrompf
Ich komme mir grad blöd vor. Ich suchte ein regelmäßiges Muster, um ein 32x32-Feld zu beackern, so dass nicht immer benachbarte Pixel drankommen, am Ende aber trotzdem alle erwischt werden. Überschaubare Zahlenbereiche, also schnell mal in Code gegossen:

Code: Alles auswählen

  static const size_t GROESSE = 32;
  for( size_t a = 1; a < GROESSE*GROESSE; ++a )
  {
    std::vector<bool> erreicht(GROESSE*GROESSE, false);
    size_t zaehler = 0; 
    for( size_t b = 0; b < GROESSE*GROESSE; ++b )
    {
      erreicht[zaehler%(GROESSE*GROESSE)] = true;
      zaehler += a;
    }

    if( std::all_of( erreicht.cbegin(), erreicht.cend(), [](bool b) { return b; }) )
      Traum::Konsole.Log( "Muster klappt für Abstand %d", a);
  }
Und siehe da: es klappt für jede ungerade Zahl. Ich komme mir gerade ziemlich dumm vor, dass ich das nicht sofort gesehen habe. Grmpf.

[edit]Korrektur: noch einen Test für "doppelt erreicht" eingebaut und immernoch das selbe Ergebnis. Jetzt fühle ich mich richtig blöd. Eigentlich logisch... es klappt nicht für Schrittweiten, die durch Teiler der Größe teilbar sind.

Re: Jammer-Thread

Verfasst: 15.08.2012, 13:01
von Thoran
Chromanoid hat geschrieben:Ich glaube phpBB hat irgendwie deinen Avatar ausradiert. Sehr komisch was da momentan als Alternative prangt.
Was prangt den da? Ich kann nämlich nur Text sehen, oder meintest du das?

Re: Jammer-Thread

Verfasst: 15.08.2012, 13:26
von Alexander Kornrumpf
Schrompf hat geschrieben: [edit]Korrektur: noch einen Test für "doppelt erreicht" eingebaut und immernoch das selbe Ergebnis. Jetzt fühle ich mich richtig blöd. Eigentlich logisch... es klappt nicht für Schrittweiten, die durch Teiler der Größe teilbar sind.
Das kommt mir aus der Krypto Vorlesung sehr bekannt vor.

Re: Jammer-Thread

Verfasst: 15.08.2012, 13:29
von Schrompf
Alexander Kornrumpf hat geschrieben:Das kommt mir aus der Krypto Vorlesung sehr bekannt vor.
Weil Du eine hattest. Und Dich daran erinnerst. Daher fühle ich mich immer latent blöd, wenn ich hier im Forum mitlese.