NEC SX-Aurora TSUBASA Vektorrechnersystem

no/neinStudierende yes/jaBeschäftigte yes/jaEinrichtungen no/neinstud. Gruppen

NEC_SX-Aurora_TSUBASA

Das NEC SX-Aurora TSUBASA Vektorrechnersystem ist Teil des hybriden NEC HPC-Systems im Rechenzentrum der CAU zu Kiel. Als Nachfolger der NEC SX-ACE verfügt das SX-Aurora TSUBASA Vektorrechnersystem über insgesamt 512 SX Vektor-Cores verteilt auf 8 Knoten, sogenannten Vektor-Hosts (VH), mit jeweils 8 Vektor-Engines (VE), die per PCIe an den VH angebunden sind. Jede VE hat 48 GB Hauptspeicher und verfügt über eine Speicherbandbreite von 1.2 TB/s. Batch-Jobs werden über das Batch-System NQSV verwaltet.


 

Hardware

NEC SX-Aurora TSUBASA Batch-Knoten (A300-8)

  • 8 Vektor-Hosts [neshve00 ... neshve07] mit jeweils
    • 24 Intel Skylake x86-Cores (2.6 GHz) und 192 GB Hauptspeicher pro VH
    • 8 Vektor-Engines pro VH (Typ 10B, 1.4 GHz)
      • 8 SX Vektor-Cores und 48 GB Hauptspeicher pro VE
      • 64 logische Vektor-Register pro Core (Länge: 256 x 64 Bits)
      • 1.2 TB/s Speicherbandbreite
      neshve
    • Innerhalb eines VH kommunizieren die VEs untereinander über PCI Express (PCIe)
  • Verbindungsnetzwerk zwischen den Knoten: Infiniband

Vorrechner

  • 4 Knoten [nesh-fe.rz.uni-kiel.de] mit jeweils
    • 2 Intel Xeon Gold 6130 (Skylake-SP) Prozessoren (2,1 GHz)
    • 32 Cores pro Knoten und 768 GB Hauptspeicher

Betriebssystem

  • VH: Red Hat Enterprise Linux 7
  • VE: Betriebsystem-Funktionalität komplett ausgelagert auf den VH (realisiert über VEOS Kernel-Module und Deamons)

 

Rechnerzugang

  • SSH-Zugang zum Vorrechner aus dem Uni-internen Netzwerk:

    ssh -X <username>@nesh-fe.rz.uni-kiel.de

  • Die verfügbaren Dateisysteme (insbesondere $HOME und $WORK) sind dieselben wie für  den NEC HPC-Linux-Cluster.

 

 

Dateisysteme

Die Vorrechner und alle Batch-Knoten  greifen gemeinsam auf ein globales Filesystem von insgesamt 5PB zu. Für alle Rechner existiert ein gemeinsamer HOME- und WORK-Bereich und zusätzlich steht auf jedem Batch-Knoten lokaler Plattenplatz  zur Aufnahme von temporären Dateien zur Verfügung.

Home-Verzeichnis

  • erreichbar über die Umgebungsvariable $HOME
  • global verfügbar an allen Knoten (Vorrechner und Batch-Knoten)
  • tägliche Datensicherung
  • zur Abspeicherung von Skripten, Programmen und kleineren Ergebnisdateien geeignet

 

Work-Verzeichnis

  • erreichbar über die Umgebungsvariable $WORK
  • global verfügbar an allen Knoten (Vorrechner und Batch-Knoten)
  • Dateisystem ohne Datensicherung
  • Nutzer-Quota für Plattenplatz und Inodes: workquota
  • Batchberechnungen sollten nur in diesem Verzeichnis durchgeführt werden

 

 

