
Infrastruktura obliczeniowa
Do dyspozycji pracowników pozostają dwa klastry obliczeniowe.
Specyfikacja sprzętowa
zero.ift.uni.wroc.pl
Liczba węzłów | 7 |
Procesor | Quad-Core AMD Opteron(tm) Processor 2384 |
Liczba socketów | 2 |
Liczba rdzeni | 4 |
Liczba wątków | 1 |
Taktowanie zegara | 2.7 GHz |
Ram | 16 GB |
Katalogi domowe | /home | 872G | Zasób NFS |
rei.ift.uni.wroc.pl
Liczba węzłów | 2 |
Procesor | Intel(R) Xeon(R) CPU E5-2620 v3 |
Liczba socketów | 2 |
Liczba rdzeni | 6 |
Liczba wątków | 2 |
Taktowanie zegara | 2.4 GHz |
Ram | 64 GB |
Katalogi domowe | /home | 985G | Zasób NFS |
Scratch | /scratch | 30G | Lokalny storage |
System kolejkowy
Aby skorzystać z węzłów obliczeniowych należy przygotować skrypt programu PBS oraz umieścić go w kolejce zadań (np. qsub ./skryptPBS.sh), bądź skorzystać z możliwości interaktywnego dostępu do powłoki na węźle obliczeniowym. Poniżej prezentujemy podstawowe informacje odnośnie systemu PBS oraz przykładowy skrypt. Dokładny opis działania poleceń dostępny jest po wpisaniu polecenia man POLECENIE na serwerze dostępowym.
Zarządzanie jobami
- qsub: zleć zadanie
- qdel: usuń zadanie
- qhold: wsztrzymaj zadanie
- qrls: wznów wstrzymane zadania
- qrerun: puść ponownie zadanie
- qmove: przesuń zadanie do innej kolejki
Monitorowanie zadań
- qstat: pokaż status zadań batch’owych
- qselect: pokaż określony zbiór zadań
- showq: pokazuje aktualny stan klastra
Atrybuty zadań
Atrybuty systemu PBS dla zadań można ustawiać na dwa sposoby:
- poprzez argumenty wiersza poleceń do qsub
- poprzez dyrektywy PBS w skryptach przekazywanych do qsub (REKOMENDOWANE!)
Atrybut | Wartość | Opis |
-l | lista potrzebnych zasobów (np.nodes=1,walltime=00:30:00) | Definiuje potrzebne zasoby oraz limituje ilość zasób jakie mogą zostać zużyte. |
-N | nazwa zadania | Definiuje nazwe zadania |
-o | scieżka do pliku | Definiuje ścieżke do której będzie przekierowywane standarodowe wyjście (STDOUT) zadania |
-e | scieżka do pliku | Definiuje ścieżke do której będzie przekierowywane wyjście błędów (STDERR) zadania |
-p | liczba calkowita z przedziału [-1024,1023] | Definiuje piorytet zadania. Wyższa wartość oznacza większy piorytet |
-q | nazwa kolejki | Definiuje kolejke, w której ma zostać umieszczone zadanie |
Typ zasobu | Wartość | Opis |
nodes | liczba węzłów | Liczba węzłów do wykorzystania, można wyspecyfikować również liczbe procesów na węzeł, np. nodes=1:ppn=8 |
walltime | gg:mm:ss | Wyspecyfikowanie przewidywanego czasu na zadanie |
cput | gg:mm:ss | Maksymalny czas procesora na zadanie |
mem | wartość całkowita z odpowiednią końcówka b,kb,mb,gb | Maksymalna ilość RAMu przypadająca na zadanie |
ncpus | dodatnia liczba całkowita | Deklaracja liczby potrzebnych CPU |
Tryb interaktywny
Aby skorzystać z interaktywnego dostępu do węzła należy wywołać polcenie qsub -I -q shell -l nodes=1
Tryb interaktywny dostępny jest jedynie w kolejce shell, pozwala dostać się bezpośrednio do węzła po ssh – co jest przydatne zwłaszcza przy konfiguracji nowego oprogramowania, bądź przy debugowaniu programów.
Przykładowy skrypt
Aby umieścić zadanie w kolejce za pomocą skryptu, należy wywołać komende qsub ./skrypt.sh
Najprostszy skrypt do wykorzystania na naszym klastrze (znajduje się również w katalogach domowych ~/skrypt.sh)
#!/bin/bash
#### Definiujemy nazwe zadania
#PBS -N helloWorld
#### Przekierujemy wyjścia do folderu /scratch
#### Przyśpieszenie działania przy operacjach I/O
#PBS -o /scratch/$USERNAME/helloWorld.stdout
#PBS -e /scratch/$USERNAME/helloWorld.stderr
#### Umieszczamy w odpowiedniej kolejce
#PBS -q oneDay
#### Specyfikujemy zasoby
#PBS -l nodes=1:ppn=2,mem=1gb
# Jesli zachodzi potrzeba dołączamy informacje o dodatkowym
# oprogramowaniu, tutaj przykładowo znajdujące się w $HOME/bin
export PATH=$PATH:$HOME/bin
# Przechodzimy do miejsca, w którym znajduje się nasze zadanie obliczeniowe
cd /home/$USERNAME
./helloWorld.sh
# Koniec