10'2012: Neue Kommandos: wip, qparams common
Zum Rechnen auf der Athene benötigt man
Bitte stellen Sie einen Antrag auf Clusterbenutzung im Rechenzentrum. Ihr normaler NDS-Account wird nach Genehmnigung auf die Athene übertragen.
Ein elektronisches Antragsformular finden Sie in
http://www-cgi.uni-regensburg.de/RZ/Dienste/Linux/HPC/index.phtml
Der sog. Loginknoten ist Athene1; zum Arbeiten an der Athene müssen Sie sich dort einloggen. Als Account wird Ihr normaler NDS-Account verwendet. Beispiel mit ssh unter Linux:
ssh bbbxxxx@athene1 (aus dem Intranet)
Eine direkte Einwahl aus dem Internet ist verboten; Sie müssen von einem Rechner aus dem Intranet kommen. Für Studenten ist das vorzugsweise rex1, für wissenschaftliche Mitarbeiter rex2:
ssh bbbxxxx@rex1.rz.uni-regensburg.de
Bildschirmprotokoll:
(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/ssh.txt)
Es stehen mehrere Werkzeuge zur Programmentwicklung zur Verfügung. Um sie benutzen zu können, müssen diverse Umgebungsvariable gesetzt werden. Das kann direkt geschehen, wenn Sie sich auskennen oder mit dem module-System automatisiert erfolgen.
In jedem Fall wird ein Compiler benötigt. Derzeit sind zwei Hersteller (FSF/Gnu, Intel), drei Sprachen (Fortran, C, C++) und ihre Versionsvarianten (Intel 10, Intel 11, gnu 4.1, gnu 4.4) verfügbar.
| Hersteller | Aufruf | Sprache | Compiler | Version (Stand Oktober 2009) |
| FSF/Gnu | gfortran | Fortran | gfortran | 4.1.2, 4.4.1 |
| FSF/Gnu | gcc | C | gcc | 4.1.2, 4.4 |
| FSF/Gnu | g++ | C++ | g++ | 4.1.2, 4.4.1 |
| Intel | ifort | Fortran | ifort | 10.0, 11.0 |
| Intel | icc | C | icc | 10.0, 11.0 |
| Intel | icpc | C++ | icpc | 10.0, 11.0 |
Über den aktuellen Stand können Sie sich jederzeit mit dem Kommando module avail informieren.
Die wichtigste Parallelbibliothek ist MPI, die auf der Athene in derzeit drei Varianten vorliegt.
| MPI-Bibliothek | Beschreibung | Webseite für weitere Informationen |
| Parastation MPI | MPICH für Infiniband | |
| MVAPICH2 | MPICH2 für IB mit VAPI | http://mvapich.cse.ohio-state.edu/ |
| Intel MPI (impi) |
Die vierte Variante openMPI ist derzeit nur für den internen Gebrauch vorgesehen.
http://modules.sourceforge.net/
module ist ein Alias für die folgende Kommandofolge mit dem Kommandokern /usr/bin/modulecmd
(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/modalias.txt)
Die häufigsten module-Kommandos sind:
module avail (Welche Module existieren?)
Manche Module schließen sich wechselseitig aus. Beim Wechsel muss dann vorher das alte Modul erst entfernt werden.
| Module-Argument | ||
| dot | GraphViz: Tool zur Erzeugung von Graphen | |
| gcc-4.4 | Gnu Compiler Collection 4.4 (C/C++/Fortran unterstützt OpenMP V3) | |
| impi-gcc | impi übersetzt mit gcc | |
| impi-intel | impi übersetzt mit icc | |
| intel-10.0-icc | Intel icc 10.0 | |
| intel-10.0-ifort | Intel ifort 10.0 | |
| intel-11.0 | Intel icc/ifort 11.0 | |
| module-cvs | ||
| module-info | ||
| modules | ||
| mvapich2-gcc | MVAPICH2 übersetzt mit gcc | |
| mvapich2-intel | MVAPICH2 übersetzt mit icc | |
| null | ||
| parastation-gcc | Parastation MPI übersetzt mit gcc | |
| parastation-intel | Parastation MPI übersetzt mit icc | |
| use.own |
Zu OpenMP siehe http://sites.google.com/site/gfortransite/
Zu gfortran siehe http://gcc.gnu.org/wiki/GFortran
Die Übersetzung normaler Programme und ihr Start sollte Linux-Kundigen keine Probleme bereiten. Nur die zusätzliche Verwendung paralleler Bibliotheken wie MPI erfordert Änderungen bei der gewohnten Bedienung.
In diesen Schnelleinstieg wird nur die Kombination FSF/Gnu mit Parastation-MPI beschrieben. Andere Kombinationen lesen Sie bitte in der ausführlicheren Dokumentation weiter unten nach.
Wir verwenden ein Hello-World-Programm mit MPI:
(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/helmpi.c)
Es wird mit gcc übersetzt, anschließend wird Parastation-MPI anmontiert. Wie das folgende Beispiel zeigt, sind trotz des Wrappers mpicc die normalen Compiler-Optionen erlaubt. Natürlich müssen Sie ein Programm nur einmal übersetzen. Die bei der Option Wall erscheinende Warnung in mpi.h kann ignoriert werden.
module load parastation-gcc
Die C++-Variante lautet:
(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/helmpi.cc)
Es wird mit g++ übersetzt, anschließend wird Parastation-MPI anmontiert. Wie das folgende Beispiel zeigt, sind trotz des Wrappers mpicxx die normalen Compiler-Optionen erlaubt. Natürlich müssen Sie ein Programm nur einmal übersetzen. Die bei der Option Wall erscheinende Warnung in mpi.h kann ignoriert werden.
module load parastation-gcc
Das übersetzte Programm sollte normalerweise als Batchjob zur parallelen Ausführung auf den Knotenrechnern gestartet werden. Dazu wird Torque verwendet. Es ermöglicht sowohl einen interaktiven Start von Jobs (z.B. zum Debuggen) als auch den Start von Batch-Jobs. Torque ist aus dem älteren OpenPBS hervorgegangen. Deshalb taucht das Kürzel PBS in den Submit-Scripts auf. Der Scheduler heißt Maui.
Beschreibung:
http://www.clusterresources.com/pages/resources/documentation.php
Der Batchjob wird in einem modifizierten Shell-Script, einem sog. PBS-Script aufgerufen. Als Script-Prozessor eignen sich alle Linux-Script-Prozessoren (bash, csh, sh,...).
(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/batch.sh)
Mit der ersten Pseudokommentarzeile (Shebang #!/bin/bash) wird bash zur Ausführung gestartet. Die folgenden PBS-Direktiven (#PBS directive) sind mit dem Schlüsselwort PBS als Direktiven gekennzeichnet. Zeile 2 fordert 4 Knotenrechner (nodes) mit je 8 CPUs (ppn - processors per node, cores), also insgesamt 32 Cores an. Zeile 3 stellt eine maximale Verweilzeit (walltime - Wanduhr) des Jobs von 1 Minute ein. Verweilt der Job länger als die hier angegebene Zeit im System, wird er automatisch abgebrochen. Kleine Werte führen andereseits zu einem früheren Jobstart als größere. Wählen Sie also die Werte nach dem Prinzip so klein wie möglich, so groß wie nötig, vielleicht mit einem moderaten Sicherheitszuschlag nach oben. Diese Angabe wird also vom Batchsystem verwendet, um den Zeitpunkt des Jobstarts zu bestimmen und um zu lange (möglicherweise fehlerhafte) Jobs wieder zu entfernen. Der folgende Kommentar in Zeile 5 begrenzt die Rechenzeit (cput - CPU Time pro Core) auf 1 Minute. Dieser Wert kann angegeben werden, spielt jedoch keine Rolle, da er vom Batchsystem nicht verwendet wird. Der Rest der Datei besteht aus normalen Shellscript-Kommandos. Das cd-Kommando wechselt vom möglicherweise falschen Verzeichnis ${HOME} in das Verzeichnis ${PBS_O_WORKDIR}, aus dem das PBS-Script aufgerufen wurde. Hier werden auch die Resultate gespeichert. Das letzte Kommando mpiexec startet das Programm in der Datei hp auf 32 Cores (die Datei hp wurde wie in der letzten Übersetzung weiter oben erstellt).
Der Job wird mit dem Kommando
qsub batch.sh
in die Queue gestellt und abgearbeitet, sobald genügend Knoten frei geworden sind und der Job unter allen mit ihm konkurrierenden die höchste Priorität bekommen hat.
Auch im qsub-Kommando können begrenzende Limits als Option wie im PBS-Script selbst angegeben werden. Im folgenden Beispiel wird mit der Option -l (limit) die maximale walltime begrenzt. Von mehreren konkurrierenden Angaben gilt zunächst die qsub-Angabe, dann die PBS-Angabe und zuletzt die Voreinstellung.
qsub -l walltime=2:0:0 batch.sh (beim Start)
Mit dieser Beispiel-Option wird die maximale Verweilzeit (walltime) auf 2 Stunden begrenzt. Begrenzung der CPU-Zeit (cput) hat keine Wirkung.
Über den Status von Jobs, Queues und Server gibt das Kommando qstat Auskunft.
qstat
Versehentlich gestartete Jobs können mit qdel wieder gelöscht werden:
qdel job-id
Nach dem normalen Ende eines Jobs werden die nach stdout und stderr geschriebenen Programmergebnisse in zwei Dateien geschrieben, deren Namen mit dem PBS-Scriptnamen beginnen und die Jobnummer enthalten. Im Beispiel sind das
(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/eofiles.txt)
Ein interaktiver Job wird gestartet mit
qsub -I
Queue-Übersicht (Jan'2011):
common
Abnahme: 26.2.2009
Testbetrieb: Februar 2009
Einweihung: 29.4.2009
Inbetriebnahme: 1.4.2009
In der veralteten und zu groben Taxonomie nach Flynn ist die Athene als MIMD-Architektur aufgebaut. Die Struktur des gesamten Clusters ist eine Distributed Memory Architektur. Jeder Knoten hat seinen eigenen Speicher, die Kommunikation erfolgt über eines der beiden Netze (Infiniband, GigE). Jeder einzelne Knoten verfügt über zwei Prozessoren mit je eigenem Speicher, der jedoch prinzipiell von beiden Prozessoren genutzt werden kann, also eine ccNUMA-Architektur. Jeder der beiden Prozessoren besteht aus vier Rechnerkernen mit gemeinsamem Speicher, bildet also eine SMP-Architektur.
Bei der Erstinstallation war der Cluster fast homogen. Bei Erweiterungen kann diese Homogenität nicht erhalten bleiben.
Node 1-122 (Infiniband), 122 Typ O1
Node 785-797 (Gigabit Ethernet), 13 Typ X1
Zusammen 220 Knoten, 402 × Quadcore-CPUs, 38 × Hexacore-CPUs und 1836 Cores (1504 Opteron, 104+228 Xeon).
Gesamtspeicher: 4352 GiB (Damit kann grob im gesamten Cluster eine dichte n×n-Matrix, n=700000 gespeichert werden. Die Größenordnung der Rechenzeit für eine Gausselimination bei dieser Matrix ist bei 220 Knoten = 1760 Cores mit 2 GHz rechnerisch mindestens t=20 h.)
Nicht jeder node ist allgemein verfügbar.
default.nodes = 1:ppn = 1 (serial queue)
default.pmem = 2 GiB (common32)
max.walltime = 5:00 h (express)
max.walltime = 0:10 h (develop)
Aktuelle Angaben mit qstat -q und qstat -Q erfragen!
Gigabit Ethernet (Broadcom Corporation NetXtreme Gigabit Ethernet PCI Express (rev 21))
Infiniband (DDR 4x, 20 GBit/s, InfiniBand: Mellanox Technologies MT25204 [InfiniHost III Lx HCA] (rev 20))
Zwei unabhängige Netze, die beide für Message Passing verwendet werden können. Das Ethernet wird eher für Verwaltungszwecke, Infiniband eher für Message Passing eingesetzt. Message Passing mit Ethernet bremst Programme um einen Faktor von etwa 8.
Athene4
Zwei NFS-Server für die Dateisysteme $HOME (quotiert, 3GiB/15000 files), /scratch und /data.
Derzeit existiert kein paralleles Filesystem.
/tmp kann auch für lokale temporäre Daten verwendet werden; ist bei verteilter Anwendung mit vielen Knoten unter Umständen schneller als /scratch.
Achtung: Es ist unfair und wird überwacht, ob Dateien mit touch aufgefrischt werden.
SLES10 SP2 Enterprise Linux (Novell)
Alle Gnu-Compiler stehen ohne weitere Vorbereitung direkt zur Verfügung (gfortran, gcc, g++). Für MPI-Programme sollte ein Wrapper zur Übersetzung benutzt werden (mpicc).
Intel muss mit module load aktiviert werden.
module load intel-11.0
Die Compiler heißen mit ifort, icc und icpc.
/opt/intel/Compiler/11.0/074/Documentation
Es wird mit dem Compiler von Intel und der MPI-Bibliothek von MVAPICH übersetzt:
(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/mpicc.txt)
OpenMP (Open Multiprocessing) ermöglicht parallele Ausführung in mehreren Threads, die durch Compiler-Direktiven in C, C++ und Fortran gesteuert werden.
Derzeit mit den Intel- und mit Gnu-Compilern (Version 4.4) möglich.
Zu OpenMP siehe http://sites.google.com/site/gfortransite/
Zu gfortran siehe http://gcc.gnu.org/wiki/GFortran
Umgebungsvariable für OpenMP:
Übersetzung mit
siehe http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/pgascaf.html
siehe http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/pgasupc.html
siehe http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/pgastit.html
Titanium ist eine in Berkeley entwickelte Java-basierte PGAS-Sprache. Webseite:
Im Verzeichnis
existiert eine clusterfähige Titaniuminstallation. Sie kann benutzt werden, wenn ihr Verzeichnisname in den Pfad eingetragen wird.
Der Compiler kann (fast) jedes Java-Programm und jedes Titanum-Programm übersetzen. Die umfangreiche Java-Bibliothek steht natürlich nur sehr eingeschränkt zur Verfügung. Der Compileraufruf ist
Übersetzte Titanium-Programme werden mit normalen PBS-Jobs auf den Clusterknoten gestartet. Das folgende Beispiel startet ein Programm in der Datei ./hello.
(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/titjob.sh)
http://x10-lang.org/
http://chapel.cray.com/spec/spec-0.795.pdf
/opt/intel/impi/3.2.0.011/Doc_Index.html
Die Bibliothek steht im Verzeichnis
/opt/lapack/atlas-3.8.2
Mit dem folgenden Beispielprogramm (Quelle: http://math-atlas.sourceforge.net/faq.html) wird die Versionsnummer der Bibliothek am Bildschirm ausgegeben:
(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/atlasv.c)
Übersetzung des Beispiels und Start:
(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/atlasv.r)
/opt/intel/Compiler/11.0/074/Documentation/mkl
siehe http://www.clusterresources.com/products/torque/docs/a.acommands.shtml
siehe http://www.clusterresources.com/products/torque/docs/commands/qsub.shtml
siehe http://www.clusterresources.com/products/torque/docs/2.1jobsubmission.shtml\#resources
| Ressource | Wert | Bedeutung |
| cput | [[hh:]mm:]ss | Maximale CPU-Zeit pro core des Jobs |
| walltime | [[hh:]mm:]ss | Maximale Verweilzeit des Jobs |
| Variable | Wert (Bsp) | Beschreibung |
| PBS_ENVIRONMENT | PBS_BATCH | set to PBS_BATCH to indicate that the job is a batch job; otherwise |
| set to PBS_INTERACTIVE to indicate that the job is a PBS interactive job | ||
| PBS_JOBID | 165139.Athene2 | the job identifier assigned to the job by the batch system |
| PBS_JOBNAME | batch.sh | the job name supplied by the user |
| PBS_NODEFILE | /var/spool/torque/aux// | the name of the file that contains the list of the nodes |
| 165139.Athene2 | assigned to the job | |
| PBS_QUEUE | common | the name of the queue from which the job is executed |
| PBS_TMPDIR |
Die Umgebungsvariable X aus der Umgebung des qsub-Kommandos wird als Variable PBS_O_X weitergereicht.
| Variable | Wert (Bsp) | Beschreibung |
| PBS_O_HOME | /home/brf09510 | HOME variable in the evvironm. in which qsub was executed |
| PBS_O_LANG | en_US.UTF-8 | LANG variable in the evvironm. in which qsub was executed |
| PBS_O_LOGNAME | brf09510 | LOGNAME variable in the evvironm. in which qsub was executed |
| PBS_O_PATH | /usr/bin:/bin:/ | PATH variable in the evvironm. in which qsub was executed |
| PBS_O_MAIL | /var/mail/brf09510 | MAIL variable in the evvironm. in which qsub was executed |
| PBS_O_SHELL | /bin/tcsh | SHELL variable in the evvironm. in which qsub was executed |
| PBS_O_TZ | TZ variable in the evvironm. in which qsub was executed | |
| PBS_O_HOST | Athene1.uni-regensburg.de | the name of the host upon which the qsub command is running. |
| PBS_SERVER | Athene1.uni-regensburg.de | the hostname of the pbs_server which qsub submits the job to. |
| PBS_O_QUEUE | batch | the name of the original queue to which the job was submitted. |
| PBS_ARRAYID | each member of a job array is assigned a unique identifier (see -t) | |
| PBS_O_WORKDIR | /home/brf09510 | the abs. path of the current working dir. of the qsub command |
Zusätzlich werden die folgenden Umgebungsvariable definiert:
| Variable | Wert (Bsp) | Beschreibung |
| PBS_O_HOST | Athene1.uni-regensburg.de | the name of the host upon which the qsub command is running |
| PBS_O_QUEUE | batch | the name of the original queue to which the job was submitted |
| PBS_O_WORKDIR | /home/brf09510 | the absolute path of the current working directory of the qsub command |
Intel
/opt/intel/Compiler/11.0/074/Documentation/idb
Parastation zur Steuerung des Clusters (Process Management)
Gridmonitor
Webseite: http://cluster-competence-center.com/support.php
AMD: CPU-Hersteller (K10).
ATLAS: Automatically Tuned Linear Algebra Software. Zur Zeit stehen C- und F77-Schnittstellen bereit, die effiziente parallele BLAS- und LAPACK-Funktionen aufrufen.
Bandbreite (bandwidth): Maximale Frequenz, mit der Daten über eine Verbindung des Netzes geschickt werden können. Einheit: Byte pro Sekunde. Daraus folgt die Übertragungszeit t für n Byte mit der Bandbreite b: t = n /b.
Barcelona: Quadcore-Chip von AMD mit vier K10-Architekturen.
BSP: Bulk Synchroneous Programming; älteres Software-Modell mit Message Passing; http://www.bsp-worldwide.org/.
CAF: siehe Co-Array Fortran
ccNUMA: Cluster-Architektur (Cache Coherent Nonuniform Memory Access). Jede CPU verfügt über einen Cache zum Speicher; manchmal teilen sich CPU-Gruppen einen gemeinsamen Cache. Jede CPU kann aber prinzipiell (schlimmstenfalls nach Wartezeit) auf jede Speicherzelle zugreifen. Die Caches werden automatisch synchronisiert. Der Cache beschleunigt die Speicherzugriffe im Vergleich zu NUMA.
Chapel: Eine PGAS-Sprache von Cray
CMF: nicht mehr aktuelles Software-Modell.
Co-Array Fortran: PGAS-Sprache;
CUDA: Software-Modell von NVidia (siehe GPU).
Core: CPU-Kern (Unabhängig agierende ALU/FPU, die ein Programm eigenständig abarbeiten kann).
DARPA: Defense Advanced Research Projects Agency (U.S Department of Defense institute) Urheber eines Projektes für den Entwurf neuer paralleler Programmiersprachen 2002. Seit 2006 konkurrieren noch die Entwürfe X10 (IBM), Chapel (Cray) und Fortress (Sun).
Distributed Memory: Cluster-Architektur. Jeder Prozessor hat seinen eigenen Speicher. Datenaustausch zwischen den Prozessoren erfolgt über ein unabhängiges Netz.
DM/DMEM: Distributed memory; viele Prozessoren haben je einen eigenen Speicher; vermeidet Flaschenhälse; erfordert Kommunikation.
DMP: Distributed Memory Processing; Jede CPU ist mit eigenem Speicher ausgestattet. Alternative zu SMP.
Fortress: PGAS-Sprache von Sun.
GAS: Global address space
GASNET: Global-Address Space Networking. GASNet is a language-independent, low-level networking layer that provides network-independent, high-performance communication primitives tailored for implementing parallel global address space SPMD languages such as UPC, Titanium, and Co-Array Fortran. The interface is primarily intended as a compilation target and for use by runtime library writers (as opposed to end users), and the primary goals are high performance, interface portability, and expressiveness.
GigE: Gigabit Ethernet.
GPU-Programming (siehe CUDA): Graphik-Prozessor.
HPF: High Performance Fortran.
IB: Infiniband.
IPMI: Intelligent Platform Management Interface - Protokoll.
K10: CPU-Architektur von AMD (auch AMD Opteron (K10)).
Latenz: Verweilzeit einer Nachricht im Netz. Latenz T für n Byte mit Bandbreite b bei einem Overhead o: T = o + n / b. Der Overhead besteht aus den meist konstanten Zeiten, die zum Start und Empfang der Nachricht benötigt werden und der Signalllaufzeit für 1 Bit.
MIMD: (Flynn); Multiple Instruction Multiple Data; mehrere unabhängige Prozessoren bearbeiten mehrere Befehlsströme mit unabhängigen Daten. Je nach Speicherarchitektur unterscheidet man SM/SHMEM, DM/DMEM und VSM.
MISD: (Flynn); Multiple Instruction Single Data; eigentlich überflüssige Einstufung, die nur zur Vervollständigung von SISD, SIMD, MISD, MIMD eingeführt wurde. Um dem Ausdruck nachträglich doch noch Sinn zu verleihen, wurden hier Pipeline-Architekuren, die ja hintereinander mit demselben Datum arbeiten, subsummiert. Eigentlich jedoch liegt aber nach jedem Pipeline-Schritt ein anderes modifiziertes Datum vor. Weiter werden hier fehlerredundante Mehrfacharchitekturen genannt, wo mehrere Prozessoren mit demselben Datum rechnen, deren Ergebnis nur akzeptiert wird, wenn es überall gleich ist.
MPI: Message Passing Interface (MPI-1, MPI-2); wichtigstes Software-Modell http://www.mpi-forum.org/docs/.
MPICH Das CH von MPICH kommt von CHameleon, eine Bezeichnung für die Portabilitätsschicht im ursprünglichen MPICH, die den Anschluss an beliebige Message-Passing-Systeme gewährleistet.
MVAPICH Der Name MVAPICH signalisiert, dass die zugrundeliegende MPI-Implementierung MPICH die InfiniBand VAPI-Schnittstelle benutzt. Die offizielle Aussprache ist Emwahpitsch.
Node: Knotenrechner mit ggf mehreren CPU-Kernen.
NUMA: Cluster-Architektur. (Non Uniform Memory Access).Vielen Prozessoren ist je ein eigener Speicher zugeordnet, aber prinzipiell kann jeder Prozessor, ggf. nach einer Wartezeit, jede Speicherzelle, auch die anderer Prozessoren, benutzen.
OpenMP: Open Multiprocessing; Thread-basiertes Software-Modell http://openmp.org/wp/.
Open MPI: Open Source MPI-Implementierung. Jünger als MPICH. Vorsicht: hat soviel mit OpenMP zu tun wie Javascript mit Java! http://www.open-mpi.org/
PBS: Portable Batch System.
PGAS: Partitioned global address space; Software-Modell mit global nutzbarem, aber bereichsweise den Prozessoren zugeteiltem Speicher.
PThreads: Thread-Modell für C von POSIX.
PVM: Parallel Virtual Machine; Software-Modell mit Message Passing http://www.csm.ornl.gov/pvm/.
Shebang, auch Magic Line: mit #! beginnende Scriptzeile, die als Kommando mit der Scriptdatei als Argument ausgeführt wird.
SISD: (Flynn); Single Instruction Single Data; der klassische sequentielle Rechner.
SIMD: (Flynn); Single Instruction Multiple Data; Ein Befehlswerk holt und analysiert Befehle. Die eigentliche Ausführung wird von einem Array mehrerer Prozessoren übernommen, die dann mit mehreren Datenströmen unabhängig dieselbe Befehlssequenz durchführen können.
SHMEM/SM: SHared MEMory; viele Prozessoren teilen sich einen gemeinsamen Speicher; Flaschenhals bei Speicherzugriff; Notwendigkeit der Synchronisation von Schreibzugriffen; kein Datenaustausch zwischen den Prozessoren nötig (keine Kommunikation). SHMEM ist auch eine Kommunikationebibliothek von Cray.
SM/SHMEM: siehe SHMEM.
SMP: Cluster-Architektur. (Symmetric MultiProcessing). Viele Prozessoren greifen gleichberechtigt auf alle restlichen Resourcen, insbesondere den gemeinsamen Speicher, zu. Der gemeinsame Datenbus bildet hier einen extremem Flaschenhals. Alternative zu DMP.
Split-C: GAS-Sprache (PGAS ohne P) aus Berkeley http://www.cs.berkeley.edu/~yelick/arvindk/splitc-super93.ps.
Titanium: Java-basierte PGAS-Sprache.
Torque: Terascale Open source Resource and QUEue manager.
UMA: Cluster-Architektur. (Uniform Memory Access): Viele Prozessoren greifen gleichberechtigt über mehrere Zugänge auf den gemeinsamen Speicher zu. Das beschränkt den Flaschenhals von SMP auf die Fälle, in denen auf Daten in derselben Speicherbank zugegriffen wird.
UPC: C-basierte PGAS-Sprache;
VSM: Virtual Shared Memory; Oberbegriff zu NUMA und PGAS
X10: PGAS-Sprache con IBM; Java-basiert;
TTH-Seite: