Hallo Leute, ist es eigentlich möglich, mehrere physikalische CPUs zu einer CPU softwareseitig zusammen zu fassen? Uns schwebt da gerade ein Projekt vor, in dem wir gene 8 i.MX ARMs von Freescale zu einem Rechnerverbund zusammen "knüpfen". Würde jeder ARM sein eigenes betriebssystem (Linux) mitbringen wäre schon einiges an Performance durch das OS belegt. Könnte man aber nur ein OS auf 8 ARMs verteilen wäre dies sicherlich sparsamer. Einsatz von FPGAs wäre als Verbund auch kein Problem! Gibt es dafür Beispiele?
Bei allen ARM singlecores die ich kenne ist der system-bus (AHB, AXI, AMBA) leider nicht herausgeführt, das wird nicht bringen was du dir vorstellst. Aber um was gehts denn? Hilft euch openmp.org vielleicht?
Researcher schrieb: > Wie machen die es denn: > http://www.calxeda.com/ http://www.calxeda.com/products/energycore/ecx1000/techspecs So wie damals Inmos bei den Transputern auch. > Uns schwebt da gerade ein Projekt vor, in dem wir gene 8 i.MX ARMs von > Freescale zu einem Rechnerverbund zusammen "knüpfen". Geht's um richtige Rechenleistung (Integer, Fließkomma/SIMD, spezielle Algorithmen) oder nur um die Machbarkeit? > Würde jeder ARM sein eigenes betriebssystem (Linux) mitbringen wäre > schon einiges an Performance durch das OS belegt. Von was/wem? Man muss keine Desktop-Distribution auf so etwas laufen lassen... > Könnte man aber nur ein OS auf 8 ARMs verteilen wäre dies > sicherlich sparsamer. Kommt drauf an, wenn bspw. jede CPU nur einen Task hätte und keine Speicherverwaltung etc. braucht, dann ja, ansonsten nein. > ist es eigentlich möglich, mehrere physikalische CPUs zu einer CPU > softwareseitig zusammen zu fassen? Warum nicht bzw. wie/was soll zusammengefasst werden?
Ich will halt vermeiden, das ich 8 komplette rechner je Board brauche. Wenn ich das ganze "Transputer Like" aufbaue wären es ja eben jeweis 8 komplette Systeme plus "Netzwerk" (wie dies auch immer aussehen mag).
Du kannst auch asymmetrisch fahren. Einer hat das komplette OS drauf, die übrigen nur einen kleinen Hilfskernel. Klappt gut, wenn es um Compute-Cluster geht, deren ziemlich homogene Jobs sowieso zentral gesteuert und verteilt werden. Klappt sehr viel weniger gut, wenn da zig völlig disjunkte Prozesse mit viel I/O laufen, die sich bei diesem Schema durch die häufigen Kernelaufrufe gegenseitig blockieren. In der Frühphase von Hochleistungsrechnern war das nicht selten, der zentrale Rechner war dann beispielsweise ein Standard-Mainframe.
Also eher einen Master der alles (und alles aht) kann und 7 (abgespeckte) Slaves die als "Rechenknecht" sich anbieten. Klingt Okay Fragt sich nurnoch, wie man diese zur Kommunikation bringt. Ethernet würde ich da eher ungerne benutzen, alleine schon wegen dem Stromhunger.
Researcher schrieb: > Fragt sich nurnoch, wie man diese zur Kommunikation bringt. Ethernet > würde ich da eher ungerne benutzen, alleine schon wegen dem Stromhunger. Du schreibst selbst, dass FPGAs in Frage kommen. Damit sollte sich doch problemlos shared Memory realisieren lassen, plus Interruptsystem. Die Slaves kriegen vor dort auch ihren Bootcode und werden vom Master gestartet. Brauchen dann nur noch lokales RAM wg. Performance, sonst nix.
Dann mach Dir auch mal rechtzeitig Gedanken zu Cache Coherence, Multi-Core Interrupt Controller, und wenn Du tatsächlich Deine Hardware zusammengeklebt hast, wie Du das Ding dann noch sinnvoll programmieren willst. Mit vertretbarem Aufwand wirst Du Deine 8 i.MX nicht so einfach zusammenpappen können, um damit was sinnvolles anzustellen. Nimm die 8 Prozessoren und hänge sie über Ethernet an einen Hub und bau Dir einen konventionellen Cluster. Jeder Prozessor hat sein eigenes Linux, und Du programmierst das ganze Ding damit mit MPI. Wenn Du einen ARM Multicore willst schaue Dich bei TI nach den OMAPS um. Oder bei nVidia guckst Du bei Tegra 2/3. Murkser
Das hängt völlig von der Aufgabe ab. Wenn der Cluster für eine bestimmte Aufgabe vorgesehen ist und jeder Slave ohne eigenes Multitasking für eine gewisse Zeit lokal an seinem Häppchen Arbeit rumwerkelt, dann ist die Komplexität sehr überschaubar. Als Ersatz für universelle SMP-Systeme wie in PCs oder Handies/Tablets ist diese Konstruktion hingegen völlig ungeeignet.
Mein Problem ist, das das System mobil, klein/leicht und (el.) Leistungsbegrenzt sein muss! Aktuell laufen die Aufgaben auf einem Core i7 und 2xGPGPU. Aufgaben sind u.A. Objekterkennung aus stereografischen Kamerasystemen sowie kinematische Berechnungen -> und alles in Echtzeit bei fast 400W :(. Das es mit 8 ARMs nicht getan ist ist mir klar, nur ist ein 8er System mit weiteren 8er Boards kaskadierbar, bis man die Performance hat, die man braucht. Wir dachten auch schon daran, uns mit einem (bzw. mehreren) dieser neuronalen Chips zu versorgen http://www.cognimem.com/products/chips-and-modules/CM1K-Chip/index.html
Researcher schrieb: > Mein Problem ist, das das System mobil, klein/leicht und (el.) > Leistungsbegrenzt sein muss! > > Aktuell laufen die Aufgaben auf einem Core i7 und 2xGPGPU. > Aufgaben sind u.A. Objekterkennung aus stereografischen Kamerasystemen > sowie kinematische Berechnungen -> und alles in Echtzeit bei fast 400W Schon mal gerechnet wieviele ARMs benötigt würden um alleine den i7 zu ersetzen? Die GPU des i.MX6 erreicht gerade mal 24 GFlops (single precision), der Cortex-A9 ist so gut wie vernachlässigbar, ein i5-2600K dagegen bis zu 92 GFlops (double precision, LinPack 1)), eine HD 5970 928 GFlops (double precision)... D.h. entweder zieht das ARM-System nachher min. genauso viel Strom (Zaubern können weder ARM, noch Freescale) oder man fängt an zu optimieren von handoptimierter SSE/AVX-Nutzung, über Optimierung der Algorithmen bis hin zu FPGA-Implementierungen) > Das es mit 8 ARMs nicht getan ist ist mir klar, nur ist ein 8er System > mit weiteren 8er Boards kaskadierbar, bis man die Performance hat, die > man braucht. Overhead durch das u.U. nötige kopieren und warten auf Daten miteinbezogen? > Wir dachten auch schon daran, uns mit einem (bzw. mehreren) dieser > neuronalen Chips zu versorgen > http://www.cognimem.com/products/chips-and-modules/CM1K-Chip/index.html 1) http://ht4u.net/reviews/2011/intel_sandy_bridge_sockel_1155_quadcore/index18.php (AVX optimiert 92 GFlops, ansonsten nur die hälfte)
i7 + 2x GPU ersetzen wollen... da seid ihr bei ARM aber komplett an der falschen Adresse wenn das tatsächlich benötigt wird. Schau Dir mal die AMD Fusion Teile an - die haben GPU und CPU integriert und etwas mehr power als die ARM basierten SoCs. So ein E-350 z.B. hat ne 18W TDP. Damit Du das mal besser einordnen kannst: http://www.tomshardware.de/charts/desktop-cpu-charts-2010/Raw-Performance-SiSoftware-Sandra-2010-Pro-GFLOPS,2409.html Da gaaanz unten isser.
Ich habe nie gesagt, das die bisherige Hardware voll ausgelastet ist, oder? Nur das sie viel zu Leistungshungrig ist! Die GPGPUs werden benutzt, da die Tasks "Unix Like" in ihre kleinste Einheit unterteilt wurde und so enorm viele single Threads unterteilt wurden. Der Core i7 ist mehr oder weniger nur der Host für das OS und der Datensammler der Peripherie!
Hallo, wenn ich das hier so verfolge, stellt sich für mich nicht die Frage wer, was, wo rechnet, sondern wie die Daten schnell genug von A nach B kommen. Wie verteilt z.B. ein Master die Daten schnell genug auf die "Worker-Units" und wie erhält er schnell genug die Ergebnisse? In einem System wie zwischen CPU und GPU ist enorme Bandbreite vorhanden, doch wie wäre es zwischen den i-MX's in einem Cluster. Bei den Calxeda EnergyCore z.B. werden, soweit ich weiß, auf einer Karte von HP (Redstone) 10Gbit-Verbindungen von SoC zu SoC verwendet aber was haben die i.MX da alternativ zu bieten? Mein Vorschlag wären z.B. FPGA-SoC von Altera oder Xilinx. Die haben schnelle serielle Tranceiver-Hardware mit der man eine Kommunikation zu den anderen SoC's aufbauen könnte innerhalb eines Clusters und zwischen den Clustern hätte man 2 mal Gigabit-Ethernet. Die zwei Cortex-A9 Kerne helfen schon mal beim Rechnen und die FPGA-Fabric auf den SoC kann evtl. auch noch für bestimmte Auswertungen mit einbezogen werden um eine weitere Beschleunigung zu erhalten. Linux sollte ( bei Altera schon im Simulator zu sehen) auch auf den Teilen laufen. Ist natürlich wieder nur ein Ansatz von möglichen vielen. Gruß Microman
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.