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
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