Dlaczego algorytmy są do dupy, a komputery analogowe są przyszłością
Wiem, że nagłówek tego artykułu może brzmieć nieco prowokacyjnie, ale to prawda: Obliczenia algorytmiczne po prostu nie skalują się zbyt dobrze, jeśli chodzi o problemy wymagające ogromnych ilości mocy obliczeniowej.
Spójrzcie tylko na najnowszą listę Top500 komputerów o wysokiej wydajności. Obecnie najpotężniejszym superkomputerem jest Sunway TaihuLight w National Supercomputing Center w Wuxi, w Chinach. Ten behemot osiąga niesamowity wynik 93 petaflopsów (jeden petaflop równa się kwadrylionowi operacji zmiennoprzecinkowych na sekundę), co jest naprawdę niewyobrażalne.
Superkomputery i zużycie energii
Jednakże tak ogromna moc obliczeniowa wiąże się z kosztami. W tym przypadku wymaga ona 10 649 600 jednostek obliczeniowych, tak zwanych rdzeni, które zużywają 15 371 megawatów – ilość energii elektrycznej, która mogłaby zasilić małe miasto liczące około 16 000 mieszkańców przy średnim zużyciu energii równym temu w San Francisco.
Jeśli odwrócimy naszą uwagę od najpotężniejszych superkomputerów i skupimy się na tych najbardziej energooszczędnych, znajdziemy system TSUBAME3.0 w Tokijskim Instytucie Technologii na szczycie listy Green500. Dostarcza on 14,11 gigaflopsów/wat przy całkowitym zużyciu energii wynoszącym „tylko” 142 kilowaty wymagane przez 36288 rdzeni. Pod względem efektywności energetycznej jest to wynik około 2 razy lepszy od TaihuLight. Ale 142 kilowaty to wciąż strasznie dużo energii elektrycznej.
Ale czy nie ma superkomputerów, które nie wymagają tak dużo energii do działania? Owszem, są: Doskonałym przykładem jest ludzki mózg – jego moc obliczeniową szacuje się na około 38 petaflopów, czyli mniej więcej dwie piąte mocy TaihuLight. Jednak do działania potrzebuje on jedynie około 20 watów energii. Watów, nie megawatów! A jednak wykonuje zadania, których – przynajmniej do tej pory – żadna maszyna nigdy nie była w stanie wykonać.
„Czy nie ma superkomputerów, które nie wymagają tak dużo energii do działania? W rzeczy samej, są: Ludzki mózg jest świetnym przykładem.”
Co powoduje tę różnicę? Po pierwsze, mózg jest wyspecjalizowanym komputerem, podczas gdy systemy takie jak TaihuLight i TSUBAME3.0 są maszynami bardziej ogólnego przeznaczenia, zdolnymi do rozwiązywania szerokiej gamy problemów.
Maszyny takie jak te są programowane za pomocą algorytmu, tak zwanego programu. Zasadniczo jest to sekwencja instrukcji, które każdy procesor wykonuje, odczytując je z podsystemu pamięci, dekodując instrukcje, pobierając operandy, wykonując żądaną operację, zapisując wyniki itd.
Oszczędny superkomputer: Ludzki mózg
Wszystkie te żądania pamięci wymagają znacznej ilości energii i znacznie spowalniają pracę. Posiadanie setek tysięcy pojedynczych rdzeni wymaga również skomplikowanych połączeń międzysystemowych do wymiany danych między rdzeniami, co również wydłuża czas i zwiększa moc potrzebną do wykonania obliczeń.
Mózg, z drugiej strony, działa w oparciu o zupełnie inne podejście. Nie ma żadnego programu zaangażowanego w jego działanie. Jest on po prostu „programowany” przez połączenia między jego aktywnymi elementami, głównie tak zwanymi neuronami.
Mózg nie musi pobierać instrukcji lub danych z żadnej pamięci, dekodować instrukcji itp. Neurony otrzymują dane wejściowe od innych neuronów, operują na tych danych i generują dane wyjściowe, które są przekazywane do neuronów odbiorczych. OK – jest to trochę zbytnie uproszczenie, ale wystarczy, aby postawić następujące pytania:
- 1. Czy nie istnieje jakiś elektroniczny odpowiednik takiej architektury komputera?
- 2. Czy naprawdę potrzebujemy superkomputerów ogólnego przeznaczenia?
- 3. Czy wyspecjalizowany system może być lepszy do rozwiązywania niektórych problemów?
Odpowiedź na pierwsze pytanie brzmi: Tak, istnieje elektroniczny odpowiednik takiej architektury.
Nazywa się on komputerem analogowym.
Enter Analog Computers
„Analog” wywodzi się od greckiego słowa „analogon”, które oznacza „model”. I to jest dokładnie to, czym jest komputer analogowy: Model pewnego problemu, który może być następnie użyty do rozwiązania tego właśnie problemu poprzez jego symulację.
Tzw. analogi bezpośrednie – polegające na tej samej podstawowej zasadzie, co badany problem – tworzą najprostszą klasę takich metod analogowych. Klasycznym przykładem są tu bańki mydlane używane do generowania minimalnych powierzchni.
„Komputer analogowy jest modelem pewnego problemu, który może być następnie użyty do rozwiązania tego właśnie problemu poprzez jego symulację.”
Klasa bardziej ogólnie użyteczna zawiera analogie pośrednie, które wymagają odwzorowania pomiędzy problemem a domeną obliczeniową. Zazwyczaj takie analogi oparte są na analogowych układach elektronicznych, takich jak sumatory, integratory i mnożniki. Ale mogą być również realizowane przy użyciu komponentów cyfrowych, w którym to przypadku są one nazywane cyfrowymi analizatorami różnicowymi.
Oba podejścia mają jedną wspólną cechę: nie ma zapisanego programu, który kontroluje działanie takiego komputera. Zamiast tego programuje się go, zmieniając wzajemne połączenia między jego wieloma elementami obliczeniowymi – trochę jak mózg.
Od komputerów analogowych do hybrydowych
Rozważmy mój własny prototyp komputera analogowego, który jest przykładem klasycznego komputera analogowo-elektronicznego. Poprzeczka przewodów może być opisana jako program maszyny. W tym przypadku jest on ustawiony do symulacji przepływu powietrza wokół tzw. profilu Joukowsky’ego – co nie jest zadaniem trywialnym.
Wszystkie elementy obliczeniowe maszyny pracują w całkowitym paralelizmie bez centralnej lub rozproszonej pamięci, do której trzeba mieć dostęp i na którą trzeba czekać. Programujesz komputer, podłączając i odłączając kable połączeniowe. Może to być całkiem użyteczne dla pojedynczego badacza i do celów dydaktycznych, ale dla prawdziwego komputera analogowego ogólnego przeznaczenia trzeba by się pozbyć tej ręcznej procedury łączenia.
Na szczęście, przy dzisiejszej technologii elektronicznej możliwe jest budowanie układów scalonych zawierających nie tylko podstawowe elementy obliczeniowe, ale także poprzeczkę, która może być programowana z dołączonego komputera cyfrowego, eliminując w ten sposób całkowicie szczurze gniazdo przewodów.
Takie komputery analogowe osiągają niezwykle wysoką moc obliczeniową dla pewnych klas problemów. Między innymi, są niedoścignione w rozwiązywaniu problemów opartych na równaniach różniczkowych i ich układach – co odnosi się do wielu, jeśli nie większości dzisiejszych najistotniejszych problemów w nauce i technologii.
Na przykład, w pracy z 2005 roku, Glenn E. R. Cowan opisał Very-Large-Scale-Integrated Analog Computer (VLSI), tj. analogowy komputer na chipie, że tak powiem. Układ ten dostarczył aż 21 gigaflopów na wat dla pewnej klasy równań różniczkowych, co jest lepszym wynikiem niż dzisiejszy najbardziej energooszczędny system z listy Green500.
Analogowa przyszłość informatyki
Obliczenia analogowe, które były dominującą formą wysokowydajnych obliczeń aż do lat 70-tych, zostały w dużej mierze zapomniane od czasu, gdy dzisiejsze cyfrowe komputery z zapisanym programem przejęły władzę. Nadszedł jednak czas, by to zmienić.
„Aplikacje jutra wymagają większych mocy obliczeniowych przy znacznie niższym poziomie zużycia energii. Komputery cyfrowe nie są w stanie tego zapewnić.”
Jutrzejsze aplikacje wymagają większych mocy obliczeniowych przy znacznie niższym poziomie zużycia energii. Ale komputery cyfrowe po prostu nie są w stanie tego zapewnić. Najwyższy więc czas, by zacząć opracowywać nowoczesne koprocesory analogowe, które zdejmą z tradycyjnych komputerów ciężar rozwiązywania złożonych równań różniczkowych. W ten sposób powstałyby tzw. komputery hybrydowe.
Maszyny te mogłyby oferować wyższą moc obliczeniową niż dzisiejsze superkomputery przy porównywalnym zużyciu energii lub mogłyby być wykorzystywane w obszarach, w których dostępne są jedynie niewielkie ilości energii, jak np. kontrolery wszczepiane w medycynie i inne systemy wbudowane.
Przyszłe wyzwania
Wyraźnie obliczenia analogowe mają wielką obietnicę na przyszłość. Jednym z głównych problemów do rozwiązania będzie to, że programowanie komputerów analogowych różni się całkowicie od wszystkiego, czego studenci uczą się dziś na uniwersytetach.
W komputerach analogowych nie ma algorytmów, pętli, niczego, co jest im znane. Zamiast tego jest kilka podstawowych, ale potężnych elementów obliczeniowych, które muszą być sprytnie połączone, aby stworzyć elektroniczny analog jakiegoś matematycznie opisanego problemu.
Wyzwania technologiczne, takie jak potężne połączenia lub wysoce zintegrowane, ale precyzyjne elementy obliczeniowe, wydają się niewielkie w porównaniu z tym wyzwaniem edukacyjnym. W końcu zmiana sposobu myślenia o programowaniu będzie największą przeszkodą dla przyszłości obliczeń analogowych.