Systemy wizualizacji obliczeń czyli Jak pokazać abstrakcję

Wielkie problemy obliczeniowe w rodzaju symulacji wydajności złóż ropy naftowej na podstawie danych sejsmograficznych, analiza kwantowej gęstości elektronów wokół cząsteczki enzymu czy analiza aerodynamiczna i wytrzymałościowa skrzydła odrzutowca dostarczają ogromnych ilości danych mierzalnych już tylko kilometrami zadrukowanego papieru. Do właściwej ich interpretacji czy choćby ogarnięcia wzrokiem niezbędny jest jakiś sposób ich prezentacji graficznej.

Wielkie problemy obliczeniowe w rodzaju symulacji wydajności złóż ropy naftowej na podstawie danych sejsmograficznych, analiza kwantowej gęstości elektronów wokół cząsteczki enzymu czy analiza aerodynamiczna i wytrzymałościowa skrzydła odrzutowca dostarczają ogromnych ilości danych mierzalnych już tylko kilometrami zadrukowanego papieru. Do właściwej ich interpretacji czy choćby ogarnięcia wzrokiem niezbędny jest jakiś sposób ich prezentacji graficznej.

W ograniczonym zakresie w tworzeniu wykresów funkcji jednej lub dwóch zmiennych mogły pomóc programy typu PLOTIX, jednak praktycznie jedynym sposobem na wizualizację wyników obliczeń było samodzielne napisanie jakiejś ad hoc wymyślonej procedury stanowiącej wypadkową specyfiki problemu, dostępnego sprzętu i bibliotek graficznych i wreszcie wyobraźni, umiejętności i wolnego czasu autora programu (obudowę graficzną uznawano dość powszechnie za zbiór "bajerów" o wartości drugorzędnej w stosunku do właściwego programu obliczeniowego - mniej więcej równorzędnie z melodyjką odgrywaną po zakończeniu obliczeń).

