Neuer iMac und Parallel Computing

Y

Yucka231

Neues Mitglied
Thread Starter
Dabei seit
09.12.2015
Beiträge
8
Reaktionspunkte
0
Hallo,

ich spiele mit dem Gedanken mir einen iMac anzuschaffen. Motivation ist zum einen der Bildschirm (die Größe), da ich doch häufig meinen 13' MBA als zu klein empfinde. Zum anderen geht es um Rechenleistung, dazu zwei Themengebiete an Fragen:

1) MPI und Hyperthreading:

Ich bin im Bereich des Scientific Computing unterwegs und programmiere Monte Carlo Simulationen für Queueing Theory Probleme. Der Monte Carlo Teil ist sehr einfach parallelisierbar. Aber mich wundert das Verhalten der CPU Auslastung. Ich hätte gedacht, dass ich bei meinem MBA, 1,7GHz Dual Core i7 mit Hyperthreading 4 Prozesse laufen lassen könnte. Effektiv bringen aber nur zwei etwas. Die Auslastung sieht in etwa so aus (Cx - Core x, CxH - Hyperthreading Core):

1 Prozesse: C1: 055%, C1H: 000%, C2: 055%, C2H: 000%, Zeit: 100s
2 Prozesse: C1: 080%, C1H: 025%, C2: 080%, C2H: 025%, Zeit: 60s
4 Prozesse: C1: 100%, C1H: 100%, C2: 100%, C2H: 100%, Zeit: 60s

Also, scheinbar wird ein einzelner Thread bereits auf beide CPUs verteilt, bei zwei Threads kommt dann zusätzlich etwas Hyperthreading hinzu, und bei 4 Threads ist alles ausgelastet, bringt aber nichts.

Ich muss gestehen, dass ich beim Scientific Computing ehr einen Fokus auf die Mathematik habe als auf das Programmieren. Ich nutze Python 2.7 und mpi4py. Warum 1 einzelner thread auf die verschiedenen Kerne verteilt wird, ist mir ein Rätsel. Weiß jemand etwas dazu?

Ich versuche abzuschätzen wie der Performance-Boost mit einem iMac 4.0GHz Quad i7 wäre. Auch dort wären wohl nur 4 und nicht 8 Threads sinnvoll?

2) Grafikkarte beim iMac:

Die late 2015 iMac Preise hängen sehr stark von der verbauten Grafikkarte ab:
iMac 27', 4,0GHz Quad i7, 265 SSD mit:

1. AMD Radeon R9 M390 2GB: 2.780€ (Basis)
2. AMD Radeon R9 M395 2GB: 2.900€ (+120€ ggü. Basis)
3. AMD Radeon R9 M395X 4GB: 3200€ (+420€ ggü. Basis)

Mal abgesehen von dem größeren Speicher zwischen (2) und (3), wie unterscheiden die sich?

Ich habe noch nie mit OpenCL gearbeitet, aber das Thema interessiert mich grundsätzlich. Obwohl meine aktuelle Arbeit davon wohl nicht profitieren würde (meine Probleme der Queueing Theory sind mehr oder weniger nicht vektorisierbar) gibt es wahrscheinlich welche in der Zukunft.

Wenn man die Specs auf AMD vergleicht:
Compare Products

sind die alle drei fast identisch (dort allerdings alle mit 4GB). Angaben zu Compute Units oder ähnliches habe ich nicht gefunden. Worin begründen sich die Preisunterschiede?

Danke im voraus.
Grüße Jan
 
Wenn man beim Programmieren von Threads nicht explizit durch Aufrufen von System-Funktionen erzwingt, daß ein Thread auf einem bestimmten Kern läuft, dann verteilt das System die Threads ständig dynamisch um. Man muß bedenken, daß ja immer noch jede Menge System-Threads laufen und nach jedem Scheduling-Quantum evtl. alle Threads kurz gestoppt werden. Die dynamische Verteilung der Threads auf die Kerne kann auch von der OS X Version abhängen und auch von der thermischen Belastung der Kerne. Details kenne ich aber keine.
 
Okay, habe ich verstanden. Also läuft der Thread normal sequentiell ab, allerdings die Teilstücke mal auf Core1 mal auf Core2 und im mittel ist die Auslastung dann bei 50%/50%.
Bezüglich Hyperthreading habe ich mir mal Wikipedia durchgelesen... Das scheint schöner verkauft zu werden als es ist. Leistungssteigerung im Alltag bei 10% bis 25%, wenn alles gut läuft.
 
HT bringt nur etwas wenn in der Pipeline tatsächlich Lücken sind die genutzt werden können (grob gesagt - die Einzelheiten kenne ich auch nicht). Deshalb gibt es Aufgaben, die davon profitieren können (ich hatte schon +30%) und andere profitieren nicht davon.

