{"id":3572,"date":"2010-10-09T08:06:09","date_gmt":"2010-10-09T06:06:09","guid":{"rendered":"http:\/\/www.bernd-leitenberger.de\/blog\/?p=3572"},"modified":"2010-10-08T17:07:58","modified_gmt":"2010-10-08T15:07:58","slug":"parallelisierung-aus-anwendersicht","status":"publish","type":"post","link":"https:\/\/www.bernd-leitenberger.de\/blog\/2010\/10\/09\/parallelisierung-aus-anwendersicht\/","title":{"rendered":"Parallelisierung &#8211; aus Anwendersicht"},"content":{"rendered":"<p>Da sich offensichtlich viel mehr Leute &uuml;ber Computer interessieren als f&uuml;r Raumfahrt (wer h&auml;tte das gedacht?). Will ich das Problem der    Parallelit&auml;t mal beleuchten. Zuerst mal aus &#8222;Anwendersicht&#8220;, also ohne Kenntnisse einer Programmiersprache und ohne auch Details der    Programmierung zu vermitteln. Das folgt im n&auml;chsten Beitrag.<\/p>\n<p>Erst mal: was kann man parallelisieren und wie geht das &#8211; darum geht es heute.<\/p>\n<p>Die einfachste Sicht erh&auml;lt man wenn man den <strong>Taskmanager<\/strong> aktiviert (oder PS unter Linux) und sich mal die Prozesse anschaut. Bei    einem &#8222;jungfr&auml;ulichen&#8220; Windows XP direkt nach dem Start finden man typischerweise etwa 10 Prozesse. Wenn man einige Programme, Treiber    etc. installiert hat, Online geht, k&ouml;nnen es durchaus auch viel mehr sein. So gesehen nutzen viele Kerne doch etwas, aber nur auf den    ersten Blick. Jeder Prozess kann im Prinzip von einem physikalischen oder logischen Kern (das ist ein Kern der nicht existiert, aber dem    Betriebssystem vorgegaukelt wird, indem der Prozessor intern aus zwei Prozessen die Instruktionen auf einen Kern verteilt damit dieser    optimal ausgelastet. Das ist nicht so schnell wie ein echter Kern aber bis zu 25% schneller als ein einzelner Kern (der typische Gewinn    liegt allerdings bei 10-15%). Bei Intel hei&szlig;t das <strong>Hyperthreading<\/strong>. AMD das nicht in den CPU&#8217;s.<\/p>\n<p>Wer allerdings genauer hinschaut wird feststellen, dass die meisten Prozesse nur wenig CPU Zeit brauchen. Ein Prozess kann ein    Anwendungsprogramm sein, ein Dienst oder auch ein Thread.<!--more--><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft\" src=\"\/img\/prozesse.jpg\" alt=\"Prozesse\" width=\"537\" height=\"494\" align=\"left\" \/>Was ein Programm ist, brauche ich wohl nicht zu erkl&auml;ren. Ein    Programm wird &uuml;blicherweise vom Anwender gestartet. Ein <strong>Dienst<\/strong> ist eigentlich fast das gleiche, nur wird er meist vom    Betriebssystem gestartet. Entweder automatisch beim Start oder bei Eintreten eines Ereignisses. Ein Dienst ist normalerweise verborgen,    also in de Taskleiste nicht tu sehen und macht sich auch selten oder gar nicht mit Meldungen bemerkbar. Typische Dienste sind z.B. der    Virenscanner, Druckertreiber, Explorer und der Dienst zum Aufbauen von Netzwerkverbindungen SVhost.exe, denn man recht h&auml;ufig im    Taskmanager finden kann. In der Systemsteuerung ? Verwaltung ? Dienste kann man die installierten einsehen.<\/p>\n<p>Ein <strong>Thread<\/strong> ist ein Teil eines Programmes, das von diesem gestartet wird und von dem Programm abh&auml;ngig und meist eine eigene    Aufgabe hat. Also im Bild rechts sieht man z.B. mehrere Threads von Google Chrome. Chrome &ouml;ffnet f&uuml;r jedes Tab (im Moment des    Schnappschusses waren 10 offen) einen Thread. Genauso macht es Star Office f&uuml;r jedes Dokument.<\/p>\n<p>Prozesse haben den Vorteile, dass sich das Betriebssystem um die Verteilung an die Kerne k&uuml;mmert und dabei die vom Programm gew&uuml;nschte    Priorit&auml;t k&uuml;mmert. Trotzdem wird beim Schauen auf den Taksmanager bei den meisten Anwendern ein Prozess die meiste CPU Zeit bekommen &#8211; der    Leerlaufprozess, der die niedrigste Priorit&auml;t aller Prozesse hat also erst dran kommt wenn alle anderen ihre Zeitscheibe erhalten haben.    Betriebssysteme weisen Prozessen &#8222;Zeitscheiben&#8220; zu, also sie bekommen einen Kern z.B. 20 ms lang und dann werden sie wieder in die    Schlange eingereiht und m&uuml;ssen warten bis andere Prozesse der gleichen Priorit&auml;t dran waren. F&uuml;r Laien zum Angeben, das Verfahren hei&szlig;t &#8222;Round    Robin&#8220;. Es ist das einfachste Multitasking Verfahren und auch alle Computer in der Raumfahrt arbeiten danach. Es k&ouml;nnen so viel mehr    Prozesse abgearbeitet werden als es Kerne gibt, auch weil bei den meisten Anwendungen ein Prozess nur wenig Rechenzeit ben&ouml;tigt. w&auml;hrend    ich diesen Schnappschuss anfertigte lief bei mir z.B.? simultan: Thunderbird, Google Chrome, Salamander, Expression Web, Irfan View    und der SMPlayer, dazu noch die Hintergrundprozesse. Die meiste Rechenzeit braucht letzterer der ein Video neben der Arbeit abspielt. Wie    man sieht liefen zum Zeitpunkt des Schnappschusses 96 Prozesse und trotzdem wurden nur 36% der CPU Zeit ben&ouml;tigt, ohne das Video w&auml;ren es    sogar nur 15%.<\/p>\n<p>Das ist eine M&ouml;glichkeit, aber die M&ouml;glichkeiten von Prozessen zu kommunizieren sind beschr&auml;nkt. So kann eine Anwendung selbst Aufgaben    parallelisieren. Ich will hier zwei Beispiele nehmen. Die Videokodierung und Dekodierung und Bildbearbeitung. Alle Videokodierungen \/    Dekodierungen basieren auf dem Verfahren der <a href=\"http:\/\/de.wikipedia.org\/wiki\/Diskrete_Kosinustransformation\">Diskreten    Cosinustransformation<\/a>. Dieses basiert darauf, (stark vereinfacht gesagt!!!) dass die Bildinformation die in einem 8 x 8 Pixelgro&szlig;en Block ersetzt wird, durch die    Koeffizienten einer Funktion. Diese muss berechnet werden (Encodierung) oder der Funktionswert ermittelt (Dekodierung). Der Algorithmus    ist festgelegt und jeder Block ist vom anderen unabh&auml;ngig. Ein Programm kann also bei einem Bild daran gehen, die Anzahl der Kerne    abzufragen und dann das Bild in mehrere gleich gro&szlig;e Einzelteile aufzuteilen, die dann jeweils von einem Thread, einem Prozess innerhalb    des Programmes verarbeitet wird.<\/p>\n<p>Bei der Bildbearbeitung basieren die meisten Verfahren auf Informationen aus den Nachbarpunkten oder es wird ein Algorithmus auf das    ganze Bild (jeden Bildpunkt angewandt). Auch dies ist gut parallelisierbar. So basiert der Scharfzeichnenfilter z.B. darauf, dass von    einem Bildpunkt der Mittelwert der Helligkeitswerte der Nachbarpunkte (mit frei w&auml;hlbarem Radius) abgezogen wird. Auch hier kann im    Prinzip jeder Bildpunkt separat berechnet werden. Neben den Kernen kann dies bei geeigneter Programmierung dann noch auf die Rechenwerke    verteilt werden, von denen jeder Kern auch &uuml;ber mehrere (typischerweise 2-4) verf&uuml;gt.<\/p>\n<p>So sind innerhalb eines Programmes Dinge parallelisierbar. Doch wo geht es nicht? Nun es geht schlicht und einfach nicht dort wo die    Aktion nicht vorhersehbar ist. Also bei der Interaktion mit dem Anwender. Hier ist es zwar m&ouml;glich vorausschauend zu denken, also z.B.    alle Seiten die mit der aktuellen Webseite verlinkt sind zu laden oder zu rendern, Nur ist das eben mehr eine Pausenf&uuml;lleraktion, die auch    nicht immer Sinn macht (folgt man jedem Link? &#8211; zudem erzeugt es Netzwerklast, dass dann den eigentlichen Flaschenhals darstellt. Vor allem    ist die Zeit f&uuml;r das Rendern einer Seite sehr klein im Vergleich zur Zeit die man braucht sie zu lesen.<\/p>\n<p>Wirklich am effizientesten ist die Parallelisierung von Berechnungen bei immer gleichen Algorithmen, wie die oben angesprochenen. Da bei    Spielen es im Prinzip die gleiche Problematik gibt &#8211; die Szene ist vorgegeben, es m&uuml;ssen die Objekte nach einem Algorithmus berechnet,    gezeichnet, eingef&auml;rbt und    dann mit Texturen und Licht\/Schatten &uuml;berzogen werden. Auch dies wird f&uuml;r jede Einheit (meist ein Dreieck) separat durchgef&uuml;hrt. Daher    haben Grafikkarten CPU aus sehr vielen, sehr einfach gestrickten Recheneinheiten aus vielen (Maximum sind glaub ich derzeit 480 Kernen).    Werden sie mit solchen Algorithmen gef&uuml;ttert die extrem gut parallelisierbar sind, dann sind sie viel schneller als die CPU. So gibt es    Treiber um Bildeffekte zu berechnen oder Videos mit der Grafikkarte zu en\/dekodieren, das letztere kann man wegen des feststehenden    Algorithmus auch in Silizium gie&szlig;en und so sind moderne Chips&auml;tze dazu f&auml;hig Videos zu dekodieren, wodurch ein Atom erst HD Videos    abspielen kann &#8211; die erfordern sonst einen Dualcoreprozessor mit der etwa zehnfachen Rechenleistung.<\/p>\n<p>Was gibt es noch?<\/p>\n<p>Wir haben ja einige Sci\/Fi Freunde hier. Ich bin da auf was gesto&szlig;en, das euch sicher freut: Ijon tichy, Raumschiffpilot. Es hat alles    was Sci\/Fi Serien auszeichnet: Zeitschleifen, Au&szlig;erirdische, Hologramme, Kampf um die Aufnahme der Menschheit in den galaktischen Rat,    gefr&auml;&szlig;ige Monster &#8211; nur ist die Serie, sagen wir mal &#8222;etwas anders&#8220;. Ladet sie euch runter und schaut selbst. (90 Minuten 713 MB, 6 Folgen    ? 15 Minuten, derzeit wird die Fortsetzung gedreht).<\/p>\n<p><a href=\"http:\/\/www.megaupload.com\/?d=23ML8YIG\">http:\/\/www.megaupload.com\/?d=23ML8YIG<\/a><\/p>\n<p>Das zweite ist dass ich die Blogleser von der so arg strapazierenden Aufgabe zu erl&auml;utern, warum man ein R&auml;tsel gestellt hat entbinden    will. Aber im Aufl&ouml;sungskommentar sollte man schon noch was erkl&auml;rendes schreiben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Da sich offensichtlich viel mehr Leute &uuml;ber Computer interessieren als f&uuml;r Raumfahrt (wer h&auml;tte das gedacht?). Will ich das Problem der Parallelit&auml;t mal beleuchten. Zuerst mal aus &#8222;Anwendersicht&#8220;, also ohne Kenntnisse einer Programmiersprache und ohne auch Details der Programmierung zu vermitteln. Das folgt im n&auml;chsten Beitrag. Erst mal: was kann man parallelisieren und wie geht [&hellip;]<\/p>\n","protected":false},"author":169,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[1586,1585,1584],"class_list":["post-3572","post","type-post","status-publish","format-standard","hentry","category-computer","tag-hyperthreading","tag-multi-core","tag-parallelisierung","entry"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":18610,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/27\/galileos-cds-teil-1\/","url_meta":{"origin":3572,"position":0},"title":"Galileos CDS &#8211; Teil 1","author":"Bernd Leitenberger","date":"27. M\u00e4rz 2026","format":false,"excerpt":"Hall\u00f6chen, es wird Zeit das ich mich mal wieder melde. Es gab zwei Gr\u00fcnde, warum ich mich so rar gemacht habe. Das eine ist das es gerade nicht so viel aktuelles gibt, au\u00dfer einem Update zu Artemis, zu dem ich vielleicht noch etwas schreibe. W\u00e4hrend Trump das ganze Programm nach\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"https:\/\/vg07.met.vgwort.de\/na\/4fb81c7bafbd4d9d88b5695abdb33d29","width":350,"height":200},"classes":[]},{"id":18612,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/28\/galileos-cds-teil-2\/","url_meta":{"origin":3572,"position":1},"title":"Galileos CDS \u2013 Teil 2","author":"Bernd Leitenberger","date":"28. M\u00e4rz 2026","format":false,"excerpt":"So, heute geht es weiter mit Teil 2 \u00fcber Galileos CDS, dieser Beitrag schlie\u00dft nahtlos an den ersten Beitrag von gestern an, wie man schon an der ersten Textzeile sieht. Nach der Einleitung im ersten Teil geht es heute weiter damit warum der RCA 1802 genutzt wurde und was seine\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"https:\/\/vg07.met.vgwort.de\/na\/191e4b0728de42829cf656027b84dc82","width":350,"height":200},"classes":[]},{"id":18380,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/09\/03\/die-glorreichen-10-das-war-mal-weg-pc-hardware\/","url_meta":{"origin":3572,"position":2},"title":"Die glorreichen 10 &#8211; Das war mal weg: PC Hardware","author":"Bernd Leitenberger","date":"3. September 2025","format":false,"excerpt":"Ich will heute mal zwei ZDF Info \/ Neo Sendungen verbinden. Die glorreichen 10, die bei mir als Vorlage f\u00fcr einige Blogs dienten und die von mir noch mehr gesch\u00e4tzte Sendung \"Das war mal weg\", wo es um Dinge geht, die fr\u00fcher fast jeder hatte und die heute aus unserem\u2026","rel":"","context":"In &quot;Die Glorreichen 10&quot;","block_context":{"text":"Die Glorreichen 10","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/die-glorreichen-10\/"},"img":{"alt_text":"","src":"https:\/\/vg02.met.vgwort.de\/na\/876c61d389304d98aa0332fadd769381","width":350,"height":200},"classes":[]},{"id":18614,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/29\/galileos-cds-teil-3\/","url_meta":{"origin":3572,"position":3},"title":"Galileos CDS &#8211; Teil 3","author":"Bernd Leitenberger","date":"29. M\u00e4rz 2026","format":false,"excerpt":"So nun zum dritten Teil \u00fcber das prim\u00e4re Computersystem von Galileo, das CDS. Nachdem sich die ersten beiden Teile nur mit dem RCA 1802, warum er gew\u00e4hlt wurde und seiner Architektur befassten geht es heute um das Computersystem selbst. Der Artikel schlie\u00dft so an seine beiden Vorg\u00e4nger gestern und vorgestern\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"https:\/\/vg07.met.vgwort.de\/na\/6e7f572a246b4ac395de9c260733b707","width":350,"height":200},"classes":[]},{"id":18511,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/01\/27\/musks-ki-rechenzentren-im-orbit\/","url_meta":{"origin":3572,"position":4},"title":"Musks KI-Rechenzentren im Orbit","author":"Bernd Leitenberger","date":"27. Januar 2026","format":false,"excerpt":"Bei meinem regelm\u00e4\u00dfigen Besuch des Space Reviews stie\u00df ich auf diesen Artikel: SpaceX, orbital data centers, and the journey to Mars. Ich hatte in meiner Nachlese schon erw\u00e4hnt das Elon Musk, nachdem er dies lange verschoben hat nun plant SpaceX an die B\u00f6rse zu bringen. Ich meinte aber, das l\u00e4ge\u2026","rel":"","context":"In &quot;SpaceX&quot;","block_context":{"text":"SpaceX","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/spacex\/"},"img":{"alt_text":"","src":"https:\/\/vg06.met.vgwort.de\/na\/0ee72da693054bc3b5c3f00214a7e2b3","width":350,"height":200},"classes":[]},{"id":18439,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/10\/14\/nachlese-elfter-teststart-des-starships-ift-11\/","url_meta":{"origin":3572,"position":5},"title":"Nachlese elfter Teststart des Starships IFT-11","author":"Bernd Leitenberger","date":"14. Oktober 2025","format":false,"excerpt":"Die Nachlese zum gestrigen Starship-Start kann ich recht kurz machen, denn diesmal klappte noch mehr als beim letzten Mal. Dauerhaft, zusammen mit dem Artikel f\u00fcr den Flugplan und Abbildungen findet ihr das ganze auch auf der Website. Drei Dinge fielen mir auf: Beim Boostback-Burn der Super Heavy schaltete eines der\u2026","rel":"","context":"In &quot;SpaceX&quot;","block_context":{"text":"SpaceX","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/spacex\/"},"img":{"alt_text":"","src":"https:\/\/vg04.met.vgwort.de\/na\/d237e8ebe33746ddb174f7e072b94b6c","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/3572","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/users\/169"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/comments?post=3572"}],"version-history":[{"count":0,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/3572\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/media?parent=3572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/categories?post=3572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/tags?post=3572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}