NEC - podstawy użycia

Note

Niniejszy dokument (wraz z notatką dot. SOL) jest także dostępny w formacie PDF.

Info

Dokument opisuje podstawy użytkowania komputera wektorowego NEC SX-Aurora Tsubasa, dostępnego w centrum obliczeniowym ICM UW. Treść jest oparta na cytowanej w tekście dokumentacji i ma na celu zebranie podstawowych informacji i ich źródeł na potrzeby użytkowników ICM.

Użycie komputera NEC wymaga zalogowania się do klastra Rysy przez SSH za pośrednictwem systemu dostępowego hpc.icm.edu.pl. Można wykonać tę czynność w dwóch krokach:

ssh username@hpc.icm.edu.pl
ssh rysy

Alternatywnie można wywołać instrukcję ssh z opcją -J (ang. jump host), która pozwala określić host pośredniczący w połączeniu z systemem docelowym (szczegóły: man ssh).

Obciążeniem klastra i zadaniami użytkowników zarządza Slurm, natomiast oprogramowanie zorganizowane jest w formie modułów. Pojedynczy węzeł obliczeniowy partycji ve (PBaran) może być używany interaktywnie – jak poniżej – lub wsadowo (patrz kolejne akapity).

srun -A GRANT_ID -p ve --gres=ve:1 --pty bash -l

Po uruchomieniu sesji interaktywnej zostaje automatycznie zdefiniowana nowa zmienna środowiskowa $VE NODE NUMBER, która określa która z kart VE zostanie użyta przez oprogramowanie użytkownika. Wartość tej zmiennej można sprawdzić i zdefiniować manualnie za pomoca instrukcji, odpowiednio, echo, export. Oprogramowanie służące obsłudze kart VE znajduje się w katalogu /opt/nec/ve. Jego efektywne wykorzystanie wymaga modyfikacji niektórych zmiennych środowiskowych, takich jak $PATH, $LD_LIBRARY_PATH i innych, czego można w wygodny sposób dokonać za pomocą instrukcji source.

source /opt/nec/ve/mpi/2.2.0/bin/necmpivars.sh

Ustawienie zmiennych środowiskowych (jak powyżej) sprawia, że narzędzia VE stają się dostępne dla użytkownika – wśród nich kompilatory NEC języków C, C++ i Fortran, które można wywołać instrukcjami, odpowiednio, ncc, nc++ i nfort lub ich odpowiednimi wariantami MPI: mpincc, mpinc++ i mpinfort. Należy pamiętać, że w systemie dostępnych jest kilka wersji kompilatorów, dlatego zajść potrzeba uwzględnienia numeru wersji przy ich wywołaniu, np. ncc-2.5.1. Ogólny schemat użycia kompilatorów NEC jest zgodny ze standardem znanym z GNU GCC: <kompilator> <opcje> <plik źródłowy>. Tabela poniżej listuje zbiór kilkunastu podstawowych opcji kompilatorów NEC. Ostatnie cztery z nich, oznaczone czerwoną czcionką, pozwalają na analizę wydajności i szczegółów wektoryzacji programów. Ponadto, niektóre z nich wymagają dodatkowo zdefiniowania odpowiednich zmiennych środowiskowych. Pełna lista opcji wraz z opisem generowanych danych wyjściowych znajduje się w PROGINF/FTRACE User’s Guide oraz w dokumentacji poszczególnych kompilatorów.

Opcja Opis
-c tworzy plik obiektowy
-o nazwa pliku wyjściowego
-I/path/to/include włączenie plików nagłówkowych
-L/path/to/lib włączenie bibliotek
-g symbole dla debuggera
-Wall ostrzeżenia o składni
-Werror treat warnings as errors
-O[0-4] poziomy optymalizacji
-ftrace użycie profilera
-proginf włącz analizę wykonania programu
-report-all raportuj diagnostyke
-traceback informacje zwrotne nt. wykonania programu
-fdiag-vector=[0-3] poziom szczegółów diagnostyki wektorowej

Programy mogą być uruchamiane bezpośrednio, poprzez podanie ścieżki dostępu do nich, lub pośrednio poprzez użycie programu ładującego VE (ve_exec) – przykłady z uwzględnieniem MPI zestawiono poniżej. Listę opcji mpirun można uzyskać na stronie podręcznika systemowego lub wydając polecenie mpirun -h.

./program
ve_exec ./program
mpirun ./program
mpirun -v -np 2 -ve 0-1 ./program # enables the use of VE cards 0 and 1

Pełna dokumentacja dotycząca wszystkich komponentów SX-Aurora Tsubasa (sprzętowych i programowych) znajduje się na stronie internetowej NEC. Przystępne dla użytkownika wprowadzenie znajduje się także na dedykowanym blogu.

Wsadowy tryb pracy VE wymaga stworzenia skryptu i zlecenia go do kolejki Slurm. Przykładowa treść takiego pliku znajduje się poniżej. Zawarte w nim opcje specyfikują nazwę zadania (-J), żądaną liczbę węzłów obliczeniowych (-N), rdzeni CPU (--ntasks-per-node), pamięć (-mem; tutaj w megabajtach), limit czasowy (--time), identyfikator grantu (-A), partition (-p), domyślne zasoby (--gres), plik wyjściowy (--output), a także właściwe instrukcje, które zostaną wykonane w ramach zadania po przyznaniu zasobów. Wyczerpująca lista dostępnych znajduje się w dokumentacji.

#!/bin/bash -l
#SBATCH -J name
#SBATCH -N 1
#SBATCH --ntasks-per-node 1
#SBATCH --mem 1000
#SBATCH --time=1:00:00
#SBATCH -A <Grant ID>
#SBATCH -p ve
#SBATCH --gres=ve:1
#SBATCH --output=out

./program

Poniżej przedstawiono podstawowe polecenia służące pracy z zadaniami Slurm: zlecanie zadania do kolejki (sbatch), które zwraca nadany identyfikator, wyświetla wszystkie zadania użytkownika i ich status (squeue), zwraca szczegóły dotyczące wybranego zadania (scontrol), anuluje wykonanie zadania (scancel). Pełna lista dostępnych opcji znajduje się w dokumentacji Slurm.

sbatch job.sl # zleca zadania do kolejki
squeue -u $USER # listuje wszystkie zadania użytkownika
scontrol show job <ID> # zwraca szczegóły zadania o danym identyfikatorze
scancel <ID> # anuluje zadanie o danym identyfikatorze

Klaster Rysy nie posiada dedykowanego systemu plików na potrzeby obliczeń. Oznacza to, że wszystkie obliczenia należy prowadzić w swoim katalogu domowym ($HOME). Partycja ve (węzeł PBaran) jest ponadto przeznaczony do zadań wykorzystujących karty VE i nie powinien być używany do zadań, które znacznie obciążają CPU.

Ta strona używa plików cookies.
Polityka Prywatności    AKCEPTUJĘ