Würde sowas Sinn machen? Wenn man sieht mit wieviel paar µA aktuelle
Generationen laufen wenn man die ganze Peripherie abstellt und wenn man
betrachtet dass es die Controller in kleinen Varianten mit dem gleichen
Core total günstig sind, dann könnte man ja fast denken dass man aus
ganz vielen parallelen µC's einen Rechner mit viel Rechenleistung und
wenig Energieaufnahme aufbauen könnte der vielleicht sogar große
Supercomputer in den Schatten stellt. Besonders von der Leistung pro
Watt. Oder liege ich da falsch?
Dann rechne mal wieviele AVRs / ARMs du brauchst um genausoviele GFLOPS
wie eine CUDA-fähige Grafikkarte zu erreichen. Zudem können die
einfachen µCs keine Floating Point Ops, sodass man das in Software
machen müsste.
Und für was anderes als massiv parallelisierbare Anwendungen wären
paralelle µCs ohnehin nicht brauchbar.
Bei der enticklung der Software wünsche isch ebenfalls viel Spass,
10000+ µCs zu flashen macht sicher keinen Spass, zudem müsste man eine
zentrale Speichereinhit dazubasteln, das der Speicher pro µC viel zu
klein ist.
PS: eine Nvidia GTX 295 hat 480 Stream-CPUs die mit 575 MHz getaktet
sind, und 64 bit double precission rechnen können, nun kannst mal
rechnen wieeviele AVRs man dazu braucht
PPS: Ziemliche Schnappsidee
Wenn man mal einfach 400 Takte/FLOP annimmt kommt man bei 20 MHz
Systemtakt auf 0,00005 GFLOPs. Nicht wirklich viel...
Nachtrag: Eine Geforce GTX 480 schafft theroetisch 1345 GFLOPS.
Ich kann mich an eine Applikation errinnern, wo 1000 Microchip pic cpu´s
für Echoanwendungen (Ultraschall im Wasser, Side Scan, ...)
verwendet wurden. Heute würde man dazu eine Grafikkarte mit CPLD sowie
M3
nehmen und man hätte das 100-Fache an Leistung (Pic haben 5 Mips) bei
1/10 an Preis.
MIPS = Meaningless Information Provided by Salesperson
Parallelität skaliert nicht beliebig, erstens muss die Aufgabe
hinreichend parallelisierbar sein, andernfalls falle ich
schlimmstenfalls auf einen einzelnen Kern zurück wenn die Aufgabe nur
sequenziell zu lösen ist.
Und selbst wenn die Aufgabe gut parallelisierbar ist fällt bei
Multiprozessorsystemen der Kommunikationsaufwand an die Daten auf die
Prozessoren zu verteilen und wieder einzusammeln.
Deshalb ist es sinnvoll einen guten Kompromiss aus Rechenleistung des
einzelnen Prozessors und Zahl der Prozessoren zu finden, wenn keine
Preis- und Stromverbrauchsaspekte zählen, ist immer der Rechner mit den
schnellsten Einzelnkernen im Vorteil.
Andreas K. schrieb:> Nachtrag: Eine Geforce GTX 480 schafft theroetisch 1345 GFLOPS.
Sie schafft für geeignete Probleme auch in der Praxis extrem viel.
Speed-ups von gegen 1000x gegenüber CPUs sind drin.
Ha-jetzt Aber schrieb:> Anstelle einer Grafikkarte kann man ein FPGA nehmen.
Lohnt sich kaum. Eine GTX 480 in der Geschwindigkeit zu überbieten,
dürfte an sich schon schwer genug sein. Der Aufwand für den Entwurf der
Computerarchitektur und des Boards dürften dann jeden Rahmen sprengen.
Schliesslich käme noch die Entwicklung eines geeigneten PC-Interface
(Hardware, Treiber, Steuerprogramme) und des Compilers dazu.
Guido Körber schrieb:> Parallelität skaliert nicht beliebig
Wenn man bedenkt, dass heutige Supercomputer versuchen, die Natur zu
berechnen, kann man nie genügend Kerne haben, da je weiter man rechnet,
desto mehr Teilchen (oder auf welcher Ebene die rechen) gibt es zu
berechnen.
Samuel K. schrieb:> Wenn man bedenkt, dass heutige Supercomputer versuchen, die Natur zu> berechnen, kann man nie genügend Kerne haben, da je weiter man rechnet,> desto mehr Teilchen (oder auf welcher Ebene die rechen) gibt es zu> berechnen.
Und jedes dieser Teilchen verhält sich völlig unabhängig von den
anderen? Natürlich nicht, und genau da liegt der Hund begraben: Jeder
Kern muss sich dann in jeder Runde mit hunderten, vielleicht tausenden
anderen Kernen austauschen. Und da Speicher heute schon der Flaschenhals
ist, hat es keinen Sinn, mehr Prozessoren zu nehmen, sondern
hauptsächlich die Kommunikation gering zu halten.
Samuel K. schrieb:> Wenn man bedenkt, dass heutige Supercomputer versuchen, die Natur zu> berechnen, kann man nie genügend Kerne haben, da je weiter man rechnet,> desto mehr Teilchen (oder auf welcher Ebene die rechen) gibt es zu> berechnen.
Aber das geht wie inner Firma. Bei 5 Leuten arbeitet jeder davon. Bei 50
Leuten habe nur ein paar davon administrative oder verwaltende
Tätigkeit. Bei zigtausend Leuten dürfte mindestens 1/3 der Belegschaft
nur dafür sorgen, dass die übrigen arbeiten können/wollen/müssen.
Martin schrieb:> 1 Bauarbeiter gräbt ein 1 Loch für einen Zaunpfahl in 10 Minuten. Wie> lange bauchen 30 Bauarbeiter um das Loch zu graben?
10 Minuten = 1 Minute für Schaufel fassen + 1 Minute zum Loch hin laufen
+ 7 Minuten graben + 1 Minute messen, ob das Loch tief genug ist.
Dann komme ich bei 30 Bauarbeitern auf
30 Minuten zum Schaufel fassen (es hat nur immer einer Platz im
Materialschuppen) + 1 Minute zum Loch hin laufen + 15 Sekunden graben
(für punktförmige Bauarbeiter) + 1 Minute messen, ob das Loch tief genug
ist = 32 Minuten 15 Sekunden.
Totale Arbeitszeit über alle Arbeiter: 960 Minuten. Davon unproduktiv:
29 * 30 Minuten beim Warten auf die Schaufel, 29 Minuten beim warten,
bis einer das Loch gemessen hat. Total 899 Minuten.
So ähnlich kann es auch bei parallelen Rechenproblemen enden, wenn man
nicht aufpasst bzw. wenn man zu viele Kerne hat.
ABM Maßnahme:
Ein Mann gräbt ein Loch. Sofort darauf schaufelt ein zweiter Mann das
Loch wieder zu. Fragt ein Passant: "Was macht ihr da für einen
Blödsinn?"
Antwort: "Wir pflanzen Bäume, aber der Mann, der die Bäume sonst in
die Grube stellt ist heute krank!"
;-)
MfG Paul
Nun ja,
aktuell geht viel in die Richtung einfache Kerne in großen Stückzahlen
auf eine Platine zu quetschen, hierbei ist aber nicht das HPC der
Vordergrund, mehr das abarbeiten vieler Proszesse für Cloud Computing.
Vor kurzem Vorgestellt: 2048 Atom-Server in einem Rack
http://www.heise.de/kiosk/archiv/ct/2010/14/32_kiosk
Leider ist der Artikel net frei Verfügbar.