Tape-Library

  • erreichbar über die Umgebungsvariable $TAPE_CACHE
  • verfügbar an den Login-Knoten oder über die feque des Batchsystems
  • Aktuell nicht mehr benötigte Dateien sollten auf diesem zusätzlichen Dateisystem ausgelagert werden. Die hier abgelegten Dateien werden nach einiger Zeit auf Band geschrieben; sie können jedoch jederzeit auf das $HOME- bzw. $WORK-Verzeichnis zurück kopiert werden.
  • nicht für die Abspeicherung von vielen kleinen Dateien geeignet; erstellen von tar-Dateien. Falls eine große Anzahl von Dateien gepackt werden soll, empfehlen wir Dateigrößen im Bereich von 3GB und 50GB. Eine einzelne tar-Datei sollte jedoch nicht größer als 1TB sein.
  • langsame Zugriffsgeschwindigkeiten, daher möglichst kein direktes Arbeiten mit Dateien im $TAPE_CACHE Verzeichnis (kopieren Sie diese Dateien vor der Weiterverarbeitung (z.B. entpacken) erst wieder zurück auf das $WORK-Verzeichnis)
  • Datentransfer zu bzw. vom $TAPE_CACHE-Verzeichnis darf nicht mit dem rsync-Kommando erfolgen

Software und Programmübersetzung

  • Um Code zu produzieren, der auf der VE lauffähig ist, muss der eigentliche Quellcode cross-compiliert werden.
  • Jeder Prozess auf der VE hat dabei ein Schatten-Prozess auf dem VH, der für das I/O und andere administrative Aufgaben des Prozesses auf der VE zuständig ist. Auf der VE selbst läuft kein Betriebssystem, stattdessen wird ein sogenanntes VEOS auf dem VH ausgeführt, dass über eine entsprechende Bibliothek mit der Anwendung auf der VE verlinkt ist. Der gesamte, auf der VE initiierte I/O wird daher über den VH abgewickelt und kann daher auf einem beliebigen Dateisystem erfolgen, das auf dem VH gemountet ist.
  • Cross-Compiler:

    nfort / ncc / nc++ ...

  • Cross-Compiler zum Übersetzen von MPI-Programmen:

    module load necmpi

    mpinfort / mpincc / mpinc++ ...

  • Das Software Development Kit enthält des Weiteren eine Sammlung von numerischen Bibliotheken (NLC), die für die VE optimiert wurden: BLAS, SBLAS, LAPACK, SCALAPACK, ASL, Heterosolver. Doku: https://www.hpc.nec/documents/sdk/SDK_NLC/UsersGuide/main/en/index.html
  • Beispiel für die Verwendung von OpenMP in Kombination mit einer VE-optimierten LAPACK Bibliothek:

    module load necnlc; source /opt/nec/ve/nlc/1.0.0/bin/nlcvars.sh [args]

    nfort test.f90 -fopenmp -llapack -lblas_sequential

    nc++ test.cpp -fopenmp -llapack -lblas_sequential -lnfort

 

Batch-Verarbeitung

  • Zur Resourcenverwaltung, wird auf der NEC SX-Aurora TSUBASA das Batch-System NQSV (Network Queueing System V) eingesetzt.

