Data: Sobota, 15 maja 2010, 14:50

Perforacja pętli przyśpiesza programy


Komputery powstały po to, by dać odpowiedzi na trudne logiczne pytania. I przez dziesięciolecia służyły właśnie temu celowi - precyzyjnemu rozwiązywaniu zadań. W ostatnim czasie sytuacja się jednak zmienia i coraz częściej jesteśmy skłonni poświęcić precyzję na rzecz prędkości.

Przykładem niech będzie sposób działania wyszukiwarek. Rezultaty uzyskane z Google czy Yahoo! nie są najbardziej precyzyjne z możliwych, jednak internauci wolą szybko uzyskać nieco mniej dokładną odpowiedź, niż dłużej czekać na najlepszą z możliwych. Stąd też np. dokładna kolejność pierwszych kilku czy kilkunastu wyników wyszukiwania nie jest ważna.

Grupa badaczy z MIT-u pracująca pod kierunkiem profesora Martina Rinarda postanowiła wykorzystać takie podejście i stworzyła system automatycznie wyszukujący w kodzie komputerowym miejsc, w których nieco dokładności może zostać poświęconej na rzecz znacznego przyspieszenia pracy programu.

Udało im się osiągnąć zadziwiające rezultaty. Podczas testów skrócili o połowę czas potrzebny do zakodowania transmisji wideo w celu przesłania jej przez sieć. Jakość obrazu pozostała przy tym niezmieniona. Takie samo podejście może zostać wykorzystane wszędzie tam, gdzie konieczne jest przetwarzanie danych w czasie rzeczywistym, a więc np. w oprogramowaniu do analiz giełdowych czy systemach śledzenia i monitorowania wykorzystujących sieci czujników.

Uczeni z MIT-u wykorzystali bardzo prosty trick. Rozbudowane programy komputerowe wykorzystują liczne pętle, czyli wielokrotnie powtarzane procesy. Rinard oraz współpracujący z nim naukowcy Stelios Sidiroglou-Douskos, Hank Hoffman i Sasa Misailovic nazwali swoją technikę "perforacją pętli". Polega ona na "wybijaniu dziur" w pętlach, co po prostu polega na pomijaniu pewnych kroków w pętli. System automatycznie ocenia, ile takich kroków można pominąć by znacząco przyspieszyć pracę programu, a jednocześnie nie poświęcić zbyt wiele z precyzji jego działania.

Sam system opracowany przez grupę Rinarda jest pętlą - przeszukuje on program, "wybija" w nim dziury, a następnie uruchamia program i wylicza, jak jego działanie wpłynęło na wydajność programu. Następnie oceniane jet, która z "perforacji" najlepiej wpływa na zwiększenie wydajności, a jednocześnie oznacza najmniejsze straty w precyzji.

Mariusz Błoński
| Drukuj | Zamknij |