CPMD: Różnice pomiędzy wersjami

Z KdmWiki
Przejdź do nawigacji Przejdź do wyszukiwania
Linia 21: Linia 21:
  
 
== CPMD w WCSS ==
 
== CPMD w WCSS ==
CPMD dostępny jest na [[Leo]] i [[Nova|Novej]] w wersji sekwencyjnej i równoległej. Zainstalowany został pakiet w wersjach 3.9, 3.11, 3.13.
+
CPMD dostępny jest na [[Leo]] i [[Nova|Novej]] w wersji sekwencyjnej i równoległej. Zainstalowany został pakiet w wersjach 3.9, 3.11, 3.13.2.
  
 
;Zalecenia ogólne
 
;Zalecenia ogólne
Linia 27: Linia 27:
 
* Prosimy o nie używanie polecenia '''<code>qdel</code>''' do kończenia zadania (CPMD niepoprawnie obsługuje sygnały). Zamiast tego, w katalogu zadania należy utworzyć pusty plik o nazwie '''EXIT''' i poczekać na automatyczne zakończenie się zadania:
 
* Prosimy o nie używanie polecenia '''<code>qdel</code>''' do kończenia zadania (CPMD niepoprawnie obsługuje sygnały). Zamiast tego, w katalogu zadania należy utworzyć pusty plik o nazwie '''EXIT''' i poczekać na automatyczne zakończenie się zadania:
 
  touch EXIT
 
  touch EXIT
* Wszystkie potencjały, także niestandardowe - dostępne na stronach domowych CPMD, zostały zainstalowane w katalogach '''/usr/local/CPMD/PPLIBNEW/'''. Jeśli zachodzi potrzeba użycia własnych potencjałów, to przed wykonaniem skryptu <code>sub-cpmd</code> (opisane poniżej), należy ustawić zmienną środowiskową:
+
* Wszystkie potencjały, także niestandardowe - dostępne na stronach domowych CPMD, zostały zainstalowane w katalogach '''/usr/local/CPMD-xxx/PPLIBNEW/'''. Jeśli zachodzi potrzeba użycia własnych potencjałów, to przed wykonaniem skryptu <code>sub-cpmd</code> (opisane poniżej), należy ustawić zmienną środowiskową:
 
  export PP_LIBRARY_PATH=/moj/katalog_z_PP/
 
  export PP_LIBRARY_PATH=/moj/katalog_z_PP/
* Prosimy nie używać własnych skryptów do wstawiania zadań. Uniemożliwia to wprowadzanie zmian systemowych.
+
* Prosimy nie używać własnych skryptów do wstawiania zadań. Utrudnia to wprowadzanie zmian systemowych.
  
 
;Wstawianie zadań do kolejki
 
;Wstawianie zadań do kolejki
Linia 35: Linia 35:
 
Wstawianie zadań CPMD do poszczególnych kolejek systemu [[PBS]] odbywa się przez wywołanie skryptu (lokalizacja: <code>/usr/local/bin</code>):
 
Wstawianie zadań CPMD do poszczególnych kolejek systemu [[PBS]] odbywa się przez wywołanie skryptu (lokalizacja: <code>/usr/local/bin</code>):
  
  sub-cpmd plik.inp wielkosc_pamieci_w_MB [kolejka] [liczba-procesorow]
+
  sub-cpmd plik_wejsciowy.inp [kolejka] [liczba_cpu] [pamiec_per_cpu_w_MB]
  
 
gdzie:
 
gdzie:
* <code>plik.inp</code> - plik z danymi programu
+
* <code>plik_wejsciowy.inp</code> - plik z danymi programu
* <code>wielkosc_pamieci-w-MB</code> - pamięć operacyjna dla całego zadania, musi być podana w MB.
+
* <code>pamiec_per_cpu_w_MB</code> - pamięć operacyjna per 1 cpu podana w MB (domyślnie 1800 MB).
 
* <code>kolejka</code> - kolejka PBS, w której ma być uruchomione zadanie (domyślnie parallel)
 
* <code>kolejka</code> - kolejka PBS, w której ma być uruchomione zadanie (domyślnie parallel)
* <code>liczba_procesorow</code> - domyślnie zadanie uruchamiane jest na 4 procesorach, wartość tego parametru powinna być wielokrotnością 4.
+
* <code>liczba_cpu</code> - liczba procesorów na których ma liczyć się zadanie (domyślnie 4).
  
Skrypt domyślnie uruchamia najnowszą wersję programu. Wyniki obliczeń będą wygenerowane do pliku o tej samej nazwie z rozszerzeniem .out.  
+
Skrypt uruchamia najnowszą wersję programu. Wyniki obliczeń będą wygenerowane do pliku z rozszerzeniem <code>.out</code>.
  
 
=== [[Leo]] ===
 
