Apple way - część 5 - CSI Macintosh
Na początek intymne wyznanie - jestem stałym i wiernym oglądaczem wszystkich odsłon kryminalnego cyklu o funkcjonariuszach CSI. Czy to w Nowym Jorku czy w Miami geniusz policyjnych analityków rzuca mnie zawsze na kolana. Stworzenie portretu przestępcy na podstawie odbicia jego wizerunku w zderzaku zaparkowanego na miejscu zbrodni samochodu jest prawdziwym wyczynem i nie jest to akurat wyczyn najbardziej spektakularny. Te najciekawsze zwykle realizowane są z pomocą wybajerzonych komputerów na trójwymiarowych pulpitach wirujących w powietrzu jak hologramy, a najbardziej wyrafinowane analizy trwają w najgorszym przypadku jakieś siedem minut. No, może osiem. Przecudnej urody funkcjonariuszka swoimi zgrabnymi paluszkami wbija z wirtualnej klawiatury kilka literek lub cyferek odszyfrowanych ze skrawka spalonego prawa jazdy i już po chwili na ekranie pojawia się zdjęcie złoczyńcy (lub ofiary) w ujęciu modelowym, opisane milionem parametrów z rozmiarem buta i kulinarnymi upodobaniami na czele - po prostu ideał państwa policyjnego. I to wszystko w efektownej cukierkowej oprawie jakiej nawet w grach nie uświadczymy. Fantazja? W takim wydaniu na pewno tak, ale sama idea już taka fantastyczna nie jest.
Zwykle przy takiej okazji staram się na ekranie wypatrzeć mojego ulubionego Maczka, wszak jest to chyba najlepszy aktor wśród komputerów, ale akurat w CSI Maczki nie przeszły castingu. A szkoda, pasowałyby tutaj całkiem nieźle. Firma Apple zawsze z dużym respektem odnosiła się do sfer uniwersyteckich, naukowych i szeroko pojętej edukacji. Swojego czasu był to nawet obszar gorącego sporu ze swoim głównym konkurentem, który oskarżał Apple o nieuczciwą konkurencję na tym polu. Dzisiaj mało kogo zaskakuje iMac na biurku genetyka lub MacBook w torbie uniwersyteckiego fizyka i przyczyną tego nie jest snobizm czy upodobanie a jedynie praktyka. Komputery Apple, a właściwie ich oprogramowanie ma kilka cech, które bywają cenne dla ludzi nauki.
Z czysto praktycznego punktu widzenia fakt, że MacOSX jest systemem zgodnym ze specyfikacją UNIX03 automatycznie daje mu fory na drodze do serc studentów i naukowców. Apple konsekwentnie dba o potwierdzanie tych dobrych opinii oferując sporo narzędzi systemowych wspierających ich pracę. Najważniejszym jest oczywiście pakiet Xcode - kompletne środowisko programistyczne, regularnie aktualizowane i dostarczane wraz z każdą kopią systemu. Pozwala pisać programy praktycznie w dowolnym popularnym i obecnym w systemie języku programowania, od C przez Ruby do Pythona. Wszystko to bardzo dobrze udokumentowane i wspierane, a nie bez znaczenia jest też brak opłat za to narzędzie. Można co prawda skorzystać z płatnego (99$/rok) uczestnictwa w Mac Developer Program, ale nie jest to obowiązkowe. Dzięki temu powstaje dużo specjalistycznego, niszowego oprogramowania tworzonego w dużej mierze dla potrzeb konkretnych projektów naukowych. Dodatkowym atutem są promowane przez Apple rozwiązania i technologie wspierające prace programistów. OpenCL, Grand Central Dispatch, Quartz Extreme, Xgrid - to tylko te najważniejsze.
OpenCL - Open Computing Language - otwarta konkurencja dla np. CUDA Nvidii, pozwala na zaprzęgnięcie do pracy mocy procesorów wszystkich urządzeń obecnych w systemie, np. kart graficznych. Dzięki temu zmiennoprzecinkowe operacje mogą być wykonywane tysiące razy szybciej i doceniają to wszyscy ci, którzy programują algorytmy analiz danych np. meteorologicznych lub molekularnych. Bazujący na C99 język korzysta z API umożliwiającego kontrolę dowolnego urządzenia i ich równoległą pracę.
GDC - Grand Central Dispatch - opracowana przez Apple technologia wsparcia dla programowania aplikacji działających w 64‑bitowym środowisku MacOSX na procesorach wielordzeniowych. Dzięki niej można już na etapie projektowania aplikacji zadbać o równomierne wykorzystanie mocy wszystkich rdzeni lub zdecydować o rozdziale wątków na każdy z nich. Początkowo technologia ta sprawiała pewne problemy, ale po wyrośnięciu z wieku dziecięcego nabrała rozpędu i jest dzisiaj jedną z najważniejszych cech MacOSX. M.in. dzięki technologii GDC aplikacje optymalizowane pod MacOSX Snow Leopard notują lepsze wyniki wydajności niż uruchamiane bez niej na starszych systemach. Osiągane są nawet kilkudziesięcio-procentowe wzrosty wydajności.
Quartz i Quartz Extreme - API odpowiedzialne za renderowanie grafiki na ekranach komputerów. Quartz obsługuje grafikę 2D (także wektorową) na bazie formatu PDF, Quartz Extreme realizuje obsługę okienkową systemu i aplikacji zapewniając przy okazji interakcję z użytkownikiem. Wykorzystuje potencjał współczesnych kart graficznych i dzięki temu pozwala na generowanie najróżniejszych efektów. W dużej mierze Quartz Extreme jest odpowiedzialne za efektowny wygląd Findera. Z kolei dzięki technologii Quartz uzyskujemy nieograniczony dostęp do formatu PDF, który w MacOSX może być obsługiwany w dowolnej aplikacji, a sam system wykorzystuje go np. w opisanym już przeze mnie QuickLook.
Xgrid - opracowana przez Apple technologia obsługi klastrów, która praktycznie od chwili udostępnienia spotkała się z dobrym przyjęciem na wielu amerykańskich uczelniach. Umożliwia bardzo proste budowanie sieci obliczeniowych bez konieczności dostępu do czułych zasobów lokalnego komputera. W pakiecie Xcode dostępne są biblioteki pozwalające na pisanie programów korzystających z Xgrid. Tak zorganizowany klaster działa na zasadzie podobnej do tej znanej z projektu Seti@Home - w okresie bezczynności (lub przez cały czas w wydzielonym procesie) komputer wykonuje działania cząstkowe przeliczając wg zadanego algorytmu paczki dostarczanych danych, a następnie zwraca wyniki do kontrolera. Przyłączenie się do klastra i udostępnienie własnej mocy obliczeniowej wymaga jedynie prostej konfiguracji, kilku kliknięć w odpowiednim panelu kontrolnym bez potrzeby instalowania dodatkowego oprogramowania. Udostępniamy tylko moc (lub jej nadmiar) i odrobinę pamięci naszego systemu.
A ile to wszystko ma wspólnego z laboratoriami CSI? W wydaniu filmowym niewiele, ale w praktyce technologie oferowane przez Apple pozwalają na zaprzęgnięcie do pracy obliczeniowej potencjału nie tylko jednego systemu. Dzięki temu możliwe jest wykonywanie skomplikowanych obliczeń i analiz w czasie wielokrotnie (czasami są to krotności liczone w tysiącach) krótszym niż w standardowych warunkach. A są to czynniki niezwykle istotne w krytycznych zastosowaniach, np. takich, jakie możemy oglądać w przywołanym kryminalnym serialu, przy analizie niezliczonej ilości danych. Przykłady można mnożyć - operacje macierzowe, układy równań różniczkowych, liczby pierwsze i wiele innych problemów rozwiążemy dużo sprawniej korzystając np. z OpenCL lub Xgrid.
Nie będę ściemniał, innowacyjność rozwiązań Apple nie dotyczy idei a jedynie narzędzi - podobne rozwiązania dostępne są właściwie na każdej platformie i w większości współczesnych systemów, ale Apple swoje zrealizowało w sposób dla siebie charakterystyczny. Wraz z systemem otrzymujemy wszystkie narzędzia, dzięki którym przy właściwych wiedzy i umiejętnościach możemy szybko i sprawnie stworzyć własną sieć obliczeniową, a przy okazji zaprząc do tego cały potencjał sprzętowy obecny w naszych maszynach. M.in. dlatego w wielu uczelniach amerykańskich komputery Apple cieszą się sporą popularnością w zastosowaniach związanych z meteorologią, fizyką molekularną, genetyką czy kryptologią.
Dla ciekawych:
MacResearch - Macintosh na naukowo OpenMacGrid - sieć obliczeniowa zbudowana na Makach Xgrid@stanford
Program na dziś:
Mały, uruchamiany w tle program, dzięki któremu usprawnimy wykonywanie najczęściej stosowanych w systemie operacji. Uruchamianie aplikacji, otwieranie dokumentów, wyszukiwanie kontaktów i wiele innych dzięki Quicksilver sprowadza się do dwóch prostych czynności - skrót klawiaturowy przywołuje małe okienko, a wpisane w nim kilka pierwszych liter tytułu poszukiwanego obiektu przywoła nam jego ikonę z informacją o lokalizacji. Po naciśnięciu klawisza Return uruchomi się odpowiednia akcja. Quicksilver obsługuje także mechanizm plug-in oraz tzw. triggery. Te pierwsze pozwalają skorzystać z funkcji właściwych dla konkretnych aplikacji lub dokumentów, te drugie pozwalają przypisać akcje do skrótów klawiaturowych. Dzięki temu możemy szybko wykonywać np. skrypty shell’a lub AppleScript. Quicksilver wg mnie to obowiązkowa pozycja w systemie każdego użytkownika MacOSX.