Paralleles Arbeiten mit  einem Computer Algebra System - Michael Ziegenbalg - E-Book

Paralleles Arbeiten mit einem Computer Algebra System E-Book

Michael Ziegenbalg

0,0
1,49 €

oder
-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Bei der Berechnung mathematischer Methoden ist die Beherrschung und Steuerung paralleler Verarbeitungstechniken ein wichtiges Hilfsmittel, die komplexen und in der Regel auch speicherintensiven Berecunungsverfahren zu beherrschen. Hier bietet Mathematica die besten Vorausetzungen, wie dieser Band hier zeigt. Viel Spaß hier beim Ausprobieren und studieren.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Michael Ziegenbalg

Paralleles Arbeiten mit einem Computer Algebra System

Dieses Buch widme ich meinem bislang jüngsten Enkel EnnoBookRix GmbH & Co. KG80331 München

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.