=== [[Leo]] ===
Linia 56: Linia 56:
  
 
Zadania wstawiane poleceniem sub-cpmd standardowo startują z dysku <code>/lustre/scratch/</code>, który jest współdzielony przez wszystkie węzły, w tym dostępowy.
 
Zadania wstawiane poleceniem sub-cpmd standardowo startują z dysku <code>/lustre/scratch/</code>, który jest współdzielony przez wszystkie węzły, w tym dostępowy.
 
Jeżeli użytkownik w swoim skrypcie startowym ustawi katalog roboczy na <code>/scratch/</code>, wówczas zadania korzystają z dysków lokalnych na poszczególnych węzłach. Zadanie składuje pliki tymczasowe tylko na jednym węźle, nawet jeśli jest równoległe i liczy się na kilku węzłach. Tam pozostają pliki RESTART itd. Jest to pierwszy węzeł z listy, podanej w wyniku wywołania polecenia:
 
> '''<code>qstat -n NUMER_ZADANIA</code>'''
 
lub w pliku wyników w wierszu: "THIS JOB RUNS ON: wn001.egee". 
 
  
 
Plik wyników tworzony jest na dysku <code>/home/</code>. Tworzenie plików RESTART itp. na dysku <code>/home/</code> jest zabronione. Pliki te będą automatycznie kasowane.
 
Plik wyników tworzony jest na dysku <code>/home/</code>. Tworzenie plików RESTART itp. na dysku <code>/home/</code> jest zabronione. Pliki te będą automatycznie kasowane.

Wersja z 14:50, 2 cze 2011

< Podręcznik użytkownika KDM < Oprogramowanie KDM < Oprogramowanie naukowe

CPMD (ang. Car-Parrinello Molecular Dynamics) - pakiet z dziedziny dynamiki molekularnej, implementujący metodologię Car-Parinello. Pierwszą wersję pakietu napisał Jurg Hutter w laboratorium badawczym IBM w Zurichu, kolejne wersje rozwijane były przy współudziale ludzi i organizacji z całego świata. Obecnie za licencjonowanie pakietu odpowiada IBM corp i MPI Stuttgart. Po dopełnieniu formalności licencyjnych pakiet jest udostępniany za darmo organizacjom niekomercyjnym.

Przykładowa animacja dynamiki ruchu protonu w dimerze kwasu monochlorooactowego w temperaturze 450K, obliczona metodą CPMD (z pracy doktorskiej Piotra Durlaka pt. "Teoretyczne badanie właściwości i dynamiki ruchu protonu w prostych kwasach karboksylowych", promotor: prof. dr hab. Zdzisław Latajka, Wydział Chemii Uniwersytetu Wrocławskiego, 2007 r.)

EmbedVideo nie rozpoznaje usługi wideo „googlevideo”.

Informacje ogólne

CPMD dostępny jest na wiele architektur i jest dobrze zrównoleglony (przy użyciu MPI i Mixed MPI/SMP). Główne własności pakietu:

  • Praca z pseudopotencjałami norm-conserving oraz ultrasoft,
  • przybliżenia LDA, LSD i GGA, energia swobodna,
  • układy periodyczne i aperiodyczne, k-points,
  • symetria punktowa i przestrzenna,
  • optymalizacja funkcji falowej (bezpośrednia, diagonalizacja, ...),
  • dynamika molekularna zespołów mikrokanonicznego (NVE), kanonicznego (NVT) oraz izotermiczno-izobarycznego (NPT),
  • dynamika molekularna typu path intagral,
  • response functions.
  • stany wzbudzone.
  • własności elektronowe.

CPMD w WCSS

CPMD dostępny jest na Leo i Novej w wersji sekwencyjnej i równoległej. Zainstalowany został pakiet w wersjach 3.9, 3.11, 3.13.2.

Zalecenia ogólne
  • Prosimy o nie tworzenie dużych plików trajektorii ani restartów w katalogach domowych /home. Powoduje to blokowanie serwerów NFS a tym samym całych klastrów i wszystkich pozostałych zadań obliczeniowych. Duże pliki prosimy generować wyłącznie na dyskach /scratch.
  • Prosimy o nie używanie polecenia qdel do kończenia zadania (CPMD niepoprawnie obsługuje sygnały). Zamiast tego, w katalogu zadania należy utworzyć pusty plik o nazwie EXIT i poczekać na automatyczne zakończenie się zadania:
touch EXIT
  • Wszystkie potencjały, także niestandardowe - dostępne na stronach domowych CPMD, zostały zainstalowane w katalogach /usr/local/CPMD-xxx/PPLIBNEW/. Jeśli zachodzi potrzeba użycia własnych potencjałów, to przed wykonaniem skryptu sub-cpmd (opisane poniżej), należy ustawić zmienną środowiskową:
export PP_LIBRARY_PATH=/moj/katalog_z_PP/
  • Prosimy nie używać własnych skryptów do wstawiania zadań. Utrudnia to wprowadzanie zmian systemowych.