Aber mal zu deinen Zahlen, wenn du 4 Prozesse laufen hast benötigen die zum Abschluss 60 Sekunden und bei zwei Prozessen mit je dem gleichen Berechnungsumfang sind es ebenfalls 60 Sekunden? Wäre ja eine Steigerung von 100%! Doppelte Arbeit in der gleichen Zeit.

Edit: Ach Quatsch, MCS, Durchläufe werden ja immer gleich sein nur eben mehr oder weniger parallel.
 
Ja so ist es, auch die Aussage über Hyperthreading. Evl. kann man Hyper-Threading abschalten.
Wenn es für mich nicht zu aufwendig und für Dich von Vorteil wäre, dann kann ich Dir anbieten, Deine Test-App auf einem Mac Pro mit 2 CPUs und insgesamt 8 Kernen (16 mit HyperThreading) laufen zu lassen.
 
  • Gefällt mir
Reaktionen: Yucka231
Ja genau, bei 2 Prozessen berechnet jeder die Hälft des Problems, bei 4 jeder 1/4.
 
@Porschinger
Ui, das ist aber nett von Dir. Aber ich denke das es zu aufwändig für dich/uns wäre.

Ich hatte eigentlich immer gedacht, dass das Hyperthreading quasi über den "Turbo-Boost" des CPU-Taktes einen 100% Leistungsstarken HT-Kern sicherstellt.
Also: Wenn die Lücken in der Pipeline zu klein sind wird z.B. meine 1.7GHz CPU auf 2.5GHz hochgetaktet, sodass sich die 2.5GHz CPU wie eine 1.7GHz CPU mit doppelter Kernzahl verhält. (Falls ihr wisst was ich meine...)

Edit: Beim iMac ist das übertakten ja recht begrenzt: von 4.0 auf 4.2GHz.
 
Übertakten ist etwas anderes als Hyperthreading, daß auch nur so lange läuft, wie die Temperatur der CPU dies zulässt. Hyperthreading ist bei Wikipedia ganz gut beschreiben.
 
Wenn du effektiv und schnell berechnen willst, dann nutzt du nicht die CPU sondern die GPU z.B. per OpenCL
 
@trixi1979

Daher habe ich ja auch meine Frage Nummer (2) gestellt. Ich habe bisher noch nicht mit OpenCL gearbeitet, aber angefangen mich einzulesen. Bin also alles andere als ein Experte. Ich gehe aber stark davon aus, dass meine momentanen Probleme nicht sinnvoll mit OpenCL parallelisierbar sind bzw. von der GPU berechnet werden können. Auf der CPU geht das einfach. Aber wie gesagt, diese aktuellen Aufgabenstellungen gehen vorbei, neue werden kommen, und ich interessiere mich für OpenCL.

Kannst du eine Einschätzung zu den verschiedenen GPUs und deren Preisstruktur geben?
Habe inzwischen herausgefunden, dass:
1. M390 2GB: 2.780€ (Basis) --> 1024 Pipelines @ 958MHz
2. M395 2GB: 2.900€ (+120€ ggü. Basis) --> 1792 Pipelines @ 834MHz
3. M395X 4GB: 3200€ (+420€ ggü. Basis) --> 2048 Pipelines @ 909MHz

Hab eben keine Erfahrung mit GPU programming.
 
Jo, wie schon gesagt wurde, HT bringt nicht allzu viel. Damals beim Pentium 4 war der Nutzen afaik größer aufgrund der sehr langen Pipeline. Ein i7 lohnt sich in der Regel wenn überhaupt wegen seiner höheren Taktrate, nicht wegen HT.

Zur Grafikkarte: Einfach mal hier runterscrollen zum LuxMark-Benchmark. Wenn du deine Berechnungen komplett auf die GPU kriegst sollte die Performance ganz gut proportional dazu sein.
Solang es sich um reine Berechnungen ohne großen Datenmengen handelt sollte der VRAM egal sein.
Allerdings solltest du bedenken, dass die Grafikkartenentwicklung sehr schnell voran schreitet (naja, außer bei AMD im Moment :rolleyes:). Wenn du aktuell keine Verwendung für hohe Performance hast, könntest du genauso gut auch auf ein kleineres Modell (z.B. M390) gehen und damit deine ersten Schritte unternehmen. Wenn du tatsächlich irgendwann dein Projekt auf OpenCL lauffähig hast und von hoher GPU-Leistung profitieren würdest könntest du mit einer externen Desktop(!)-GPU deinen Berechnungen richtig Beine machen.
 
  • Gefällt mir
Reaktionen: Yucka231
@Fl0r!an
Danke für den Tip mit den externen GPUs. Die Seite mit den Benchmarks war auch sehr hilfreich. Dann kann ich jetzt in mich gehen und demnächst entscheiden. Ich denke, ich werde es aber wie von dir vorgeschlagen machen. Jetzt die M390 und dann bei Bedarf eine eGPU.

Grüße
Jan
 
Zurück
Oben Unten