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
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):
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:
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.
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.
Looongcat
Linus Brendel
Looongcat
user_1818839
Linus Brendel
Looongcat
horta
Linus Brendel
horta
horta
Linus Brendel
horta
Linus Brendel
Scott Seidmann