Biuletyn nr 8

Biuletyn KDM
1 | 2 | 3 | 4 | 5
6 | 7 | 8 | 9 | 10
11 | 12 | 13 | 14
15 | 16 | 17 | 18
19 | 20 | 21 | 22
23 | 24 | 25 | 26
27 | 28 | 29 | 30
31 | 32
Lista biuletynów

Biuletyn nr 8 (27 stycznia 2006)

Spis treści

Narzędzia: Tripos

Autor: Piotr Setny

Tripos (http://www.tripos.com ) jest jedynym z największych dostawców oprogramowania mającego zastosowanie w naukach biomolekularnych. Firma istnieje od ponad 25 lat i ma siedzibę w Saint Louis w USA. Jej głównym produktem jest program Sybyl (obecnie w wersji 7.1), stanowiący zbiór wielu pakietów, których funkcjonalność obejmuje następujące dziedziny:

  • Konstruowanie nowych molekuł, optymalizacja i analiza ich struktury oraz symulacje dynamiki molekularnej. W skład programu wchodzi moduł pozwalający na wygodne konstruowanie złożonych cząsteczek chemicznych. Możliwe jest również importowanie struktur zapisanych w formacie SMILES. Generowanie struktur przestrzennych zapewnia program Concord (wykorzystujący szybkie algorytmy empiryczne do przewidywania prawdopodobnych struktur małych cząsteczek), moduł mechaniki molekularnej, bądź, wykorzystujący kwantowe metody półempiryczne, program Mopac. Moduł dynamiki molekularnej wykorzystujący pola siłowe Amber, Kollman, MMFF, Tripos pozwala na prowadzenie symulacji w zespołach NVE, NVT oraz NPT.
  • Projektowanie leków. Pakiety służące do projektowania leków stanowią mocną stronę oprogramowania firmy Tripos. Wśród nich znajdują się programy z grupy FlexX, przeznaczone do projektowania leków w oparciu o strukturę receptora, z których warto wymienić FlexX-Pharm (umożliwiający zdefiniowanie więzów farmakoforycznych) oraz FlexX-E (pozwalający na uwzględnienie giętkości receptora). Oba umożliwiają dokowanie pojedynczych molekuł jak i całych baz danych. Analizę wyników wspomaga moduł CScore, zawierający zbiór kilkunastu popularnych funkcji oceniających oraz algorytmy przesiewania wyników w oparciu o różnorodne kryteria. Generowanie farmakoforu na podstawie znanych ligandów umożliwiają programy GASP, DISCOtech oraz Tuplets. Sybyl zawiera także rozbudowane moduły do analizy QSAR. Cennym dodatkiem jest możliwość analizy pól molekularnych (CoMFA), opatentowana przez firmę Tripos.
  • Przeszukiwanie molekularnych baz danych. Moduł Unity pozwala na przeszukiwanie molekularnych baz danych w oparciu o rozbudowany system zapytań. Możliwe jest także wyszukiwanie cząsteczek o określonej strukturze przestrzennej, spełniających więzy farmakoforyczne wygenerowane na podstawie zadanej struktury receptora.
  • Analiza i generowanie struktur białek i kwasów nukleinowych. Narzędzia wchodzące w skład modułu Biopolymer umożliwiają przewidywanie struktur drugo- i trzeciorzędowych oraz konstruowanie "pętli" w białkach w oparciu o homologię w stosunku do znanych molekuł (razem z oprogramowaniem Tripos dostarczana jest baza danych Prodat, zawierająca wysokiej jakości struktury białkowe) jak i "de novo", wykorzystując dostępne pola siłowe. Moduł ProTable pozwala na powiązanie właściwości strukturalnych białka z jego sekwencją i analizę właściwości fizykochemicznych poszczególnych aminokwasów przy wykorzystaniu wbudowanego arkusza kalkulacyjnego. Dzięki modułowi SiteID możliwe jest znajdowanie potencjalnych miejsc wiążących.

Poza wymienionymi możliwościami Sybyl pozwala również na generowanie molekularnych bibliotek kombinatorycznych, ocenę toksyczności potencjalnych ligandów czy też analizę danych NMR. Warto również wspomnieć o bogatych możliwościach wizualizacji molekuł (małych cząsteczek jak i białek) i ich właściwości fizykochemicznych. Dodatkową zaletą programu jest wbudowany język skryptowy SPL ( SYBYL Programming Language) pozwalający na zautomatyzowanie często powtarzanych czynności oraz pisanie własnych modułów (łącznie z interfejsem graficznym).

Wszystkie pakiety pracują pod wspólnym interfejsem graficznym i wykorzystują wspólny format zapisu, dzięki czemu dane i struktury molekuł wygenerowane przez jeden moduł mogą być bez problemu wykorzystane w innym.

Wymagania sprzętowe

Z oprogramowania firmy Tripos można z powodzeniem korzystać na średniej klasy komputerze osobistym działającym w środowisku Linux. Choć producent zaleca wykorzystanie dystrybucji RedHat Enterprise Linux, program działa bez problemów pod darmowym systemem Fedora Core. Sybyl działa także na komputerach SGI z systemem operacyjnym IRIX oraz na stacjach roboczych HP.

Dostępność oprogramowania - system licencji krajowej

Ponieważ program Sybyl w dużym stopniu bazuje na graficznym interfejsie użytkownika i pracy interaktywnej najwygodniejszym sposobem korzystania z niego jest praca na własnym komputerze. Zakup licencji dla użytkowników akademickich na korzystnych warunkach umożliwia system licencji krajowej. Dzięki niemu za fundusze Ministerstwa Nauki i Informatyzacji funkcjonuje w Polsce centralny serwer licencji zlokalizowany w ICM. Poszczególni użytkownicy uzyskują do niego dostęp po podpisaniu umowy z firmą Tripos i uiszczeniu na jej rzecz stosownej opłaty (szczegóły tutaj: Tripos).

Linki

  • Informacje o licencji krajowej na oprogramowanie Tripos

Pomocy technicznej i dodatkowych informacji na temat oprogramowania firmy Tripos udziela Piotr Setny.


Porady: MPE

Autor: Maciek Szpindler

Przykład użycia.

Projektując zadanie obliczeniowe w postaci algorytmu równoległego lub zrównoleglając wcześniej napisany program często napotyka się różne trudności. Zaprojektowanie algorytmu równoległego dla wybranego problemu nie jest z reguły proste. Poza trudnościami na poziomie samego algorytmu pojawiają się często kłopoty z komunikacją lub synchronizacją. Chciałoby się wtedy zobaczyć jak "wygląda" zastosowana przez nas równoległość - jak komunikują się poszczególne procesory wykonujące nasz program równoległy i kiedy wykonują daną jego część.

Do tego celu służy zestaw procedur zebranych w bibliotece MPE (Multi-Processing Environment). Biblioteka MPE jest standardowo dołączana do implementacji mpich biblioteki MPI. Jest ona dostępna w ICM.

MPE pozwala tworzyć pliki (logi) w których zostaje zapisany przebieg wykonania naszego programu na wszystkich procesorach. Można to zrobić na dwa sposoby:

  • automatycznie, dołączając podczas kompilacji naszego programu odpowiednie biblioteki,
  • według własnych potrzeb - ręcznie - wywołując w naszym programie odpowiednie procedury MPE.

Uzyskane logi można przetwarzać i oglądać w postaci wykresów za pomocą programu Jumpshot, dziającego w trybie graficznym.

Zobaczmy jak używać podstawowych możliwości MPE na prostym przykładzie. Załóżmy, że mamy procedurę, która realizuje algorytm Fox'a równoległego mnożenia macierzy. Nasz program korzysta z tej procedury i jest zapisany w pliku źródłowym fox.c.

Chcemy prześledzić przebieg programu używając biblioteki MPE w sposób automatyczny. Mamy do wyboru następujące tryby:

  • mpitrace - śledzi wszystkie wywołania biblioteki MPI w naszym programie,
  • mpianim - pozwala tworzyć animacje,
  • mpilog - tworzy log z przebiegiem programu na wszystkich procesorach.

Wykonujemy kompilację naszego programu, ustawiwszy wcześniej stosowne środowisko mpich-a, z odpowiednią opcją:

mpicc -o fox fox.c -mpixxx

Po wykonaniu programu uzyskujemy odpowiedni log z przebiegu naszego programu. Opcja mpitrace wyśle domyślnie wynik na standardowe wyjście, opcja mpilog zapisze plik fox.clog z odpowiednim logiem przebiegu naszego programu.

Jeżeli chcemy wywołać procedury MPE bezpośrednio z naszego programu (może to być przydatne np. gdy chcemy prześledzić tylko przebieg konkretnej funkcji MPI wywoływanej w naszym programie) możemy to zrobić przykładowo w następujący sposób.

Biblioteka MPE może rejestrować wybrane przez nas zdarzenia w programie. Musimy je określić wywołując odpowiednie procedury. Robimy to wewnątrz części programu wykonywanej w trybie MPI. Na początek należy zainicjować bibliotekę MPE:

MPE_Init_log();

Określić i nazwać zakres zdarzeń (stan), który chcemy prześledzić:

mpe_event1 = MPE_Log_get_event_number();
mpe_event2 = MPE_Log_get_event_number();
MPE_Describe_state(mpe_event1, mpe_event2, "Nazwa stanu", kolor);

Wystąpienie zdarzenia można określić wywołaniem:

MPE_Log_event(mpe_event1, 0, "Etykieta 1"); 

...

MPE_Log_event(mpe_event2, 0, "Etykieta 2");	

Zakończenie działania biblioteki MPE powoduje wywołanie:

MPE_Finish_log("fox-mpe");

gdzie jako parametr podajemy nazwę pliku z logiem.

Załóżmy, że dla przykładu w naszym programie mnożącym macierze przy użyciu algorytmu Fox'a chcemy zarejetrować następujące zdarzenia: wywołanie procedury Fox, przesyłanie danych pomiędzy procesorami przy pomocy MPI_Bcast, MPI_Send, MPI_Recv oraz wykonywanie obliczeń na poszczególnych procesorach. W tym celu wywołujemy odpowiednie polecenia biblioteki MPE w głównej funkcji programu:

int main(int argc, char** argv)
{
   int i, j, k, n;
   int p, rank;
   MPI_Status status;
   int mpe_e1, mpe_e2;

   /* inicjalizacja biblioteki MPI */	
   MPI_Init(&argc, &argv);
   MPI_Comm_rank(MPI_COMM_WORLD, &rank);
   MPI_Comm_size(MPI_COMM_WORLD, &p);

   /* inicjalizacja biblioteki MPE */
   MPE_Init_log();
   mpe_e1 = MPE_Log_get_event_number();
   mpe_e2 = MPE_Log_get_event_number();
   
   /* okreslenie stanu wykonanie procedury Fox */
   MPE_Describe_state(mpe_e1, mpe_e2, "Fox", "green");

   ...    

   /* przebieg tej czesci programu zostanie zapisany */ 
   MPE_Log_event(mpe_e1, 0, "Fox start");

   Fox(...);
   
   MPE_Log_event(mpe_e2, 0, "Fox end");
   
   ...   
			
   /* zakonczenie dzialania MPE */
   MPE_Finish_log("fox-mpe");
   
   /* zakonczenie dzialania MPI */
   MPI_Finalize();												
   
   return 0;
}

Podobnie postępujemy z procedurą Fox:

void Fox(int n, GRID_INFO_TYPE* grid, LOCAL_MATRIX_TYPE* A, LOCAL_MATRIX_TYPE* B, LOCAL_MATRIX_TYPE* C)
{
   LOCAL_MATRIX_TYPE* temp_A;
   int step, bcast_root, src, dest, k;
   int mpe_e1, mpe_e2, mpe_e3, mpe_e4;
   MPI_Status status;
	
   mpe_e1 = MPE_Log_get_event_number();
   mpe_e2 = MPE_Log_get_event_number();
   mpe_e3 = MPE_Log_get_event_number();
   mpe_e4 = MPE_Log_get_event_number();

   ...
       
       /* stan Komunikacja */		
       MPE_Describe_state(mpe_e1, mpe_e2, "Bcast", "blue");
       MPE_Log_event(mpe_e1, 0, "Bcast start");
		
       MPI_Bcast(...);
		
       MPE_Log_event(mpe_e2, 0, "Bcast end");
       
       /* stan Lokalne mnozenie */ 
       MPE_Describe_state(mpe_e3, mpe_e4, "Lokalne mnozenie", "red");
       MPE_Log_event(mpe_e3, 1, "Mnozenie start");
	
       local_matrix_multiply(A, B, C);

       MPE_Log_event(mpe_e4, 1, "Mnozenie end");

   ...	

}

Po skompilowaniu tak przygotowanego programu i uruchomieniu go przykładowo na 4 procesorach, otrzymamy plik fox.clog z zapisem jego przebiegu na tych procesorach.

Plik CLOG możemy otworzyć w programie Jumpshot wywołując komendę (wymaga ustawienia odpowiedniego środowiska dla mpich):

>> jumpshot

Jumpshot poprosi nas o skonwertowanie pliku do formatu SLOG-2, a kiedy to wykonamy pokaże okno z wykresem przebiegu programu na wszystkich procesorach oraz legendę z uwzględnieniem opisanych przez nas w programie stanów (Fox, Bcast, Lokalne mnozenie).

Jumpshot1.png

Analogicznie możemy postąpić z plikiem CLOG wygenerowanego automatycznie.

Aby dostać w wyniku od razu plik w formacie SLOG-2, używanym przez Jumpshot-a, należy uwzględnić to przy wywoływaniu komendy mpiexec, przykładowo:

mpiexec -np 4 ./fox-mpe MPE_LOG_FORMAT=SLOG2


Biblioteka mpich wraz z MPE i programem Jumpshot są dostępne w ICM na klastrze halo.


Dalsze informacje:


Maszyny: Rozbudowa klastra halo

Autor: Łukasz Bolikowski

Klaster halo został ostatnio istotnie rozbudowany. Oprócz dotychczasowych węzłów, dostępnych jest 12 węzłów z czteroma procesorami Opteron 2.2GHz dual-core. Dwurdzeniowość (dual-core) sprawia, że węzły są logicznie 8-procesorowe.

W nowej części klastra znajduje się też więcej pamięci: po 16 GB RAM i 112 GB dyskowej w każdym nowym węźle.

Cały klaster wygląda więc teraz następująco:

  • 97x 2x AMD Opteron 2GHz, 2 GB RAM, 76 GB HDD
  • 12x 8x AMD Opteron 2.2GHz, 16 GB RAM, 112 GB HDD (nowe węzły)

Programowanie

Programy równoległe napisane przy pomocy biblioteki MPI mogą korzystać z nowych węzłów, podobnie jak to miało miejsce ze "starymi" węzłami.

Chcąc jednak maksymalnie wykorzystać możliwości nowych węzłów, warto zrównoleglać programy wykorzystując mechanizm OpenMP, opisywany w Biuletynie nr 7.

Do jakich obliczeń warto używać?

Nowe węzły z pewnością będą przydatne dla użytkowników uruchamiających programy wymagające pamięci współdzielonej i jak największej liczby procesorów (np. program Gaussian). Na te węzły pasują też doskonale programy zrównoleglone dyrektywami OpenMP. Wreszcie, węzły są w stanie przyjąć programy wymagające bardzo dużej pamięci RAM.

Kolejki

Chcąc skierować swoje zadanie na nowe węzły, należy w skrypcie PBS umieścić linijkę:

 #PBS nodes=1:ppn=4,1:ppn=8

Proszę zauważyć, że zadania jedno- i dwuprocesorowe nie zostaną skierowane na węzły 8-procesorowe. Szerzej o systemie PBS i systemach kolejkowych w ICM pisaliśmy w Biuletynie nr 4.

Dostęp do klastra

Każdy użytkownik posiadający konto na klastrze halo ma dostęp zarówno do starych, jak i do nowych węzłów.

Ci z użytkowników ICM, którzy nie posiadają konta na klastrze halo, a chcieliby je uzyskać, proszeni są o przesłanie zgłoszenia na adres hpc-admins@icm.edu.pl (nie są wymagane żadne dodatkowe formularze/podpisy/pisemne wnioski).


Wydarzenia: Warsztaty KFnrD

Autor: Łukasz Bolikowski

W ubiegłym tygodniu w ICM gościli stypendyści Krajowego Funduszu na rzecz Dzieci. Jest to stowarzyszenie, które za jeden z celów stawia "poprawę warunków rozwoju dzieci i młodzieży, zwiększenie szans pełnego rozwoju dzieciom wybitnie uzdolnionym".

ICM, podobnie jak wiele innych ośrodków naukowych w Polsce, współpracuje czynnie z KFnrD, organizując dla młodzieży licealnej o zainteresowaniach ścisłych coroczne warsztaty modelowania komputerowego.

W tym roku uczestnicy warsztatów pracowali nad trzema zagadnieniami:

  • przepływem cieczy w złożonych sieciach, przedstawionym przez prof. Marka Niezgódkę
  • segmentacją danych z obrazów medycznych, przedstawionym przez dr. Krzysztofa Nowińskiego
  • uliniawianiem sekwencji aminokwasów, przedstawionym przez dr. Witolda Rudnickiego

Każdemu z tematów towarzyszyły wykłady. Pozostały czas uczestnicy spędzili w laboratorium komputerowym pisząc programy rozwiązujące przedstawione problemy.

Więcej informacji o KFnrD na stronie: http://www.fundusz.org/

Czaszka.png Czaszka.map.png
Segmentacja obrazów medycznych (wynik działania programu p. Jarosława Błasioka)