Cover

Paralleles Arbeiten in Mathematica

 Am besten arbeitet man in Mathematica mit der automatischen Parallelisierung:

Wie diese funktioniert wird im Nachfolgenden Abschnitt beschrieben.

 

Automatische Parallelisierung

 

Parallelisieren[Cmd[Liste,Argumente… ]] erkennt die Wolfram Sprache Funktion, wenn cmd eine Wolfram Sprache Funktion ist. Das cmd arbeitet auf einer Liste oder einem anderen langen Ausdruck in einer Weise, die einfach zu parallelisieren ist und führt die Parallelisierung automatisch durch.

 

In[5]:=

 

Out[ 5]=

In[6]:=

 

Out[ 6]=

 

In[7]:=

 

Out[ 7]=

 

 

Nicht alle Anwendungen können von diesem Befehlen parallelisiert werden. Es wird eine Meldung erzeugt und die

Auswertung erfolgt nacheinander auf dem Master Kernel falls erforderlich.

 

In[8]:=

 

t[ 8]=

 

Parallelisieren

 

Diese Funktion wird nicht unterstützt für die Cloud.

 

Parallelize[Expr

 

Wertet expr mit Hilfe der automatischen  Parallelisierung.

 

Details and OptionsDetails and Options

 

  • Parallelize[Expr] verteilt automatisch verschiedene Teile der Auswertung von Ausdruck  zwischen den verschiedenen verfügbaren Kerneln  und Prozessoren.

  • Parallelize[Expr] normalerweise gibt das gleiche Ergebnis wie bewerten expr ,außer für Nebenwirkungen während der Berechnung.

  • Parallelize Attribute besitzt HoldFirst, so dass Ausdrücke werden nicht ausgewertet, bevor Parallelisierung.

  • Die Option für Method Parallelize die Parallelisierung Methode zu verwenden. Mögliche Einstellungen:

  •  

     

    "CoarsestGrained"

  • Die Berechnung in so viele Teile wie es t verfügbare Kernel gibt 

     

    "FinestGrained"

    Brechen die Berechnung in den kleinsten möglichen Untereinheiten

     

    "EvaluationsPerKernel" ->e

    Die Berechnung in e  Stücken pro Kernel

     

    "ItemsPerEvaluation" ->m

    Brechen die Berechnung in Bewertungen von höchstens m  Untereinheiten  für jeden Kernel

     

    Automatic

  •  

    Kompromiss zwischen Aufwand und Lastausgleich

  • Methode- > "CoarsestGrained" eignet sich für Berechnungen mit vielen Untereinheiten, die alle die gleiche Menge von Zeit. Es minimiert Aufwand, bringt jedoch keinen Lastenausgleich.

  • Methode- > "FinestGrained" eignet sich für Berechnungen mit nur wenigen Bausteinen deren Bewertungen nehmen sie unterschiedliche Zeiten. Es führt zu höheren Aufwand, sondern maximiert die l oad balancing.

  • Die Option für DistributedContexts Parallelize gibt an, welche Symbole in expr  haben ihre Definitionen automatisch verteilt auf alle verfügbaren Kerneln vor der Berechnung.

  • Der Standardwert ist DistributedContexts:>$Context, das vertreibt Definitionen der einzelnen Symbole in den aktuellen Rahmen, aber es  verteilt nicht die Definitionen der Symbole auf die einzelnen Kernel. 

 

Basic Examples  

 

Eine Funktion in parallel:

 

In[1]:=

 

Out[ 1]=

 

Erzeugen Sie eine Tabelle in parallel:

 

In[1]:=

 

Out[ 1]=

Definierten Funktionen interaktiv können sofort parallel verwendet werden:

 

In[1]:=

 

In[2]:=

 

Out[ 2]=

 

 

Suche nach Mersenne Primzahlen:

 

In[1]:=

 

Out[ 1]=

Sehen Sie sich die Ergebnisse angezeigt werden, wenn sie gefunden werden:

 

In[2]:=

 

In[3]:=

 

Out[ 3]=

 

Berechnung einer ganzen Tabelle der Visualisierungen: 

 

In[1]:=

 

Out[ 1]=

In[2]:=

 

In[3]:=

 

Out[ 3]=

Suche eine Reihe parallel für lokale Minima:

In[1]:=

 

Out[ 1]=

Die beste Route zu wählen:

 

In[2]:=

 

Out[ 2]=

Verwenden Sie eine freigegebene Funktion zum Aufzeichnen der Ergebnisse, wie sie generiert werden:

In[1]:=

Eine dynamische Balkendiagramme mit der Messergebnisse:

In[2]:=

 

Out[ 2]=

 

Führen Sie eine Reihe von Berechnungen mit unterschiedlichen Laufzeiten:

 

In[3]:=

 

Out[ 3]=

 

 

Anzeige nicht triviale Automaten in der sie gefunden werden:

 

In[1]:=

 

Out[ 1]=

 

 

ParallelDo

Diese Funktion wird nicht unterstützt für die Cloud.

ParallelDo[Expr,{i max}]
Wertet expr in parallele Zeiten. 

 

ParallelDo[Expr,{i , imax}]

Wertet expr in parallele mit der Variable, die ich  nacheinander auf die Werte 1 bis (in Schritten von 1). 

 

ParallelDo[Expr,{i , imin,i max}] 
Beginnt mit 

ParallelDo[Expr,{i , imin,i max, di}]

 

Verwendet  di  Schritte . 

 

ParallelDo[Expr,{i{i 1 , i 2 ,... }}] 

 

Verwendet die aufeinanderfolgenden Werte , ,   ….

ParallelDo[Expr,{i , imini max} ,{ j, jminjmax},...]


Wertet expr   Schleifen parallel über verschiedene Werte von j ,etc. für die einzelnen i  aus.

 

Details and OptionsDetails and Options

 

  • ParallelDo Eine parallele Version des Do , dass verteilt automatisch unterschiedliche Bewertungen von

  • expr  unter verschiedenen Kernel und Prozessoren.

  • Wenn Nebenwirkungen auftreten die gemeinsam genutzten Variablen, sie werden im Allgemeinen anders

  • funktioniert als in Do.

  • Parallelize[Do[Expr ,iter-...]] ist äquivalent zu ParallelDo[expr ,iter ,...] .

  • ParallelDo Dauert die gleiche Option Method wie Parallelize.

  • ParallelDo Dauert die gleiche Option DistributedContexts wie ParallelTable.

 

ParallelDo Funktioniert wie Do, aber  parallel: 

In[1]:=

 

Out[ 1]=

In[2]:=

 

Out[ 2]=

 

Es werden keine Ergebnisse zurückgegeben ParallelDo:

 

In[1]:=

 

Verwenden Sie eine freigegebene Variable zur Kommunikation mit den Ergebnissen, die berechnet wurden  für den Master Kernel:

 

In[1]:=

 

In[2]:=

 

Out[ 2]=

  • Erzeugen einer Reihe von Animation-Frames und speichert diese in einzelne Dateien:

     

  • In[1]:=

  • Import alle 5 Dateien und zeigt diese dann an:

     

  • In[2]:=

  •  

    Out[ 2]=

    In[3]:=

  •  

    Out[ 3]=

     

 

Im Nachfolgendem zeigen wir die Nützlichkeit und den Sinn , sich über die Möglichkeiten seiner Kernel zu informieren. 

 

Messen Sie die Beschleunigung der Berechnung bei gleichen Berechnungen mit einer unterschiedlichen Anzahl von Kerneln.  Verwende n Sie hierzu nachfolgenden Mathematica-Befehl aus der Mathematica-Sprache:

 

In[1]:=

 

Out[ 1]=

 

 

$KernelCount

Diese Funktion wird nicht unterstützt für die Cloud.

 

$KernelCount 

 

Gibt die Anzahl der Subkernels verfügbar für parallele  Berechnungen.

 

Details

 

  • $KernelCount Ist äquivalent zu Length[Kernels[ ]].

  • Bei einer Auswertung  eines Subkernels  eines bestimmten Masterkernel, $ gibt KernelCount  die Zahl der Subkernels, die  zur Verfügung stehen  um den Master Kernel herum.

 

In[1]:=

 

Out[ 1]=

In[2]:=

 

Out[ 2]=

 

LaunchKernels  CloseKernels  $ProcessorCount

 

Führen Sie eine Suche nach einer random prime auf jeden Parallelen Kernel aus:

 

In[1]:=

 

Out[ 1]=

 

 

Kernels

 

Diese Funktion wird nicht unterstützt für die Cloud.

 

Kernels[] 

 

Gibt die Liste der ausgeführten Kernel verfügbar für Parallel Computing.

 

Details

 

  • Auf einem multi-core -computer werden Kernel  normalerweise automatisch gestartet, wenn Bedarf für eine parallele Berechnung existiert.

  • Alle verfügbaren Kernel sind standardmäßig für alle parallelen Berechnungen gleichgewichtig.

 

 

Die Liste der derzeit parallel laufenden Kernels:

 

In[1]:=

 

Out[ 1]=

 

Erinnern Sie sich an die Liste der laufenden Kernels:

 

In[1]:=

 

Out[ 1]=

 

Schließen Sie alle Kernels:

 

In[2]:=

 

Out[ 2]=

 

Starten Sie Kopien der zuvor ausgeführten Kernels:

 

In[3]:=

 

Out[ 3]=

 

$KernelCount

Diese Funktion wird nicht unterstützt für die Cloud.

 

$KernelCount 

 

Gibt die Anzahl der Subkernels an, die verfügbar für parallele  Berechnungen. sind

 

  • $KernelCount Ist äquivalent zu Length[Kernels[ ]].

  • Bei der Auswertung in einem Subkernel von einem bestimmten Master  kernel gibt

  •  $KernelCount   gibt die Zahl der Subkernels  an die für parallele Brechnunngen zur Verfügung stehen, um den Master Kerne zu entlastenl.

 

In[1]:=

 

Out[ 1]=

In[2]:=

 

Out[ 2]=

 

 

Kernels 

 LaunchKernels  CloseKernels  $ProcessorCount

 

 

$ProcessorCount

Diese Funktion wird nicht unterstützt für die Cloud.

 

$ProcessorCount

 

Gibt die Anzahl der CPU-Kerne  zur Verfügung stehen auf dem Computersystem, auf dem das Wolfram System ausgeführt wird.

 

Details

 

  • $ProcessorCount Verwendet wird und die anderen Parallelize parallel laufenden Funktionen.

 

 

In[1]:=

 

Out[ 1]=

$KernelCount 

     LaunchKernels

 

 

Standardmäßig, wie viele parallele Kernel gestartet werden als  Prozessorkerne:

 

In[1]:=

 

Out[ 1]=

In[2]:=

 

Out[ 2]=

 

In[3]:=

 

Out[ 3]=

 

Sie können $ProcessorCount in einer neuen Sitzung  simulieren als einen multi-core -Computer:

 

In[1]:=

 

In[2]:=

 

Out[ 2]=

 

 

 

$KernelCount 

 

     LaunchKernels

 

 

$ProcessorType

 

$ProcessorType


Ist eine Zeichenfolge, die Architektur des Prozessors auf dem  Wolfram System ausgeführt wird. 

 

Details

 

  • Typische Werte sind und .  

  • $ProcessorType Gibt den grundlegenden Anweisungssatz an, der durch die CPU Ihres Computers verwendet wird. Computer, die trotz des gleichen $ProcessorType möglicherweise nicht binär kompatibel sind. 

 

In[1]:=

 

Out[ 1]=

siehe auch

 

$ProcessorCount 

 

 

 

$Maschinentype

 

$MachineType

 

Ist eine Zeichenfolge, der allgemeine Art, wie sie auf  dem Computer verwendet wird, auf dem das Wolfram System Mathematica ausgeführt wird. 

 

  • $Maschinentype Ist bestimmt auf die allgemeine Familien von Hardware-  und nicht nur auf bestimmte Modelle eingeschränkten Computers, die zu den gleichen $MachineType möglicherweise nicht binär kompatibel sind.

 

In[1]:=

 

Out[ 1]=

 

 

$Betriebssystem

 

$OperatingSystem


Ist eine Zeichenfolge, die die Art von Betriebssystem angibt, unter dem  das Wolfram System Mathematica ausgeführt wird.

 

Details

 

  • Typische Werte für $OperatingSystem sind: , und .    

  • Sie verwenden  $OperatingSystem um eine Vorstellung davon zu bekommen, welche externen Befehle  Sie im Wolfram System Mathematica verwenden können. 

  • $Betriebssystem Hat in der Regel den gleichen Wert für verschiedene Versionen und Varianten von einem bestimmten Betriebssystem, es wird also nicht Windows 7 von Windoes 8 unterschieden . 

 

Programmgesteuert ermitteln das Host Betriebssystem:

 

In[1]:=

 

Out[ 1]=

 

$System

 

$System

 

Ist eine Zeichenkette, die den Typ des  Computersystem angibts, auf dem das  Wolfram System Mathematica ausgeführt wird. 

 

 

  • $System Typischerweise besteht aus Worten durch Leerzeichen getrennt.  Typische Werte sind:

  •  

  •    

  • $SystemID Bietet eine kürzere Version  der gleichen grundlegenden Informationen. 

 

In[1]:=

 

Out[ 1]=

Top 

 

 

 

$SystemID

 

$SystemID

 

Ist eine kurze Zeichenfolge, die den Typ des Computersystems angibt, auf dem das  Wolfram System Mathematica ausgeführt wird. 

 

 

  • Computer Systeme mit der gleichen $SystemID sollten Binär-kompatibel sein , so dass die gleiche externe Programme und .mx-Datei verwendet werden können. 

  • Manchmal kann die  binäre Kompatibilität nur dann vorliegen, wenn die gleiche Version  des Betriebssystems verwendet wird. 

  • $SystemID wird verwendet bei der Benennung, wenn Verzeichnisse generiert werden und DumpSave verwendet wird  

  • Werte für $SystemID sind nur alphanumerische Zeichen und Bindestriche. 

  • Typische Werte sind: , unter anderem:   

 

In[1]:=

 

Out[ 1]=

$System

 

 

 

$Version

 

$Version

 

Ist eine Zeichenfolge  , die die Version der  Wolfram Sprache Mathematica, welche  im  Kernel ausgeführt wird, angibt . 

 

In[1]:=

 

Out[ 1]=

 

$VersionNumber

 

$VersionNumber

 

Ist eine reelle Zahl, die dien  aktuellen Wolfram Sprache Kernel version number von Mathematica  angibt und sie steigt in den nachfolgenden Versionen. 

 

 

  • Um herauszufinden, ob sie unter Version 6 oder höher, können Sie die Tests TrueQ[$Versionsnummer> =6,0 ] . 

  • Eine Version mit einer bestimmten Anzahl wird in der Regel aus dem gleichen Quellcode auf  allen Computersystemen realisiert. 

 

Anzeige der Versionsnummer:

 

In[1]:=

 

Out[ 1]=

 

Definieren Sie eine Funktion, die mit einer neueren Funktion in neueren Versionen: kompatibel ist

 

In[1]:=

 

In[2]:=

 

Out[ 2]=

 

 

 

$Version 

Impressum

Verlag: BookRix GmbH & Co. KG

Tag der Veröffentlichung: 04.04.2017
ISBN: 978-3-7438-0614-6

Alle Rechte vorbehalten

Widmung:
Dieses Buch widme ich meinem bislang jüngsten Enkel Enno

Nächste Seite
Seite 1 /