728 x 90

Odwracalność a symulacje na superkomputerach.

Odwracalność a symulacje na superkomputerach.

Ktoś mógłby się zapytać dlaczego odwracalność? Czy jest to w ogóle ważne zagadnienie? Wbrew temu co by się mogło wydawać mamy z nią do czynienia na każdym kroku.

W dniach 28-31 sierpnia 2017 roku na Wydziale Matematyki i Informatyki UMK miało miejsce spotkanie „International Training School on Reversible Computation”, poświęcone zagadnieniom związanym z odwracalnością obliczeń. W spotkaniu wzięło udział 55 osób, z 18 krajów, w przeważającej części miało ono formę wykładów, w czasie których bardziej doświadczeni w tematyce naukowcy przekazywali swoją wiedzę słuchaczom.

Większość reakcji chemicznych, które zachodzą w przyrodzie, w tym również w naszych ciałach, jest odwracalna. Znaczy to, że w zależności od warunków środowiska reakcje zachodzą w jedną lub drugą stronę, na przykład jakiś związek rozpada się na swoje składniki lub te składniki łączą się z powrotem w dany związek. Zagadnienie odwracalności jest również kluczowe w fizyce kwantowej. Aby więc móc stworzyć komputerowe modele tych zjawisk potrzebujemy narzędzi umożliwiających modelowanie odwracalności.

Z odwracalnością mamy również do czynienia nawet jeśli ograniczymy się tylko do tematyki związanej z komputerami i informatyką. Nawet prosta funkcja „undo” („cofnij”) dostępna na przykład w edytorach tekstu jest pewną formą odwracania procesu. Z bardziej zaawansowanych przykładów na zagadnieniu odwracalności w dużej mierze opierają się systemy kontroli wersji jak na przykład GIT czy SVN. Czym jest przywracanie poprzednich wersji plików jak nie odwracaniem zmian, które do nich wprowadziliśmy? Innym zagadnieniem integralnie związanych z odwracalnością są transakcje w bazach danych. Od transakcji wymaga się, aby było możliwe ich wycofanie i odwrócenie wszelkich zmian przez nie wprowadzonych. Jest to szczególnie ważne teraz, w dobie powszechnych płatności internetowych. Nikt przecież nie chce, aby pieniądze zniknęły z jego konta na przykład w przypadku utracenia połączenia z Internetem.

Odwracalność obliczeń jest również integralną częścią wielu algorytmów. W zasadzie wszystkich, które wykorzystują backtracking, jak na przykład części z algorytmów wyszukiwania minimum (maksimum) funkcji w przestrzeni. Bolączką algorytmów stworzonych do rozwiązania tego zagadnienia jest skłonność do znajdowania minimów lokalnych, w których algorytm może „utknąć”. W takiej sytuacji algorytm musi umieć odwrócić swoje obliczenia, aby móc „wycofać” się z niechcianego minimum lokalnego.

Odwracalność jest również wykorzystywana w symulacjach na super komputerach, o czym będę pisać niżej.

Istnieją dwa zasadnicze sposoby w jaki można wprowadzić odwracalność do obliczeń. Pierwszy polega na zapamiętaniu dodatkowych danych, pewnego śladu wykonywanego obliczenia, jak na przykład pośrednich stanów i w razie potrzeby wykorzystanie ich do odwrócenia obliczenia. Nie wykonuje się tu jednak prawdziwego obliczenia odwrotnego, odwraca się jedynie jego skutki. Drugim podejściem jest ograniczenie naszego zbioru operacji jedynie do operacji, które są odwracalne. Wówczas w przypadku zaistnienia potrzeby odwrócenia obliczenia, wykonuje się krok po kroku, operacja po operacji, obliczenie odwrotne. Aby móc użyć takiego podejścia potrzebne są specjalne, odwracalne języki programowania jak np. Janus.

 

Źródło obrazów: mat.umk.pl

Leave a Comment

Your email address will not be published. Required fields are marked with *

Cancel reply

Inne artykuły