TotalView

Spis treści

O TotalView

Okno pracy TotalView

TotalView jest narzędziem do analizy i wyszukiwania błedów (debugger) w oprogramowaniu równoległym, który daje niespotykaną kontrolę nad procesami i możliwość bliskiego spojrzenia na stan programu i jego zmiennych.  

TotalView pozwala debugować jeden lub wiele procesów i/lub wątków w jednym oknie z pełną kontrolą nad realizacją programu. To pozwala ustawić punkty przerwania, przechodzić przez kod linia po linii na jednym z wątków, lub skoordynowanych grup procesów i wątków, jak również wznowić uruchomienie lub zatrzymać dowolne zestawy procesów lub wątków . W ten sposób można odtworzyć i rozwiązywać trudne problemy, które mogą wystąpić w programach współbieżnych, które wykorzystują wielowątkowość, OpenMP , MPI , GPU lub inne koprocesory.

TotalView umożliwia narzędzia analityczne, dzięki którym debugowanie jest efektywniejsze. Dotyczy to przede wszystkim przypadków takich jak wycieki pamięci czy zakleszczenia w przetwarzaniu równoległym. TotalView współpracuje z aplikacjami C , C++ i Fortran napisanych w systemach Linuks-owych (w tym platformy Blue Gene), UNIX i Mac OSX. Oferuje również możliwość debugowania wykorzystania pamięci (z ang. memory debugging) oraz przewijania stanu programu wstecz (tzw. reverse debugging). Wspiera nowe rozwiązania HPC takie jak XeonPhi, czy Nvidia CUDA.

Licencja TotalView w ICM

ICM posiada bardzo szeroką stałą licencję Team License. W ramach licencji wprowadzone są limity na sumaryczną liczbę debugowanych procesów. Licencja jest typu float, dzięki czemu użytkownicy mogą równocześnie debugować swoje programy.

Limity na poszczególnych systemach:

  • nostromo, hydra, boreasz, halo2, notos, grom: 1024 procesów sumarczynie
  • nostromo: dodatkowa pula 1024 procesów przypisanych tylko do systemu nostromo.

Oznacza to, że na systemie nostromo, który jest obecnie największym systemem obliczeniowym ICM, użytkownicy mogą debugować sumaryczną liczbę 2048 procesów.

Licencja oprogramowania TotalView udostępnia możliwość instalacji tzw. Remote Display Client na komputerze użytkowników ICM. Klienta można pobrać ze strony: http://www.roguewave.com/products/totalview/remote-display-client.aspx

Przygotowanie oprogramowania

Do debugowania aplikacji wymagana jest rekompilacja oprogramowania z opcją -g.

Uruchomienie programu pod kontrolą TotalView

Aby skorzystać z TotalView na systemach ICM należy zalogować się na system z opcją przekierowania X-ów (lub skorzystać z Remote Display Client). We wszystkich przypadkach debugowanie odbywa się w ramach systemu kolejkowego.

Uruchomienie programu pod kontrolą TotalView jest różne pomiędzy systemami dostępnymi w ICM:

nostromo

Przykład debugowania programu na 4 węźłach (256 procesów):

module load totalview
totalview --args srun --nodes=1 --tasks-per-node=64 --overcommit ./program argumenty

boreasz

Przykład debugowania programu na 2 węzłach w kolejce test (64 procesy).

  • przygotowanie skryptu kolejkowego debug.ll dla zadania interaktywnego, np:
#@ job_name = debug
#@ account_no = ID_GRANTU
#@ class = test
#@ node = 2
#@ tasks_per_node = 32
#@ wall_clock_limit = 00:10:00
#@ network.MPI = sn_all,not_shared,US,HIGH
#@ environment = COPY_ALL
#@ job_type = parallel
#@ queue
  • uruchomienie sesji debugowania:
module load totalview
totalview -args poe ./program argumenty -rmfile debug.ll

hydra

Przykład debugowania programu na 2 węzłach po 24 rdzenie (48 procesów).

module load hydra-sl6
srun -N 2 -n 24 --pty bash -l

Po zalogowaniu na węzeł ustawiamy odpowiednią dla naszego programu wersję MPI, np.:

module load mpi/openmpi/1.6.5-gnu4.8.1

a następnie uruchamiamy TotalView:

module load totalview/8.12.0-1
totalview -args mpiexec -n 12 ./program argumenty


notos

Przykład debugowania programu na 32 węzłach (32 procesy, tryb SMP).

  • piszemy skrypt kolejkowy debug.ll
#!/bin/bash
#@ job_name = debug
#@ account_no = ID_GRANTU
#@ class = kdm
#@ error = debug.err
#@ output = debug.out
#@ environment = COPY_ALL
#@ wall_clock_limit = 00:20:00
#@ job_type = bluegene
#@ bg_size = 32
#@ queue
module load totalview
totalview -args mpirun -exe ./progam argumenty -np 32 -mode SMP -verbose 2 
  • wstawiamy zadanie do kolejki:
llsubmit debug.ll

grom

Przykład debugowania programu na 1 węźle z dwoma kartami GPU.

module load hydra-sl6
srun --gres=gpu:2 --pty bash -l

Po ustawieniu środowika CUDA uruchamiamy TotalView:

module load totalview/8T.13.0-1
totalview -args ./program argumenty

Historia TotalView w ICM

TotalView w ICM pierwszy raz pojawił się na systemie Tornado. Oprogramowanie to zostało przeportowane przez firmę Cray na maszynę Cray X1e (praca zreferowana na konferencji CUG 2003). TotalView w tamtych czasach posłużył nam do przeniesienia prognozy pogody Unified Model z systemu Cray SV1 na Cray X1e.

Artykuły w Biuletynie KDM z czasów instalacji TotalView na tornado:

Dostępne instalacje

  • Hydra
    • totalview/8.12.0-1
    • totalview/8T.13.0-1