1. Wprowadzenie
Ostatnia aktualizacja: 25.04.2022
Co utworzysz
W ramach tego ćwiczenia w Codelabs wdrożysz autoskalowany klaster HPC (High Performance Computing) w Google Cloud.Wdrożenie Terraform utworzy ten klaster z Gromacs zainstalowanym za pomocą Spacka. Klaster będzie zarządzany za pomocą algorytmu szeregowania zadań Slurm. Po utworzeniu klastra uruchomisz testy porównawcze benchMEM, benchPEP lub analizy porównawcze RIB.
Czego się nauczysz
- Jak wdrożyć klaster HPC obsługujący harmonogram zadań Slurm
- Jak uruchomić symulacje dynamiki molekularnej z akceleratorem GPU za pomocą Gromacs w Google Cloud przy użyciu zadania wsadowego Slurm
Co będzie potrzebne
2. Konfiguracja
Aby wykonać to ćwiczenie w Codelabs , musisz włączyć interfejsy Compute Engine API i Cloud Build API. Aby włączyć interfejsy Compute Engine API i Cloud Build API, otwórz Cloud Shell i uruchom następujące polecenia. Pamiętaj, aby zastąpić identyfikator-projektu wartością
poniżej.
gcloud config set project <PROJECT_ID> gcloud services enable compute.googleapis.com gcloud services enable cloudbuild.googleapis.com
Uwaga: jeśli planujesz łączyć się ze swoim klastrem przez SSH innej firmy (np. OpenSSH), musisz dołączyć klucz SSH do profilu Cloud Identity za pomocą OS Login. Więcej informacji o dodawaniu kluczy SSH do profilu Cloud Identity
3. [OPCJONALNIE] Tworzenie obrazu maszyny wirtualnej GCP przy użyciu Gromacs
Na potrzeby tych ćwiczeń w Codelabs udostępniamy gotowy obraz, ponieważ instalacja Gromacsa i wszystkich jego zależności może potrwać do 2 godzin. Jeśli chcesz wykorzystać ten gotowy obraz, aby zaoszczędzić czas, możesz przejść do następnej sekcji.
Uruchamiając aplikacje badawcze w Google Cloud, możesz instalować i wdrażać aplikacje na wiele sposobów. W tej części ćwiczenia w Codelabs utworzysz obraz maszyny wirtualnej, który będzie kompilowany na obrazie maszyny wirtualnej slurm-gcp (CentOS7). Podczas tworzenia kompilator, wszystkie funkcje Gromacsa i zostanie zainstalowany Gromacs.
Potok Gromacs Cloud Build w repozytorium RCC Apps zawiera instrukcje dotyczące instalacji Gromacs. Proces instalacji używa narzędzia Packer do wdrożenia maszyny wirtualnej, która instaluje Spack, która z kolei instaluje kompilator GCC@9.2.0 oraz Gromacs@2021.2 z włączoną akceleracją GPU.
- Otwórz Cloud Shell w GCP.
- Klonowanie repozytorium FluidNumerics/rcc-apps
cd ~ git clone https://github.com/FluidNumerics/rcc-apps.git
- Skompilować obraz za pomocą Google Cloud Build.
cd rcc-apps gcloud builds submit . --config=gromacs/cloudbuild.yaml --project=<PROJECT_ID> --async
Stan procesu kompilacji możesz sprawdzić w panelu Google Cloud Build.
Proces kompilacji może potrwać do 2 godzin. Aby przyspieszyć ten proces, możesz zmodyfikować schemat pliku konfiguracji kompilacji, aby zmienić typ maszyny. Pozwoli to zwiększyć wydajność kompilacji. Można to zrobić za pomocą zmiennej kompilacji _MACHINE_TYPE. Na przykład:
gcloud builds submit . --config=gromacs/cloudbuild.yaml --project=<PROJECT_ID> --async --substitutions=_MACHINE_TYPE=n2-standard-64
Gdy kompilacja się zakończy, w Twoim projekcie Google Cloud pojawi się obraz maszyny wirtualnej, którego możesz użyć do wdrożenia klastra.
4. Wdrażanie autoskalowanego klastra HPC za pomocą Terraform
W tej sekcji użyjesz Terraform do wdrożenia autoskalowanego klastra HPC z zainstalowanym algorytmem szeregowania zadań Slurm. Ten klaster zostanie wdrożony z węzłami obliczeniowymi, z których każdy ma 8 procesorów wirtualnych i 1 GPU Nvidia® Tesla V100.
- Otwórz Cloud Shell w GCP.
- Klonowanie repozytorium FluidNumerics/rcc-apps
cd ~ git clone https://github.com/FluidNumerics/rcc-apps.git
- Przejdź do katalogu gromacs terraform:
cd ~/rcc-apps/gromacs/tf/slurm
- Utwórz i sprawdź plan Terraform. Ustaw zmienne środowiskowe
GMX_NAME
,GMX_PROJECT
iGMX_ZONE
, aby określić nazwę klastra, projekt GCP i strefę, w której chcesz przeprowadzić wdrożenie. W razie wątpliwości zapoznaj się z poniższymi uwagami
export GMX_PROJECT=<PROJECT_ID> export GMX_ZONE=<ZONE> export GMX_NAME="gromacs"
- Jeśli w poprzedniej sekcji tego ćwiczenia z programowania utworzyłeś własny obraz maszyny wirtualnej, musisz też ustawić zmienną środowiskową GMX_IMAGE
eksport GMX_IMAGE="projects/${GMX_PROJECT}/global/images/gromacs-gcp-foss-latest"
- Utwórz plan za pomocą polecenia Make, które uruchomi
terraform init && terraform plan
.
make plan
- wdrożyć klaster. Proces konfiguracji trwa tylko kilka minut, ponieważ Gromacs i jego zależności są wstępnie zainstalowane w klastrze.
make apply
- Połącz się z węzłem logowania utworzonym w poprzednim kroku przez SSH. Możesz zobaczyć ten węzeł w poprzednim kroku (prawdopodobnie nosi on nazwę gromacs-login0). Możesz to zrobić, klikając przycisk SSH obok listy maszyn wirtualnych w pozycji menu konsoli Compute Engine -> maszynie wirtualnej.
Opcja: ta para poleceń gcloud określi nazwę węzła logowania i nazwę SSH, aby uzyskać do niego dostęp:
export CLUSTER_LOGIN_NODE=$(gcloud compute instances list --zones ${GMX_ZONE} --filter="name ~ .*login" --format="value(name)" | head -n1) gcloud compute ssh ${CLUSTER_LOGIN_NODE} --zone ${GMX_ZONE}
- Aby sprawdzić konfigurację klastra po nawiązaniu połączenia z węzłem logowania, sprawdź, czy zainstalowano Gromacs
$ spack find gromacs ==> In environment /apps/spack-pkg-env ==> Root specs gromacs@2021.2 +cuda~mpi ==> 1 installed package -- linux-centos7-x86_64 / gcc@9.2.0 ----------------------------- gromacs@2021.2
- Sprawdź, czy
/opt/share/gromacs
zawiera poniższą zawartość.
$ ls /opt/share/gromacs/ benchMEM.tpr benchPEP-h.tpr benchPEP.tpr benchRIB.tpr
5. Przeprowadź analizę porównawczą RIB
Gromacs to oprogramowanie badawcze używane do symulowania dynamiki molekularnej i obliczania struktur cząsteczkowych przy ograniczeniach minimalizacji energii. Testy porównawcze przedstawione na obrazie maszyny wirtualnej do tego ćwiczenia z programowania dotyczą dynamiki molekularnej, ewolucji układów atomów.
W dynamice cząsteczkowej położenie, prędkość i przyspieszenia atomów są symulowane z wykorzystaniem praw dynamiki Newtona :
gdzie to pozycja atomu i, t to czas,
to masa atomu i, a
to siła niepowiązana na atom i, ponieważ atom j, a
to siła powstała w wyniku wiązań wzajemnych. Biorąc pod uwagę temperaturę, ciśnienie, położenie atomów i szybkość atomów, siły oblicza się, a system jest integrowany numerycznie w celu uzyskania nowych prędkości i pozycji atomów. Ten proces powtarza się w celu przeprowadzenia symulacji dynamiki cząsteczkowej w danym okresie.
Do zdjęcia Gromacs (utworzonego lub dostarczonego) są dostępne 3 testy porównawcze
- benchMEM
- benchRIB
- benchPEP
Te testy porównawcze pochodzą z kanału Dr. Zestaw testów porównawczych Free Gromacs Benchmarks Kutznera to standardowy zestaw przejściowych symulacji dynamiki cząsteczkowej. Każda wartość porównawcza różni się pod względem liczby atomów i czasu trwania symulacji. Odpowiednie konfiguracje dla każdej symulacji znajdziesz w tabeli poniżej.
Dane / testy porównawcze | benchMEM | benchRIB | benchPEP |
Liczba Atomów | 81 743 | 2 136 412 | 12 495 503 |
Rozmiar systemu / nm | 10,8 x 10,2 x 9,6 | 31,2 × 31,2 × 31,2 | 50,0 × 50,0 × 50,0 |
Czas kroku / fs | 2 | 4 | 2 |
Promień odcięcia / nm | 1 | 1 | 1,2 |
Odstępy w siatce PME / nm | 0,12 | 0,135 | 0,16 |
Aby uruchomić test porównawczy, prześlij zadanie zbiorcze Slurm. Domyślnie udostępniony skrypt wsadowy uruchamia test porównawczy benchRIB. Talie wejściowe definiujące konfiguracje na potrzeby podanych testów porównawczych są zawarte w obrazie maszyny wirtualnej Gromacs w sekcji /opt/share/gromacs
. Dodatkowo na stronie /opt/share
jest dostępny przykładowy skrypt bash, który służy do uruchamiania Gromacsa.
W tej sekcji musisz połączyć się z węzłem login klastra przez SSH.
- Przesyłanie zadania wsadowego za pomocą polecenia sbatch
$ sbatch --ntasks=1 --cpus-per-task=8 --gres=gpu:1 --out=gromacs.out /opt/share/gromacs_bench.sh
Spowoduje to zakolejkowanie zadania do wykonania, a Slurm udostępni Ci węzeł obliczeniowy. Po uruchomieniu polecenia sinfo
zobaczysz, że węzeł obliczeniowy jest w stanie alloc#
, co oznacza, że węzeł obliczeniowy jest przydzielony do zadania, ale jest w trakcie udostępniania. Po uruchomieniu zadania węzeł zostanie ustawiony na stan alloc
.
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST gromacs* up infinite 1 alloc# gromacs-compute-0-0 $ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 2 gromacs gromacs_ joe R 0:02 1 gromacs-compute-0-0 $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST gromacs* up infinite 1 alloc gromacs-compute-0-0
Poczekaj na zakończenie zadania. Domyślna analiza porównawcza (porównawcza) symuluje około 8 mln atomów i została skonfigurowana do uruchomienia 5000 kroków w czasie (z 4 krokami czasowymi/fs), co zajmuje około 6 minut. Stan zadania możesz monitorować za pomocą tego polecenia:
watch squeue
Kiedy zadanie zniknie z kolejki, możesz je zamknąć, naciskając klawisze Ctrl+C.
- Po zakończeniu zadania powinien pojawić się katalog o nazwie
run/
zawierający dane wyjściowe symulacji (w sekcjirun/MEM
) oraz plik dziennika w bieżącym katalogu o nazwiegromacs.out
. Katalogrun/MEM
zawiera 2 plikiener.edr
imd.log
. Plikener.edr
przechowuje energię systemu, temperaturę, ciśnienie, rozmiar pudełka, gęstość i elementy wirusowe w przenośnym formacie binarnym. Zgodnie z sugestią rozszerzenia plikmd.log
zawiera dzienniki symulacji Gromacsa oraz informacje o wydajności symulacji, a także informacje z logowania informacji z rozwiązań cząstek i PME. Zawartość pliku gromacs.out zawiera standardowe dane wyjściowe zgmx mdrun
powinny wyglądać podobnie do przedstawionych poniżej.
$ tail -n9 gromacs.out step 5000, remaining wall clock time: 0 s Core t (s) Wall t (s) (%) Time: 3085.342 385.683 800.0 (ns/day) (hour/ns) Performance: 4.481 5.356 GROMACS reminds you: "I never thought of stopping, and I just hated sleeping. I can't imagine having a better life." (Barbara McClintock) OK
6. Gratulacje
Dzięki tym ćwiczeniom w programie udało Ci się stworzyć autoskalowany, chmurowy klaster HPC oraz przeprowadzić symulację dynamiki molekularnej z akceleracją za pomocą GPU, korzystając z Gromacs w Google Cloud.
Czyszczenie
Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte podczas tego ćwiczenia z programowania:
ZALECANA: usuń klaster HPC za pomocą Terraform
- Otwórz Cloud Shell i przejdź do przykładowego katalogu
gromacs/tf/slurm
cd ~/rcc-apps/gromacs/tf/slurm
- Uruchomić polecenie zniszcz, aby usunąć wszystkie zasoby.
make destroy
LUB usuń projekt (najbardziej skuteczny i niszczycielski).
Najprostszym sposobem na uniknięcie płatności jest usunięcie projektu utworzonego na potrzeby ćwiczeń z programowania.
Uwaga: usunięcie projektu spowoduje, że:
- Wszystkie dane projektu zostaną usunięte. Jeśli w ramach ćwiczenia z programowania był używany istniejący projekt, usunięcie go spowoduje również usunięcie wszystkich innych zadań wykonanych w tym projekcie.
- Niestandardowe identyfikatory projektu zostaną utracone. Być może w trakcie tworzenia tego projektu został utworzony niestandardowy identyfikator projektu, którego chcesz używać w przyszłości. Aby zachować adresy URL, które używają identyfikatora projektu, na przykład adres URL appspot.com, usuń wybrane zasoby w projekcie, zamiast usuwać cały projekt.
Jeśli planujesz skorzystać z wielu ćwiczeń z programowania i krótkich wprowadzeń, ponowne wykorzystanie projektów może pomóc Ci uniknąć przekroczenia limitów projektów.
- W konsoli Cloud otwórz stronę Zarządzanie zasobami. Otwórz stronę Zarządzanie zasobami
- Na liście projektów wybierz projekt do usunięcia, a następnie kliknij Usuń
.
- W oknie wpisz identyfikator projektu i kliknij Wyłącz, aby usunąć projekt.