Pewien przełom w myśleniu przyniosło pojawienie się pakietów czy systemów komercyjnych (np. pakietów obliczeń metodą elementu skończonego czy pakietów chemii komputerowej), pozwalających naocznie sprawdzić, ile do zrozumienia wyników obliczeń może wnieść ich właściwa wizualizacja. Nie rozwiązywało to jednak problemu graficznej prezentacji wyników obliczeń własnym programem - w takich pakietach część graficzną integruje się zwykle dość ściśle z procedurami numerycznymi, pozostaje więc tylko "oszukiwanie" wprowadzeniem własnych wyników jako danych wejściowych lub podobnymi sztuczkami. Radykalna zmiana podejścia do wizualizacji wyników obliczeń nastąpiła w momencie pojawienia się na rynku tzw. systemów wizualizacji dla programów użytkowych. Jednym z nich jest Application Visualization System (AVS), zapoczątkowany w 1989 r. przez firmę Stardent Computer Systems. produkującą minisuperkomputery o przeznaczeniu graficznym Stardent GS i Titan. AVS przeżył zresztą Stardenta, który znikł z rynku sprzętowego w ubiegłym roku. Obecnie AVS jest rozwijany przez konsorcjum, w którego skład wchodzi m.in. Cray Research i SUN. AVS jest dostępny na szybkich, wydajnych stacjach graficznych typu SUN GTX lub Evans and Sutherland pracujących w UNIXowym systemie Xwindows. Maszyna musi dysponować przy tym ekranem o rozdzielczości min. 1024x768 punktów z równocześnie dostępnymi co najmniej 256 kolorami, choć pełne możliwości system pokazuje dopiero na ekranie 1280x1024 z pełną 24-bitową paletą 16 mln odcieni i sprzętowo realizowaną grafiką trójwymiarową. Cóż więc otrzymujemy, inwestując ok. 30 tys.USD, bo tyle praktycznie kosztuje skromna stacja robocza spełniająca powyższe wymagania + licencja na AVS? Wyobraźmy sobie megabajtowy zbiór danych (binarnych bądż ASCII), zwany (po uzupełnieniu o informacje dotyczące liczby wymiarów i wymiarów siatki, postaci danych i ich formy etc.) w języku AVS "polem", opisujący np. rozkład prędkości gazu w tunelu aerodynamicznym o prostokątnym przekroju. Chcielibyśmy móc obejrzeć np., jak wygląda rozkład szybkości lub linie, wzdłuż których przemieszczają się cząsteczki gazu. Uruchamiamy AVS i wywołujemy w nim (dwoma stuknięciami myszy) blok "budowy sieci". Przed nami katalog ponad setki modułów składających się na AVS - od wprowadzania danych przez ich "filtrowanie" do modułów właściwej prezentacji graficznej i zobrazowania. Niżej - pole robocze, na które ściągamy myszą kolejno moduły "przeczytaj pole", "zewnętrzne kontury siatki", "linie przepływu", "norma wektora", "mapa kolorów", "przekrój", wreszcie "zrealizuj geometrię" i "pokaż obraz", symbolizowane przez prostokąty z małymi różnokolorowymi "gniazdkami", które za chwilę połączymy "przewodami", znów przez wskazanie myszą odpowiednich połączeń. Struktura połączeń odzwierciedla logikę przepływu informacji. Po wczytaniu naszego zbioru danych przekazujemy opis ścianek tunelu do modułu "konturów", obliczamy w każdym punkcie normę wektora prędkości (czyli szybkość), której rozkład chcemy oglądać na dowolnym przekroju tunelu, natomiast całość danych wektorowych będzie podstawą do obliczenia linii przepływu. Wszystkie te informacje integrujemy w jeden obraz przekazując wyniki pracy poszczególnych modułów do bloku "realizacji geometrii" aby wreszcie otrzymany obraz wyświetlić na ekranie. Każdy umieszczony w polu roboczym moduł wyświetla swój "panel kontrolny" - np. moduł "przeczytaj pole" pokaże okienko z katalogiem dostępnych zbiorów danych, "linie przepływu" - przyciski i pokrętła (obsługiwane oczywiście myszą) sterujące gęstością linii i ich długością itp. Ustawiamy wstępnie wartości tych parametrów kontrolnych i wskazujemy nasz zbiór danych. Po niedługim czasie (na stacji graficznej ESV10 Evansa i Sutherlanda z 25 MHz procesorem MIPS R3000 po ok. minucie) w okienku graficznym pojawia się obraz. Mamy teraz do dyspozycji ogromny moduł prezentacji graficznej (zależny od konkretnej realizacji AVS), dający możliwość obracania i przesuwania obrazu, zmiany jego kolorystyki, oświetlenia czy perspektywy, wyboru tylko niektórych spośród stworzonych przez nas obiektów (możemy na przykład zrezygnować z wyświetlania ścianek tunelu lub mapy szybkości przepływu na przekroju) itp. operacji. Tym razem ESV10 wykonuje nasze zlecenia niemal natychmiastowo (np. obrót rysunku w przestrzeni płynnie nadąża za ruchem myszy) dzięki specjalizowanym procesorom graficznym. W niektórych przypadkach (gdy np.jako tzw. obiekt bieżący wybierzemy płaski przekrój) przesunięcie czy obrót powoduje ponowne przeliczenie danych - przesuwając płaszczyznę przekroju od wlotu do wylotu tunelu możemy w kilka minut zbadać cały rozkład szybkości w całym badanym obszarze. Otrzymane obrazy możemy teraz wydrukować (o ile dysponujemy drukarką do hardcopy ekranu lub drukarką postscriptową), nagrać na taśmę video lub zapisać na dysku we własnym formacie AVS. Możemy przy tym przygotować całą sekwencję animacji, wyświetlaną w postaci cyklicznego filmu rysunkowego - z możliwością interakcyjnego modyfikowania wyświetlanych scen. To tylko jeden, wprawdzie dość rozbudowany przykład. Biblioteka modułów oraz gotowych schematów przetwarzania pozwala budować np. proste systemy przetwarzania obrazów (z filtrowaniem, wyciągami barw etc.), rozbudowany system wykresów funkcji jednej i dwóch zmiennych, prezentację budowy cząsteczek chemicznych etc. Jeżeli i to nam nie wystarcza, obszerna dokumentacja i dołączone przykłady pokazują, jak można pisać własne moduły wykorzystujące standardowe struktury danych AVS i integrować je z systemem w wersji oryginalnej. System AVS wykorzystuje w bardzo istotny sposób możliwości systemu UNIX (moduły działają jako procesy komunikując się przez wspólne obszary pamięci) i Xwindows - użytkownik może ustalać najwygodniejszą dla siebie organizację ekranu korzystając z dobrze znanych mechanizmów Xwindows. Warto jeszcze wspomnieć o egzotycznych jeszcze w naszych warunkach możliwościach zdalnego uruchamiania modułów: te z nich, które wymagają najintensywniejszych obliczeń, jak np. liczenie powierzchni równych wartości funkcji, interpolacje czy procedury wolumetryczne można przekazać do realizacji na wydajniejszej maszynie, do której mamy dostęp sieciowy, pozostawiając na lokalnej stacji roboczej jedynie bezpośrednie operacje graficzne. Twórcy AVS zachęcają nawet do integrowania programów użytkowych jako modułów i tworzenie w ten sposób własnej wyspecjalizowanej wersji systemu oferując gotową do użytku "otoczkę" interakcyjną obejmującą np. wprowadzanie parametrów przez "suwaki", "pokrętła" i "przyciski". Podobne wartości funkcjonalne prezentuje system Iris Explorer rozwijany przez firmę Silicon Graphics na stacjach graficznych Iris (dopuszczający również współpracę z maszynami Cray) i apE powstały na Ohio University. Czy można spodziewać się powstania jakiejś wersji systemu typu AVS na skromniejszym sprzęcie? Trudno tu o optymizm - słabsza o parę rzędów wielkości wydajność graficzna podważa zdecydowanie sens całego przedsięwzięcia, jakim jest niewątpliwie możliwość pracy interakcyjnej z czasem reakcji systemu poniżej kwadransa. Pewnym rozwiązaniem możliwym dzięki ogólności mechanizmów Xwindows jest praca z AVS na terminalu graficznym z pozostawieniem części obliczeniowej na zdalnie dostępnym serverze. Terminal Xwindows musi jednak spełniać dość ostre wymagania wypisane powyżej.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200