Re: Effiziente Synchronisation von Threads
Verfasst: 19.05.2014, 11:09
Hey,
schön, dass euch die Videos gefallen.
Dabei ist alles noch in einem sehr frühen Stadium.
Die grundlegenden Funktionen der Engine wollen solide implementiert sein!
Designentscheidungen treffe ich oft aufgrund von Benchmarking. Datenorientierung hat Objektorientierung abgelöst. Das alles braucht seine Zeit.
Die Grafik ist noch im Rohzustand.
Bzgl. volatile und Umordnung durch den Compiler könnte es bei mir womöglich hässliche Fehler geben, wenn ich nicht den Visual C++ Compiler nehme. Da gucke ich mal mit mehr atomics. Das war mir neu. :idea:
Es geht ja um die "Effiziente Synchronisation von Threads"
Eine weitere Erfahrung, bzw eine weitere Methode, welche soeben die Effizienz der Synchonisation steigert.
Verglichen habe ich die auf eine Sekunde gemittelte Maximale Update-Frequenz in der Zielanwendung.
Die Threads (Ich lasse es mit 2 Threads pro Core laufen) holen sich jeweils ein Paket von Items ab, welches sie dann abarbeiten.
Die Größe der Pakete ist nun Flexibel. Erst große Pakete, zum Ende kleinere. Vorher war die Größe statisch.
Ich will so erreichen, dass alle Threads möglichst gleichzeitig fertig sind und wenig Brüche in der Cache-Line auftreten.
Und es funktioniert. Eine kleine Funktion mehr, welche die Leistung um ~3% anschiebt. Für den geringen Aufwand ganz nett.
schön, dass euch die Videos gefallen.
Dabei ist alles noch in einem sehr frühen Stadium.
Die grundlegenden Funktionen der Engine wollen solide implementiert sein!
Designentscheidungen treffe ich oft aufgrund von Benchmarking. Datenorientierung hat Objektorientierung abgelöst. Das alles braucht seine Zeit.
Die Grafik ist noch im Rohzustand.
Bzgl. volatile und Umordnung durch den Compiler könnte es bei mir womöglich hässliche Fehler geben, wenn ich nicht den Visual C++ Compiler nehme. Da gucke ich mal mit mehr atomics. Das war mir neu. :idea:
Es geht ja um die "Effiziente Synchronisation von Threads"
Eine weitere Erfahrung, bzw eine weitere Methode, welche soeben die Effizienz der Synchonisation steigert.
Verglichen habe ich die auf eine Sekunde gemittelte Maximale Update-Frequenz in der Zielanwendung.
Die Threads (Ich lasse es mit 2 Threads pro Core laufen) holen sich jeweils ein Paket von Items ab, welches sie dann abarbeiten.
Die Größe der Pakete ist nun Flexibel. Erst große Pakete, zum Ende kleinere. Vorher war die Größe statisch.
Ich will so erreichen, dass alle Threads möglichst gleichzeitig fertig sind und wenig Brüche in der Cache-Line auftreten.
Und es funktioniert. Eine kleine Funktion mehr, welche die Leistung um ~3% anschiebt. Für den geringen Aufwand ganz nett.