Batch-Klassen

  • Die folgenden Batch-Klassen sind momentan verfügbar:
    Batch-Klasse max. Laufzeit (Walltime) / Default max. Anzahl von VHs [neshve##]
    veexpress 2 Std. / 15 Min. 8
    vequeue 48 Std. / 30 Min. 8
    veinteractive 1 Std. / 30 Min. 1

NQSV-Optionen

  • Die wichtigsten NQSV-Optionen zur Jobabgabe auf der NEC SX-Aurora TSUBASA sind:
    NQSV-Option Erklärung
    #!/bin/bash Definition der Shell
    #PBS -T necmpi Spezifiziert den Jobtyp (NEC-MPI), nur erforderlich bei parallelen Berechnungen über mehrere VHs
    #PBS --use-hca=1 Aktiviert die Infiniband-Kommunikation zu anderen VHs; nur erforderlich bei parallelen Berechnungen über mehrere VHs
    #PBS -b 2 Anzahl der angeforderten Vektor-Hosts (hier 2; max. 8)
    #PBS --venum-lhost=1 Anzahl der angeforderten Vektor-Engines pro VH (max. 8)
    #PBS -l elapstim_req=01:00:00 angeforderte Walltime (hier 1 Std.)
    #PBS -N test Name des Batch-Jobs (hier test)
    #PBS -o test.out Datei für die Standardausgabe (hier test.out)
    #PBS -e test.err Datei für die Fehlerausgabe (hier test.err)
    #PBS -j o fügt die Standard- und Fehlerausgabe in einer einzigen Datei zusammen
    #PBS -q vequeue angeforderte Batch-Klasse (hier vequeue)
    #PBS -m abe E-Mail-Benachrichtigung, wenn der Job beginnt (b), endet (e) oder abbricht (a)
    #PBS -M <E-Mail-Adresse> E-Mail-Adresse für die Jobbenachrichtungen (siehe -m Option)

Beispiel Batch-Skripte

  • Beispiel für eine serielle Berechnung (verwendet einen Core auf einer VE):
    #!/bin/bash
    #PBS -b 1 
    #PBS --venum-lhost=1
    #PBS -l elapstim_req=01:00:00 
    #PBS -N test
    #PBS -o test.out 
    #PBS -j o 
    #PBS -q veexpress 
    
    # Ausgabe von Performanceinformationen nach Jobende
    # Code muss mit der Option -proginf übersetzt werden
    export VE_PROGINF=DETAIL
    
    # Wechsel in das qsub-Verzeichnis
    cd $PBS_O_WORKDIR
    
    # Programmaufruf
    ./test.ex	
  • Beispiel für eine OpenMP-parallele Berechnung (verwendet all 8 Cores auf einer VE):
    #!/bin/bash
    #PBS -b 1 
    #PBS --venum-lhost=1
    #PBS -l elapstim_req=01:00:00 
    #PBS -N test
    #PBS -o test.out 
    #PBS -j o 
    #PBS -q veexpress 
    
    # Wechsel in das qsub-Verzeichnis
    cd $PBS_O_WORKDIR
    
    # Programmaufruf (max. 8 parallele Threads pro VE)
    export OMP_NUM_THREADS=8
    ./test.ex
  • Beispiel für eine MPI-parallele Berechnung (verwendet alle 8 VEs auf einem VH):
    #!/bin/bash
    #PBS -T necmpi
    #PBS --use-hca=1
    #PBS -b 1 
    #PBS --venum-lhost=8
    #PBS -l elapstim_req=01:00:00 
    #PBS -N test
    #PBS -o test.out 
    #PBS -j o 
    #PBS -q veexpress 
    
    # Wechsel in das qsub-Verzeichnis
    cd $PBS_O_WORKDIR
    
    # Programmaufruf
    mpirun -nn 1 -nnp 64 -ve 0-7 ./test.ex

Kommandos zur Jobabgabe und -kontrolle

  • $ qsub <nqs_script> Abgabe einer Batch-Berechnung
  • $ qstat liefert Statusinformationen über die eigenen Jobs
  • $ qdel <jobid> beendet einen laufenden oder entfernt einen wartenden Job
  • $ qstat -f <jobid> liefert detaillierte Informationen über einen bestimmten Job
  • $ qalter <jobid> ... Änderung der Job-Ressourcen eines wartenden Jobs
  • $ qcat -n <number> -o <jobid> zeigt die letzten <number> Zeilen der bisher erzeugten Standardausgabe eines laufenden Jobs an
  • $ qlogin -q veinteractive -l cpunum_job=1 -l elapstim_req=1:00:00 interaktiver Batchjob; interaktives Arbeiten direkt auf einem Vektorhost
  • Zum Überwachen von Prozessen, die auf den Vektor-Engines laufen, gibt es das folgende Kommando

    vetop <vh>

    wobei das Argument <vh> der Name des Vektor-Hosts bedeutet, z.B. neshve00 [00 ... 07].
  • Abfrage der verbrauchten Ressourcen für eine laufende Berechnung (CPU-Zeit und genutztes Memory) auf der Verktorengine erfolgt mit dem Kommando

    qstat -J -e

 

Dokumentation

 


Support und Beratung

HPC-Support-Team: hpcsupport@rz.uni-kiel.de
Verantwortliche Ansprechparter am Rechenzentrum:
Siehe unter HPC-Support und Beratung.