the multicore era is on the rise 07. Jun 2010

Momentan werkeln im Macbook zwei Kerne vor sich hin. Wer sie beide ausnutzt kommt theoretisch auf 100% Geschwindigkeitszuwachs. In der Praxis frisst die Verwaltung der Parallelisierung natürlich einen Teil auf und es bleiben vielleicht noch etwa 50% Geschwindigkeitszuwachs übrig. Das ist für den Anfang schonmal ganz nett, aber deutlich interessanter wird es wenn man in Richtung zweistellige oder dreistellige Kernzahlen guckt. Im CPU-Bereich etwa hat Intel bereits vor drei Jahren einen Forschungsprozessor mit 80 physischen Kernen vorgestellt. Frei erhältlich ist derzeit beispielsweise von Sun ein Server mit immerhin schon 32 physischen Kernen. Im GPU-Bereich wiederum gibt es von Nvidia eine Grafikkarte mit sagenhaften 960 Kernen. In Anbetracht dieser Zahlen dürfte jedem die schnell wachsende Bedeutung der Parallelen Programmierung klar werden.

 

Kommentare (6)

  1. ssp About 6 hours later

    Mein Eindruck ist weiterhin, daß der zweite Kern für den Ottonormalprogrammnutzer der wichtigste ist.

    Dadurch kann der Computer neben dem Hauptprogramm noch alles andere machen, worauf er so Lust hat, ohne wirklich Leistung zu kosten. Von mehr als dem zweiten Kern profitiert man wahrscheinlich nur wenn man wirklich Rechnen muß, wie bei Videocodierung oder so. Und auch da müssen die Codierer dafür ausgelegt sein (zB nutzt x264 die Kerne sehr gut, während Ogg-Codierer nur einen Kern zu nutzen scheinen).

  2. Stefan About 7 hours later

    Ich betrachte das ganze eher aus der Serverperspektive :)

  3. ssp 1 day later

    Sagen wir mal, daß ein MacBook nicht den potentesten Server abgeben wird und daß zumindest viele Serveraufgaben aus dem Abarbeiten kleiner Transaktionen bestehen und damit sicherlich der viel-Core-Welt leichter erschließbar sind als GUIs. Solange die einzelnen Aufgaben recht klein und unabhängig sind, ist die Parallelisierung ja nicht so schwierig.

  4. Stefan 1 day later

    Naja, ich glaube Parallelisierung ist insbesondere in imperativen Sprachen schon ein Feld des grandiosen Scheiterns, aber klar je überschaubarer die Aufgaben, desto höher die Erfolgswahrscheinlichkeit.

  5. ssp 1 day later

    Da triffst Du natürlich voll meine Unwissenheit. Was ist eine imperative Sprache? Warum scheitert gerade die? Und welche Sprachmodelle scheitern nicht?

    Mein Eindruck war, daß das Hauptproblem nicht die Sprachen sind, sondern die Arbeit mit Daten, die über die verschiedenen CPUs hinweg konsistent gehalten werden wollen/sollten.

    Mein Kollege programmiert schön in klassischem C++, er muß häufig (10^15 fach oder so) das gleiche tun und braucht für jeden Durchgang 1/100 Sekunde oder so. Er hat keine geteilten Daten. Wahrscheinlich ist das ‘imperativ’ aber es skaliert prima und nutzt effizient alle Cores, auf die er seine Finger legen kann :)

  6. Stefan 1 day later

    Das primäre Programmierparadigma von C++ ist das imperative. Für parallele Prorammierung werden im allgemeinen funktionale Sprachen empfohlen. Nicht weil sie mächtiger sind, sondern weil dort die Probleme der parallelen Programmierung besser beherrschbar sind. Es kommt aber natürlich auf die jeweilige Aufgabe an. Wenn es beispielsweise um pure Zahlenverarbeitung geht, dann würde ich etwa von Erlang eher abraten. Ich wüßte jetzt aber spontan auch keine funktionale Programmiersprache die bei reiner Zahlenverarbeitung besonders glänzen würde. Müßte ich mich auch erstmal schlau machen.

Kommentar schreiben

Markdown Syntax