Wstawianie zadań do kolejki

Wstawianie zadań CPMD do poszczególnych kolejek systemu PBS odbywa się przez wywołanie skryptu (lokalizacja: /usr/local/bin):

sub-cpmd plik_wejsciowy.inp [kolejka] [liczba_cpu] [pamiec_per_cpu_w_MB]

gdzie:

  • plik_wejsciowy.inp - plik z danymi programu
  • pamiec_per_cpu_w_MB - pamięć operacyjna per 1 cpu podana w MB (domyślnie 1800 MB).
  • kolejka - kolejka PBS, w której ma być uruchomione zadanie (domyślnie parallel)
  • liczba_cpu - liczba procesorów na których ma liczyć się zadanie (domyślnie 4).

Skrypt uruchamia najnowszą wersję programu. Wyniki obliczeń będą wygenerowane do pliku z rozszerzeniem .out.

Leo

wersja: 3.9.2, 3.11.1, 3.13.2

Na Leo CPMD działa sekwencyjnie i równolegle. Zadania typu Path Integrals prosimy wstawiać do kolejki skryptem sub-cpmd-PI.

Nova

wersja: 3.11.1, 3.13.2

Na klastrze Nova dostępna jest wersja równoległa (kompilacja z MKL, MVAPICH).

Zadania wstawiane poleceniem sub-cpmd standardowo startują z dysku /lustre/scratch/, który jest współdzielony przez wszystkie węzły, w tym dostępowy.

Plik wyników tworzony jest na dysku /home/. Tworzenie plików RESTART itp. na dysku /home/ jest zabronione. Pliki te będą automatycznie kasowane.

Uwagi

CPMD był testowany na wielu maszynach obliczeniowych (Grom, Układ, Gromada). Testy wykazały nie do końca przewidywalne zachowanie pakietu podczas uruchomień równoległych i jego wrażliwość na zmiany parametrów wejściowych.

Testy przedstawione poniżej odbywały się na nieobciążonych węzłach klastra Gromada. Wyników testów nie można traktować jako podstawy do ścisłego określenia wydajności obliczeniowej klastra, celem testowych uruchomień nie było benchmarkowanie. Wyniki wskazują natomiast na problemy pojawiające się podczas równoległego uruchamiania programu.

Wykres piłowy dla przyspieszenia obliczeń równoległych CPMD na Gromadzie

Konfiguracja testów:

  • plik wejściowy CPMD (pobrany ze strony autora pakietu)
  • CPMD VER 3.9.1
  • klaster Gromada (nieobciążony, sieć Infiniband, węzły dwuprocesorowe)
  • MPICH z dev VMI (do obsługi sieci Infiniband), konfiguracja w obrębie węzła shared, między węzłami distributed.

Uzyskane wyniki ilustruje wykres przyspieszenia. Jak widać, jest to wykres piłowy, wykresy o podobnej charakterystyce (chociaż bardziej wyrównane) były uzyskiwane podczas testów na innych serwerach. Program zrównolegla się bardzo dobrze dla pewnych ilości procesorów, podczas gdy dla innych osiąga wyniki bliskie sekwencyjnemu. Średnia tendencja przyspieszenia jest wzrostowa, jednak złe rezultaty uzyskiwane dla niektórych konfiguracji wymagają uważnego doboru parametrów.

Wyniki trudno jednoznacznie zinterpretować, ponieważ nie wykazują bezpośredniej zależności od żadnego z parametrów środowiska i parametrów wejściowych programu. Program liczy FFT i możliwe, że dłuższe czasy dla większej liczby procesorów wynikają z nieoptymalnego podziału danego problemu pomiędzy procesory, jednak nie udało się ustalić tego jednoznacznie. Z informacji autora pakietu wynika, że program może wykazywać tego typu nieregularności, jednak ustalenie przyczyny nie jest proste, ze względu na skomplikowane i trudne do identyfikacji zależności między dziedziną i parametrami programu a czasem wykonania.

Zwiększanie parametru CUTOFF powoduje szybki wzrost czasu obliczeń, jak również większe zużycie pamięci.

Nie jest zalecane uruchamianie wersji równoległej programu CPMD jednoprocesowo. Jest to związane z wielokrotnie wyższym zużyciem pamięci niż w wersji sekwencyjnej, dokumentacja podaje, że nawet 10-krotnie wyższym. Prowadzi to do niepotrzebnych strat zasobów.

Dokumentacja

Dokumentacja CPMD dostępna jest na każdym z serwerów w katalogu instalacji, np. na Leo: /usr/local/CPMD/manual/manual.pdf .

CPMD w sieci

Bibliografia

  • Jorge Kohanoff: Electronic Structure Calculations for Solids and Molecules: Theory and Computational Methods. Cambridge University Press (May 31, 2006), s. 384. ISBN: 0521815916. (w języku angielskim)

Zobacz też: