Tools: Ansible, MPI, Cuniform, ...
Auf den Rechner am Institut für Informatik sind verschiedenen Tools zum (wissenschaftlichen) Arbeiten:
Ansible
Auf den PCs in den Linuxpools und auf den Compute-Servern (gruenaus) ist Ansible installiert. Ansible ist eine Automatisierungs-Software zur Administration und konfiguration von Rechner (Orchestrierung). Es ist damit möglich mehrere Rechner gleichzeitig zu Konfigurieren und z.B. Software darauf zu installieren und zu starten. Die Rechner können dabei einzel oder als Gruppe angegeben werden. Die Gruppen werden u.a. in der /etc/ansible/hosts-Datei festgelegt. Auf den Rechner der Informatik sind u.a. folgende Gruppen definiert:
- gruenaus : gruenau[1-9]
- linuxpool : alle Linuxpool-PCs
- linuxpool7040 : OptiPlex7040 aus den Linuxpools "Brandenburg" & "Berlin"
- gpumaschines : Alle Linux-PCs/-Server mit einer GPU von Nvidia
Ansible beinhalten verschiedene Module (und entsrechende Argumente) für verschiedenen Aufgaben:
- shell : Ausführen von Shell-Befehlen
- copy : Kopieren von Dateien auf die Maschinen
- fetch : Holen von Dateien von den Maschinen
- ...und viele weitere.
Die Argumente werden durch die Option "-a" übergenen und die Anzahl der parallelen Verbindungen können mit "-f" angegeben werden.
Beispiele:
- ansible -m shell -a "uname -a" gruenaus -f 10
- ansible -m copy -a "src=my_config.txt dest=/tmp/my_config.txt mode=600" linuxpool -f 100
- ansible -m fetch -a "src=/tmp/my_result.txt dest=." linuxpool7040 -f 33
MPI
Auf den Pool-Rechnern und den Compute-Servern (gruenaus) ist MPICH installiert. Um die MPICH-Tools nutzen zu können, müssen zunächst die Umgebung entsprechend laden:
#> source /usr/lib64/mpi/gcc/mpich/bin/mpivars.sh
Die MPI-Tools können danach wie folgt benutzt werden:
#> mpicc -o mpi_hello_world mpi_hello_world.c
#> MPICH_PORT_RANGE="40000:42000" mpirun -np 10 --hosts gruenau1,gruenau2 mpi_hello_world
Damit MPI korrekt funktioniert müssen die Maschinen miteinander kommunizieren können. Dazu wurden in den Firewalls die Ports 40000:42000 freigegeben. Dieser Bereich muss nun MPI über die Umgebungvariable "MPICH_PORT_RANGE" mitgeteilt werden.
Des Weiteren muss ein passwortloser SSH-Login ermöglicht werden.
Ein guten Einstieg in MPI bietet ein Tutorial auf github.