Fersus
Bloody Newbie
|
Hi Leute! Ich bin Statistiker und mir ist mein aktueller Desktop PC eingegangen. Da ich immer wieder mal sehr zeitintensive Optimierungsaufgaben rechne, dachte ich, ich könnte mir als neuen PC einen Build zulegen, der auf diese Art von Berechnungen hin optimiert ist. Ein Arbeitskollege hat mir darauf hin den Tipp gegeben mich diesbezüglich an euch zu wenden. Bisher habe ich nur mit der freien Statistik software R gearbeitet. Diese ist aber extrem langsam weshalb ich vor kurzem begonnen habe ordentliche Programmiersprachen zu lernen. Das Ziel ist, dass ich mir genügend Wissen aneignen kann um meine Berechnungen via OpenCL an eine Grafikkarte aus zu lagern. Aktuell habe ich diesbezüglich aber noch keine Ahnung. Der Plan ist also jetzt einen PC zusammen zu stellen, mit dem ich das erlernen und üben kann, der dann auch mal mehrere Tage durchlaufen kann und ganz passable Performance liefert, ohne dass ich mich gleich mit einem Monster System übernehme. Mein aktueller Build würde so aussehen: System Builder - Ryzen 7 1700X 3.4GHz 8-Core, Radeon RX 580 8GB NITRO+ Special Edition, 200R ATX Mid Tower - PCPartPicker DeutschlandLink: de.pcpartpicker.com Würdet ihr da noch etwas ändern? Preistechnisch möchte ich unter 1500€ bleiben. Ich bin in Bezug auf Elektronik leider ein völliger Noob. Dass eine CPU mit 4 Kernen und 3.4GHz schlechter ist als eine mit 8 und 4GHz merke ich schon selbst, aber technischere Fragen werden schon schwierig. Konkret stellen sich mir folgende Fragen: * Motherboard: ich hab gelesen, dass für scientific computing die I/O Werte besonders wichtig sind. Ist damit die Taktung des Motherboards gemeint? Passt das bei mir oder muss ich da ein teureres nehmen? Ich seh bei den Motherboards irgendwie keine all zu offensichtlichen Unterschiede... * CPU: Wie gesagt: mehr Kerne und schneller ist gut, mehr weiß ich nicht. für meine Anwendungen ist wohl mehr Kerne wichtiger als schnellere Taktung, aber ich seh, bis auf den Preis, kaum einen Unterschied zwischen diesen drei CPUs: AMD FX-8350 AMD - Ryzen 7 1700X 3.4GHz 8-Core Processor AMD Threadripper 1900X Die erste scheint sogar die beste zu sein mit 4Ghz, ist aber die älteste und billigste, also wird das wohl nicht stimmen. Worauf kommt es dann an? * Graka Für die Spiele, die ich sonst so spiele ist die wahrscheinlich total überdimensioniert (Dota, Hearthstone und Starcraft 2 sind die modernsten spiele die ich hab). Bei meinen mathematischen Spielereien sieht`s da schon anders aus: Bei der aktuellen Problemstellung müsste ich 10^16 Möglichkeiten nach der Optimalen Lösung durchsuchen. D.h. ich habe die Grafikkarte gewählt, die mir die meisten GFLOPS pro € für unter 400€ bietet. Ist das die richtige Herangehensweise? * Sonstiges: Hab ich irgend etwas wichtiges übersehen? Ist irgendwas total überflüssig? Habt ihr sonstige Tipps bzgl. scientific computing? Bin euch für jede Hilfe dankbar!
|
MuP
OC Addicted
|
Hey,
bin zwar nicht mit den genauen Notwendigkeiten von OpenCL/R vertraut aber ein paar grundlegende Fragen kann ich dir bestimmt beantworten:
Bei AMD gibt es seit ca. einem halben Jahr Ryzen bzw. Threadripper (etwas neuer) und die sind der FX Reihe um Welten voraus. Solltest also entweder den Ryzen oder den Threadripper (nochmal schneller und wenn es das Budget hergibt, warum nicht?) nehmen. Ob AMD oder Intel Prozessoren für diese Anwendungen besser sind, weiß ich zwar nicht, aber mit den Ryzen/Threadripper machst du bestimmt nichts falsch.
Bzgl. I/O gehe ich davon aus, dass du IOPS meinst, aber was die mit Mainboards zu tun haben sollen, weiß ich nicht. Ich kenne IOPS von Festplatten bzw. SSDs und geben an, wieviele Ein- bzw. Ausgaben pro sekunde getätigt werden können. Festplatten sind hierbei SSDs sehr stark unterlegen und daher würde ich dir zu einer SSD raten. Die beschleunigt den PC nochmal deutlich.
Ob du mehr RAM benötigst oder das Blu-Ray Laufwerk wirklich notwendig ist, kann ich dir nicht sagen, aber ich finde der PC sieht ganz gut aus.
|
Fersus
Bloody Newbie
|
Danke für die Info!
Bzgl. RAM mache ich mir keine all zu großen Sorgen. Das Motherboard verträgt ja bis 64GB, d.h. da würde ich dann bei Bedarf nachrüsten, sollte ich einmal eine Anwendung haben die das braucht.
Beim Motherboard habe ich halt die Befürchtung, dass es ein Bottleneck sein könnte. Wenn ich Berechnungen an die Grafikkarte übergeben will, dann wird wohl der RAM mit der Grafikkarte reden müssen, sprich Daten durchs Motherboard schicken. Muss ich da auf irgendetwas achten? Gibts da eine Kennzahl, die ich nicht ignorieren sollte, oder mach ich mir da völlig umsonst Sorgen?
Und woran erkenne ich bei der CPU, abgesehen vom Alter, dass die neue Generation besser ist? Vorallem zwischen Ryzen und Threadripper erkenne ich nicht mal in den Werten der Caches einen Unterschied?
|
that
Hoffnungsloser Optimist
|
Beim Motherboard habe ich halt die Befürchtung, dass es ein Bottleneck sein könnte. Warum? Was genau hast du zu dem Thema gelesen? Und woran erkenne ich bei der CPU, abgesehen vom Alter, dass die neue Generation besser ist? Vorallem zwischen Ryzen und Threadripper erkenne ich nicht mal in den Werten der Caches einen Unterschied? An Testberichten im Internet. Threadripper besteht vereinfacht gesagt aus zwei zusammengeschalteten Ryzens. Was in deiner Zusammenstellung fehlt, ist eine SSD. Es ist 2017, da willst du keinen PC mir nur einer mechanischer Festplatte. Gute SSDs sind z.B. die von Samsung.
|
Blaues U-boot
blupp, blupp
|
@cpu Ryzen R7 ist eine gute wahl, wenn es um mutlithread anwendungen geht. threadripper macht dann sinn, wenn man mit der zeitersparnis auch geld verdient imho. im grunde ist threadripper eine cpu aus zwei R7 cpus. die FX cpus sind alt und langsam. @ram ich würde mindestens ddr4-2666 nehmen. ryzen liebt höheren ramtakt aber ist sehr zickig bei taktraten über 2666. wenn 16 gb reichen kann hier sicher jemand anderes kits empfehlen die 3200 schaffen sollten. @Motherboard ein B350 mobo passt schon. solange die grafikkarte mit pcie 3 16x angeschlossen ist, kann man zurzeit nichts schnelleres haben zur ram-graka-ram kommunikation. ich würde jedoch kein mATX mobo nehmen sondern ein ATX mobo asus prime b350. das gehäuse muss dann natürlich groß genug sein. falls mehere grakas mit pcie3 16x angeschlossen werden sollen, muss es ein threadripper system werden. @HDD/SSD unbedingt eine ssd einplanen, z.b. samsung 850 oder samsung 960 @grafikkarte die rx580 sollte auch merkbar unter 300€ zu bekommen sein und ist eine gute wahl für open-cl. selbst meine alte hd7950 ist in meinen eigenen open-cl anwendungen schneller als die gtx1060, welche ich extra zum vergleichen mit cuda gekauft habe. die AMD architektur scheint da besser zu laufen. @open cl witzig ist, dass laut meinen tests der intel opencl treiber/plattform mit dem ryzen besser funktioniert als die amd treiber/plattform habe vor ein paar monaten ein paar benchmarks durchgeführt und die ergebnisse in einem doppel-log graph geplottet gemessen wurde die benötigte zeit zum lösen eines partiellen differentialgleichungssystems auf verschiedenen devices/plattformen. Testsystem ist das system in meiner signatur. die schwarze linie ist ein einfacher sequentieller code in C++, die anderen sind parallelisierte codes. die grafikkarten sind dabei um den faktor 100 schneller als der seqeunzielle code und ca faktor 10 schneller als via open cl auf der Ryzen cpu. Anzumerken ist, dass der Testfall sich fast ideal parallelisieren lies und die komplexität linear mit der zustandsdimension zunimmt.
|
Fersus
Bloody Newbie
|
Warum? Was genau hast du zu dem Thema gelesen? In Bezug auf Motherboards habe ich eben nicht wirklich ergiebige Infos gefunden. Da sich die Preise aber z.T. erheblich unterscheiden (MSI B350 PC MATE um 85€, ASUS ROG CROSSSHAIR VI EXTREME um 350€) habe ich die Befürchtung, dass ich irgendetwas übersehe. Oder geht es da wirklich nur um die Anschlüsse? An Testberichten im Internet. Threadripper besteht vereinfacht gesagt aus zwei zusammengeschalteten Ryzens. Ahja, danke! Was in deiner Zusammenstellung fehlt, ist eine SSD. Es ist 2017, da willst du keinen PC mir nur einer mechanischer Festplatte. Gute SSDs sind z.B. die von Samsung. Mir wurde gesagt, dass SSD früher sterben. Oder ist das nur ein Gerücht?
|
that
Hoffnungsloser Optimist
|
In Bezug auf Motherboards habe ich eben nicht wirklich ergiebige Infos gefunden. Da sich die Preise aber z.T. erheblich unterscheiden (MSI B350 PC MATE um 85€, ASUS ROG CROSSSHAIR VI EXTREME um 350€) habe ich die Befürchtung, dass ich irgendetwas übersehe. Oder geht es da wirklich nur um die Anschlüsse? Die Boards haben verschiedene Features. Wenn du diese aber nicht brauchst, kannst du ein günstigeres Board nehmen und es wird dir nichts fehlen. Mir wurde gesagt, dass SSD früher sterben. Oder ist das nur ein Gerücht? Es stimmt, dass Flash-Speicher nicht unendlich oft beschrieben werden kann. Allerdings haben in mehreren Tests immer wieder einige SSDs eine monatelange Dauer-Schreiblast überlebt, die im Normalbetrieb nie vorkommt. Wenn du jeden Tag im Durchschnitt mehr als 100 GB schreiben willst, solltest du auf die garantierte Schreibleistung (TBW - Total Bytes Written) der SSD achten. Generell ist es fahrlässig, von wichtigen Daten kein Backup zu haben, egal ob von SSD oder HDD. Was auch immer du für einen PC kaufst, ohne Backup (z.B. eine externe Festplatte) ist dein PC nicht komplett.
|
Fersus
Bloody Newbie
|
@ram ich würde mindestens ddr4-2666 nehmen. ryzen liebt höheren ramtakt aber ist sehr zickig bei taktraten über 2666. wenn 16 gb reichen kann hier sicher jemand anderes kits empfehlen die 3200 schaffen sollten. Wusste nicht, dass da mehr drinnen ist. Der Konfigurator auf Alternate.at hat gemault, als ich schnellere genommen habe. Danke für den Tipp!! @Motherboard ein B350 mobo passt schon. solange die grafikkarte mit pcie 3 16x angeschlossen ist, kann man zurzeit nichts schnelleres haben zur ram-graka-ram kommunikation.
falls mehere grakas mit pcie3 16x angeschlossen werden sollen, muss es ein threadripper system werden. Threadripper wird mir zu teuer, da kostet ja auch das Mobo schon ~400,-. Danke für den Tipp mit der Bauform! @grafikkarte die rx580 sollte auch merkbar unter 300€ zu bekommen sein und ist eine gute wahl für open-cl. Wunderbar, danke! Anzumerken ist, dass der Testfall sich fast ideal parallelisieren lies und die komplexität linear mit der zustandsdimension zunimmt. Das sollte bei mir auch so sein. Meine Probleme sind meist kombinatorischer Natur. Mein aktuelles Problem muss immer die selbe Berechnung mit allen möglichen Permutationen der Einträge eine Vektors durchführen um raus zu finden, welche der Permutationen eine gewünschte Eigenschaft haben. Ich habe schon einen funktionierenden Algorithmus, der mir aus einem Index die dazugehörige Permutation erzeugt, ohne die davor oder danach kennen zu müssen. Das sollte also für Parallelisierung wunderbar funktionieren...
|
Fersus
Bloody Newbie
|
Die Boards haben verschiedene Features. Wenn du diese aber nicht brauchst, kannst du ein günstigeres Board nehmen und es wird dir nichts fehlen. Ach so. D.h. wenn ich nur will, dass alles so schnell miteinander kommuniziert wie es zurzeit technisch möglich ist, dann reichen die mobos unter 100,- auch. danke! Es stimmt, dass Flash-Speicher nicht unendlich oft beschrieben werden kann. Allerdings haben in mehreren Tests immer wieder einige SSDs eine monatelange Dauer-Schreiblast überlebt, die im Normalbetrieb nie vorkommt. Wenn du jeden Tag im Durchschnitt mehr als 100 GB schreiben willst, solltest du auf die garantierte Schreibleistung (TBW - Total Bytes Written) der SSD achten. so viel wirds wohl nicht werden. Dann werd ich das mal um eine SSD aktualisieren! Generell ist es fahrlässig, von wichtigen Daten kein Backup zu haben, egal ob von SSD oder HDD. Was auch immer du für einen PC kaufst, ohne Backup (z.B. eine externe Festplatte) ist dein PC nicht komplett. Ich hab bereits ein NAS als Multimedia Storage. Da speichere ich auch andere wichtige Daten. Die, die ich auf gar keine Fall verlieren will sind zudem in der Dropbox. Ich hatte die normale HDD nur aus Preis- und Stabilitätsgründen drinnen. Aber wenn die eh keine Probleme machen, dann nehm ich eine SSD fürs Windows und meine "alte" für Daten...
|
Viper780
ModeratorEr ist tot, Jim!
|
Interessant - ich darf beruflich gerade so einen Arbeitsplatz spezifizieren (Software + Anforderung für Hardware) wie du ihn gerade suchst.
Als erstes musst du rausfinden ob dein Code gut parallelisierbar (mehrere Threads/Kerne) ist oder eher von hohem Takt (auf wenigen Kernen) profitiert.
SSD sind mittlerweile "sicher" genug - mach dir da keine Sorgen. Das ist der größte Geschwindigkeitsgewinn der letzten Jahrzehnte in der IT. Unbedingt für so viel als nur möglich verwenden. Wieviele Daten hast du dass die noch auf einer alten, langsamen HDD liegen müssen?
|
Fersus
Bloody Newbie
|
Der Code ist sicher parallelisierbar, das habe ich mit R (der endlos langsamen Statistiksoftware) bereits getestet. Ich habe eine Liste der Zahlen 1-N CD der erste Teil des Codes macht nichts anderes als die ihm zugewiesene Zahl in eine Permutation eines Vektors zu übersetzen. Danach wird nur noch mit dem Vektor gearbeitet. Für die Übersetzung muss ich auf 5 Listen zugreifen, die aber im längsten Fall 200000 Einträge haben, das sollte der RAM der Grafikkarte leicht schaffen...
Auf meiner alten Festplatte befindet sich nichts zeitsensibles: nur die Dropbox, eigene Dateien und meine Spiele. Da ist auch egal, wenn da was passiert, dass lad ich dann halt wieder runter...
Wie sieht denn deine Spezifikation aus?
|
xtrm
social assassin
|
Du hast davon gesprochen, "ordentliche Programmiersprachen zu lernen" - bei denen kommt es dann auf die Sprache und die Implementierung an, ob und wie gut das ganze parallelisierbar ist.
|
Fersus
Bloody Newbie
|
Aktuell lerne ich arbeitsbedingt Java, mit dem System möchte ich mir dann aber etwas C++ und eben dann OpenCL aneignen. Dabei habe ich nicht vor software engineer zu werden, aber genügend wissen um kombinatorische Problemstellungen auf einer Grafikkarte zu rechnen möchte ich mir schon aneignen...
|
Viper780
ModeratorEr ist tot, Jim!
|
Matrizen Operationen sind halt perfekt zu parallelisieren. Die Frage ist ob es die Software auch kann. Es wird ja nicht das Ziel sein dass du die ganzen Solver selbst entwickelst. Der ist meist in C oder Fortran geschrieben und verwendet hoch optimierte Bibliotheken (BLAS, ATLAS, LAPACK, Intel MKL,...)
Ich finde R jetzt nicht langsam, es kommt immer auf die Umsetzung drauf an. Gerade im Modelling und Statistik bereich wirst du von R und/oder Python nicht so schnell weg kommen
Meine Spezifikation beschränkt sich aktuell aufs finden von praktikabler Software und erst im letzten Schritt wird ein Hardware Vorschlag gemacht. So wie es aktuell aussieht wird das aber eher Serverbasiert sein.
Bei der HDD gehts mir nicht um Zeitsensibles sondern um die Größe. Am besten komplett auf SSD umsteigen und wichtige Daten halt weg sichern.
Bei den meisten optimierungsmodellen zahlt sich eine Umsetzung für OpenCL nicht aus, da mit den AVX Instruktionen auf der CPU (aktuell für Intel AVX-512) in einen akzeptablen Zeitraum gerutscht ist. Der Mehraufwand für OpenCL zahlt sich dann nur für sehr Große Systeme aus wo man dann eher Probleme mit der Datenlieferung hat
|
Fersus
Bloody Newbie
|
Ganz auf SSD umsteigen finde ich nicht wirklich sinnvoll. Vom Speicherplatz/Kosten sind die herkömlichen Harddisks ja um einen Faktor 20 besser, und wenn diese für die darauf gelagerten Daten (Multimedia, Dokumente, Spiele) schnell genug sind verstehe ich nicht weshalb ich da eine SSD verwenden sollte. Für's Betriebssystem sehe ich es schon ein, aber für den Datenfriedhof... Ich habe inzwischen auch R-Packages gefunden, die R-Code mittels CUDA/OpenCL an die Grafikkarte schicken. In so fern werde ich mich wohl da zu aller erst einlesen.
|