Welche Multi-/Vielkern-(Mikro-)Prozessoren/Controller sollte ich für "peinlich parallele" Berechnungen verwenden? [geschlossen]

Dies ist meine erste Frage überhaupt auf dieser Seite, also hoffe ich, dass ich das nicht vermassele. :D

Ich werde versuchen, so genau wie möglich zu sein.


Was ich brauche:

  • Etwas, das ich in C (oder einer C-ähnlichen Sprache) programmieren kann.

  • Ich brauche eine Verarbeitungseinheit, die für massiv parallele Berechnungen in einem Array verbunden werden kann.

  • Die Einheit sollte eine Many-/Multi-Core-Architektur haben (32-Bit-RISC ist gut genug) und sowohl die Kerne als auch die Einheiten sollten in der Lage sein, miteinander zu kommunizieren.

  • Alle Einheiten sollten gleichzeitig programmierbar sein. Ich möchte nicht jeden von Hand programmieren.

  • Jeder Kern führt denselben einfachen Algorithmus aus, jedoch mit einer anderen Nonce.

  • Kerne mal Geschwindigkeit dividiert durch Preis sollten so hoch wie möglich sein.

  • Das resultierende Array sollte in der Lage sein, einen Standard-Desktop-Computer in Bezug auf hochparallele Berechnungen um mehrere Größenordnungen zu übertreffen.

  • Die Lösung sollte nicht zu kompliziert sein.

  • Energieeffizienz ist mir egal. Solange es nicht lächerlich viel Strom benötigt (wie ein privates Atomkraftwerk pro CPU), sollte es kein Problem sein.


Wofür brauche ich es:

  • Neuronale Netze und verschiedene andere Implementierungen des maschinellen Lernens

  • Finden von Primzahlen sowie anderen mathematischen Problemen (wie Collatz-Vermutung usw.)

  • Hashing und andere Brute-Force-Anwendungen

  • Unter anderem Parallelprogramme.


Was ich bisher gefunden habe:

  • GPU-beschleunigtes Computing:
    Diese Lösung scheint die beste zu sein, die ich bisher gefunden habe. Mit CUDA & OpenCL kann ich die Hardware-Shader einer GPU als einzelne Kerne verwenden. So wurde früher Bitcoin Mining betrieben.
    Der Vorteil dieses Ansatzes ist, dass Hunderte von Threads gleichzeitig ausgeführt werden können. Es gibt auch viel Online-Support für diese Methode.
    Der Nachteil dieses Ansatzes ist, dass GPU-Shader bei bedingten Verzweigungen schrecklich sind, was mich daran hindert, solche Programme mit vielen verschachtelten Bedingungen zu schreiben.

  • XMOS-Chips
    Einer der ersten IC-Familien, über die ich gestolpert bin und die mir geeignet erschienen, war die xCORE-Produktreihe. Es sind Mikroprozessoren, die relativ billig sind (jeweils ~20 USD) und bis zu 32 Kerne haben können.
    Was etwas abschreckend ist, ist die Tatsache, dass die einzige Geschwindigkeitsangabe in MIPS ist. Wenn Sie sich eine Anschlussanleitung ansehen, verwenden sie einen externen 25-MHz-Quarz. Auch gibt es nicht zu viel Online-Support.

  • Das Parallella Board
    Dies ist ein sehr interessantes kleines Board, das als "Supercomputer in Kreditkartengröße" vermarktet wird. Es läuft ein Derivat von Ubuntu und hat einen Epiphany-III-Coprozessor mit 16 Kernen (glaube ich). Sie sagen, dass es 90 GFLOPS ausführen kann.
    Der Nachteil ist, dass ich mehr Kerne benötige.

  • Epiphany-IV (E64G401)
    Dieser Mikroprozessor scheint perfekt zu sein. Es wird von derselben Firma wie das Parallella-Board hergestellt und verfügt über 64 RISC-Kerne bei satten 800 MHz.
    Der einzige Nachteil ist, dass dieser IC eingestellt wird. :'(

  • Kalray-Prozessoren und PCIe-Karten
    Wieder eine sehr interessante Lösung für paralleles Rechnen, bei der die Prozessoren bis zu 256 Kerne haben. Kalray bietet auch Schulungen zur Verwendung seiner Produkte an.
    Der Nachteil ist, dass man nach einem Preis fragen muss und es scheint, als ob man diese Komponenten nur direkt von ihnen kaufen kann. Außerdem scheint es mir, dass sie sich mehr auf das Netzwerken konzentrieren.

  • FPGAs
    FPGAs sind auch in Betracht gezogen worden, da sie ganze Algorithmen in einzelnen Taktzyklen ausführen können.
    Was ich jedoch suche, ist etwas, das auch sehr große Algorithmen ausführen kann, während FPGAs nicht so viele logische Elemente haben.


Budgettechnisch bin ich sehr flexibel. Sagen wir also 10'000USD.
Ich würde es vorziehen, meine eigene Computer-Array-Platine mit einem von Ihnen empfohlenen IC zu entwerfen, bin jedoch offen für andere Lösungen. Vielleicht habe ich schon die beste Lösung gefunden, aber ich weiß es noch nicht. Was denken Sie, meine Damen und Herren?

Vielen Dank im Voraus!

- Linus


Änderungsprotokoll:

  • Hinzugefügt, dass ich gerne in C programmieren möchte

  • FPGAs hinzugefügt

  • Hinzugefügt, dass ich mich nicht um den Stromverbrauch kümmere

  • Hinzugefügt, dass ich lieber meine eigene Platine machen würde

  • Zusätzliches Budget von 10 000 USD

Falls Sie auch nach Energieeffizienz suchen - was denken Sie über FPGAs mit mehreren Soft-Prozessoren im Inneren? Außerdem können neuronale Netzwerke und Hashing auf FPGA ohne Prozessor durchgeführt werden, wie ich weiß
Ich habe mir auch FPGAs angesehen, aber die sind wirklich teuer und haben zu wenig logische Elemente für meine Bedürfnisse. Aber danke, dass du mich daran erinnerst. Ich werde das schnell zu meiner Frage hinzufügen.
Vor ASICs war der effizienteste Bitcoin-Miner jedoch FPGA (dieselbe Hashing-Aufgabe, die Sie erwähnt haben). Der Preis ist Nachteil, das ist die Wahrheit. GPU wird billiger sein, aber - im Sinne des Stromverbrauchs ist sie weniger effizient.
Das Programmieren von Softcores in C auf FPGAs verfehlt den Sinn von FPGAs gewaltig. Wenn Sie kein Hardwaredesign in VHDL (oder Verilog) lernen möchten, werden Sie nicht das Beste aus ihnen herausholen.
@Looongcat Hmmm ... Ich werde diesbezüglich weitere Nachforschungen anstellen. Danke für den Vorschlag :D. Ich weiß, dass FPGAs für wirklich alle Anwendungen großartig sind, aber ich suche wirklich nach einer Lösung, die speziell auf mein Problem zugeschnitten ist - etwas, das bereits existiert. Ein weiteres Problem mit FPGAs ist, dass es, wenn man keine zusätzliche externe MCU daran angeschlossen hat, den gesamten Code verliert, sobald es ausgeschaltet wird.
Sie haben eine etwas falsche Vorstellung - keine externe MCU, sondern ein externer Konfigurationsspeicher. Wie auch immer, es ist sogar noch teurer als MCU :) Und @brian-drummond hat recht, HDL zu lernen ist eine ernsthafte Herausforderung.
Hardwarerecs Alpha oder Beta ist wahrscheinlich der richtige Ort dafür: hardwarerecs.stackexchange.com
@horta Leider befindet sich diese Seite in der privaten Beta. Ich kann nicht darauf zugreifen. Der Grund, warum ich es in dieses Forum gestellt habe, ist, dass ich darüber nachdenke, es für meine Mechatronik-Diplomarbeit zu verwenden. Ich würde lieber meine eigene CPU-Array-Platine herstellen, bin aber auch offen für andere Lösungen.
Erwischt. Es könnte gut sein, zu beachten, mit welchem ​​​​Budget Sie arbeiten müssen.
10K wird Ihnen wirklich nicht viel Rechenleistung bringen. Server, die in Serverfarmen gehen, können leicht 10.000 pro Stück kosten. Etwas, das Sie nicht aufgeführt haben, ist der Xeon Phis, ein allgemeiner x86-Rechen-Coprozessor, der in einigen Supercomputern verwendet wird.
@ Horta Wow. Der Phi sieht toll aus! Ich werde diesbezüglich noch weiter recherchieren. Das Ganze dient zu Forschungszwecken und auch zum Spaß. Ich habe nicht vor, Nordkorea damit zu hacken. :P Deshalb sagte ich 10k.
Mir kam noch ein Gedanke. Bei großen Mengen an Rechenleistung kann es je nach dem, was Sie tun möchten, kostengünstiger sein, diese Rechenleistung zu mieten. So etwas wie Amazon Web Services. Auf diese Weise können Sie die Energiemenge, die Sie für eine bestimmte Aufgabe benötigen, jederzeit skalieren. Es ist keine Hardware, aber es ist wahrscheinlich der schnellste, einfachste und möglicherweise billigste Weg, um Ihre Ziele zu erreichen, es sei denn, ein Teil Ihres Ziels besteht darin, tatsächlich Hardware zu bauen.
@horta Ich habe diese Option auch in Betracht gezogen, und um ehrlich zu sein, denke ich, dass es das Einfachste sein wird. Ich plane jedoch, es rund um die Uhr laufen zu lassen. Übrigens sieht das Phi fast genau so aus, wie ich es brauche, und der Preis ist auch gut. :D Ich werde aber mehr hineinlesen.
Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da dies eine Computerfrage ist.

