Základní info
Oficiální návod ↗ je dobrý. Obsahuje všechno a je dobře udržovaný. Na následující stránce shrnu jak jsem server použil, a také pár drobností, které mě překvapily, nebo jsem je v návodu nenašel.
Přístup na server je rozdělen: přihlášení dovede uživatele na login1 node.
Ten není výpočetní, a chybí mu například kompilátor.
Na výpočetní node se dá dostat pomocí srun --pty bash -i
, a kompilovat přes srun make
.
Odkazy:
- novinky ↗
- stránka s různorodým INFO ↗
- zatížení RCI clusteru ↗
- statistiky zatížení dle jobů a skupin ↗
- zatížení GPU nodů ↗
- chat s dalšímy uživately (Slack) ↗
Přihlášení
- nastavit si heslo pro cluster na https://login.rci.cvut.cz/secure/password/ ↗.
- příhlásit se přes
ssh username@login.rci.cvut.cz
Přihlášení dostane uživatele na login1 node, který není výpočetní.
Zadání jobu na výpočetní node
Na serveru lze naplánovat spuštění konkrétního scriptu s danými parametry.
sbatch -p cpu -t 1440 ./batch.sh par1 par2 ...
Script může spustit executable a uložit výsledek.
batch.sh
#!/usr/bin/env bash
ID="$1"
FILE="res/$ID.txt"
./barrington/src/quick.exe "$ID" > "$FILE"
Mail notifikace při dopočítání
Výpočetní nody nemají přístup k odesílání mailu. Lze to obejít tak, že zapíše záznam do souboru, který hlídá proces na login1 nodu.
Upravíme script spuštění, aby po skončení zadal spustil script na uložení záznamu o mailu.
batch.sh
#!/usr/bin/env bash
ID="$1"
FILE="res/$ID.txt"
./barrington/src/quick.exe "$ID" > "$FILE" \
&& ./notify_mail.sh "$FILE"
Script záznam uloží do souboru.
notify_mail.sh
#!/usr/bin/env bash
FILE="$1"
NOTIFICATION_FILE='list_mails_to_send.txt'
echo "$FILE" >> "$NOTIFICATION_FILE"
Pomocí tmux
spustíme script, co kontroluje soubor.
Konkrétně sekvencí tmux
, ./watch_mail.sh
, a zkratkou Ctrl+B, D
, se zapne nový bash se scriptem, který poběží na pozadí.
Když se v souboru oběví záznam, předá úkol mailovacímu scriptu.
Vrátit k session na pozadí se vrátíme přes tmux attach
.
watch_mail.sh
#!/usr/bin/env bash
NOTIFICATION_FILE='list_mails_to_send.txt'
touch "$NOTIFICATION_FILE"
while [ 1 ]; do
while read LINE; do
echo "detected mail $LINE, sending"
./mail.sh "$LINE"
done < "$NOTIFICATION_FILE"
echo -n "" > "$NOTIFICATION_FILE"
sleep 60
done
Mail se pošle pomocí utility mail
.
Zde je nastaveno aby v předmětu mailu byla poslední řádka souboru, a celý soubor je předán jako obsah mailu.
mail.sh
#!/usr/bin/env bash
FILE="$1"
MAIL='username@fit.cvut.cz'
SUBJECT="$(tail -1 "$FILE")"
cat "$FILE" | mail -s "Results from RCI server: $SUBJECT" "$MAIL" \
&& echo "sent mail to '$MAIL' : $SUBJECT"