18 Dariusz Burak
poziomie zbliżonym do przyspieszenia maksymalnego (wyliczonego na podstawie prawa Amdahla [5]) i przy uwzględnieniu specyfiki oraz złożoności poszczególnych klas algorytmów szyfrowania (szyfry blokowe, strumieniowe, asymetryczne) oraz ich szczegółowych implementacji opracowano metodę automatycznego zrównole-glenia wybranych algorytmów szyfrowania [6], która zostanie zaimplementowana w ramach opracowywanego kompilatora zrównoleglającego. W celu utworzenia kompilatora niezbędne jest wykorzystanie istniejących narzędzi: programu Petit-do analizy zależności danych oraz OpenMP API - standardu programowania równoległego oraz utworzenie nowych narzędzi - wynikających ze specyfiki opracowywanego zagadnienia.
Petit jest jednym z kluczowych komponentów projektu Omega przeznaczonego do analizy i transformacji programów, który powstał w Uniwersytecie Maryland [7]. Służy on do przeprowadzania analizy zależności oraz transformacji pętli zapisanych w języku Petit. Główne możliwości programu Petit są następujące [7]:
— analiza zależności oparta na wartości (ang. value-based dependence analysis) oraz na pamięci (ang. memory based dependence analysis),
— nieliniowa analiza zależności oparta na symbolach nieinterpretowanych funkcji (ang. uninterpreted function symbols),
— analiza skalarna,
— prywatyzacja zmiennych,
— rozszerzenie zmiennych skalarnych na zmienne tablicowe (ang. scalar/array expansion),
— możliwość zintegrowania analizy zależności wykonywanej za pomocą programu Petit w ramach kompilatorów zrównoleglających.
OpenMP jest standardem korporacyjnym wspieranym przez producentów sprzętu, twórców oprogramowania oraz twórców aplikacji definiującym interfejs programowania aplikacji (ang. Application Programming Interface (API)) wykorzystywanym do bezpośredniego wyrażania równoległości w wielowątkowym modelu dla systemów ze wspólną pamięcią, zaimplementowanym dla różnych platform, którego cechą charakterystyczną jest ukończenie specyfikacji wymagań (obecnie aktualną wersją standardu jest wersja 2.5 z maja 2005r.) [8], [9].
OpenMP API rozszerza języki programowania - Fortran, C i C++ o [9]:
— dyrektywy kompilatora (bazujące na dyrektywie #pragma języków C i C-l—h),
— funkcje biblioteki czasu wykonania (ang. run-time library functions),
— zmienne środowiskowe (ang. environment variables)
służące do wyrażania równoległości kodu źródłowego. Umieszczone w kodzie programu sekwencyjnego dyrektywy OpenMP, rozszerzające sekwencyjny model programowania o konstrukcje modelu SPMD (ang. Single Program Multiple Data),