Antworten (1)

Baue eine neue Maschine

Die derzeit günstigste Lösung dafür ist wahrscheinlich ein PC mit einer guten GPU. Probieren Sie diese Konfiguration aus, die ziemlich leistungsstark ist, keinen Engpass hat und einigermaßen erschwinglich ist (Maschine mit kleinem Formfaktor):

  • Intel Xeon E3-1231v3 Prozessor (3,4 GHz Quad-Core mit Hyperthreading)
  • Gigabyte GA-B85N-Phoenix Mini-ITX-Mainboard
  • Kingston KVR DDR3-1600 RAM 8GBx2
  • AMD Radeon R9 290X GPU (oder wenn Sie es sich leisten können, R9 295X2)
  • Kingston SSDNow V300 120GB SATA-6Gbps SSD

Oder wenn Sie ein gutes Gaming-Rig haben, verwenden Sie es. Die oben aufgeführte Maschine ist eigentlich ein vorgeschlagenes SFF-Gaming-Rig.

Ein weiteres Rig, verdammt viel teurer, verdammt viel größer, mehr als dreimal so schnell wie das vorherige Rig und immer noch überhaupt kein Engpass:

  • Zwei Intel Xeon E5-2643v3 Prozessoren (3,4 GHz Hexa-Core mit Hyperthreading)
  • Asus Z10PE-D16 WS Mainboard mit zwei Sockeln
  • Kingston KVR DDR4-2133 ECC RAM 16GBx8 (oder wenn Sie es sich leisten können, 16GBx16)
  • Zwei AMD Radeon R9 295X2-Karten in CrossFire-Konfiguration (insgesamt 4 GPUs, und wenn Sie es schaffen, holen Sie sich drei davon)
  • Intel SSD 730-Reihe (PCIe-NVMe-Karte)

Viele alte Systeme wiederverwenden

Auch wenn Sie viele alte PCs für wenig Geld finden können (z. B. verkauft meine Schule ihre über 100 Core 2 Duo-PCs für jeweils 15 US-Dollar, nachdem sie durch neue i5-Maschinen ersetzt wurden), können Sie ein paar Dutzend davon aufpeppen und wegwerfen sie in einen Beowulf-Cluster, wenn Sie wissen, wie man diese Cluster zum Laufen bringt.

Wenn Sie beispielsweise 30 dieser Core 2 Duo-Systeme mit jeweils 512 MB RAM zusammenstellen, erhalten Sie am Ende einen Cluster mit 60 Kernen und 30 GB RAM.

Der Einzelmaschinen-Supercomputer

Wenn Sie eine Sony PlayStation 3 erzielen können, auf der noch Linux ausgeführt werden kann, wird Ihnen dieses Biest sehr helfen können. Übrigens, laut USAF, fügen Sie 1790 davon in einem Beowulf-Cluster zusammen und Sie erhalten einen TOP500-gelisteten Supercomputer.

Vielen Dank für Ihre Antwort. Die PS3-Lösung ist sehr interessant. Außerdem werde ich später mehr auf Beowulf-Cluster eingehen. Ich habe mich bereits mit GPUs befasst, aber wie gesagt, bedingte Verzweigungen sind für GPUs ziemlich schwierig zu berechnen, wie in diesem Artikel zu sehen ist: chipgen.stanford.edu/people/alum/pdf/…
@LinusBrendel Der von Ihnen zitierte Artikel ist mehr als ein Jahrzehnt alt! Neuere Architekturen sind jetzt ganz anders!