Badanie wydajności optymalizacji kodu programowania

Badanie wydajności optymalizacji kodu programowania dynamicznego

Identyfikator grantu: PT01368

Kierownik grantu: Marek Pałkowski

Zachodniopomorski Uniwersytet Technologiczny

Wydział Informatyki

Szczecin

Data otwarcia: 2026-05-26

Planowana data zakończenia grantu: 2027-05-26

Streszczenie grantu

W prowadzonych badaniach nad aplikacjami dynamicznego programowania analizowane są możliwości współczesnych architektur obliczeniowych, ze szczególnym uwzględnieniem procesorów wielordzeniowych, wektoryzacji SIMD oraz akceleratorów GPU. Przedmiotem badań są klasyczne algorytmy bioinformatyczne wykorzystywane do analizy sekwencji RNA i DNA, takie jak Nussinov, McCaskill, MEA oraz Smith–Waterman. Algorytmy te są testowane na losowo generowanych ciągach wejściowych, co pozwala na kontrolowaną ocenę ich właściwości obliczeniowych, skalowalności oraz podatności na optymalizacje wysokowydajnościowe.

Rozwój współczesnego sprzętu równoległego jest bardzo dynamiczny i obejmuje szerokie spektrum architektur: od klasycznych procesorów x86-64 firm Intel i AMD, przez akceleratory graficzne NVIDIA, AMD i Intel, aż po energooszczędne architektury RISC, w tym platformy RISC-V. Z tego względu jednym z kluczowych celów badań jest ocena przenośności opracowanych rozwiązań algorytmicznych i programistycznych pomiędzy różnymi klasami sprzętu. Analizie podlega nie tylko bezwzględna wydajność wykonania, lecz także możliwość zachowania podobnych korzyści optymalizacyjnych przy zmianie architektury obliczeniowej, modelu równoległości oraz dostępnych mechanizmów sprzętowych.

Szczególne znaczenie ma w tym kontekście przenośność wydajnościowa, rozumiana jako możliwość adaptacji tych samych lub strukturalnie zbliżonych transformacji programu do różnych platform sprzętowych. Dotyczy to między innymi transformacji pętli, poprawy lokalności danych, kafelkowania obliczeń, wielowątkowości, wektoryzacji oraz przenoszenia wybranych fragmentów obliczeń na GPU. Badania pozwalają określić, które rozwiązania mają charakter ogólny i mogą być stosowane niezależnie od konkretnego procesora lub akceleratora, a które wymagają ścisłego dostosowania do specyfiki danej architektury, na przykład szerokości jednostek SIMD, hierarchii pamięci, przepustowości pamięci globalnej, kosztu synchronizacji lub modelu wykonywania wątków.

Badane algorytmy dynamicznego programowania są w naturalny sposób opisywane przez zagnieżdżone pętle programowe operujące na macierzach lub wielowymiarowych strukturach danych. Ich wydajność w dużym stopniu zależy od sposobu organizacji obliczeń, lokalności pamięci, wykorzystania pamięci cache oraz możliwości równoległego wykonania niezależnych fragmentów kodu. W związku z tym w badaniach wykorzystywane są metody optymalizacji typu source-to-source, transformacje pętli, techniki kafelkowania obliczeń oraz podejścia półautomatyczne i polihedralne. Szczególna uwaga poświęcona jest transformacjom umożliwiającym poprawę lokalności danych, zwiększenie stopnia równoległości oraz przygotowanie kodu do efektywnej wektoryzacji i uruchamiania na nowoczesnych platformach HPC.

Istotnym wyzwaniem badawczym jest fakt, że algorytmy bioinformatyczne tego typu często charakteryzują się nieregularnymi zależnościami danych, złożonymi zakresami iteracji oraz ograniczeniami utrudniającymi bezpośrednią równoległość. Dotyczy to w szczególności algorytmów uwzględniających pełne zależności dynamicznego programowania, takich jak Nussinov, McCaskill, MEA czy Smith–Waterman. Z tego powodu konieczne jest prowadzenie eksperymentów na różnych architekturach sprzętowych, aby zweryfikować, które transformacje programowe i algorytmiczne rzeczywiście przekładają się na wzrost wydajności oraz w jakim stopniu można je przenosić pomiędzy procesorami CPU, akceleratorami GPU i architekturami RISC.

Dotychczasowe wyniki badań zostały opisane w ostatnich latach m.in. w następujących publikacjach:

Mateusz Gruzewski, Marek Palkowski,
Cross-platform and polyhedral programming for Nussinov RNA folding,
Future Generation Computer Systems, 169, 2025.

T. Olas, R. Wyrzykowski, M. Olas, M. Palkowski, M. Gruzewski,
Towards the efficient use of RISC-V architecture in scientific computation,
Journal of Computational Science, 102853, 2026.

Mateusz Gruzewski, Marek Palkowski,
Cache-Efficient and Vectorized Parallel Dynamic Programming for RNA Folding, 2026, przyjęte do publikacji.

Uzyskane rezultaty wskazują, że rozpoczęty kierunek badań jest obiecujący i wymaga dalszej kontynuacji, szczególnie w kontekście nowych architektur HPC oraz algorytmów pokrewnych. Rozszerzenie eksperymentów na algorytmy takie jak McCaskill, Zuker, MEA czy bardziej złożone warianty Smith–Watermana pozwoli na ocenę uniwersalności proponowanych metod optymalizacji, ich przenośności pomiędzy architekturami oraz przydatności dla szerszej klasy problemów dynamicznego programowania.

W przypadku eksperymentów GPU zakłada się wykorzystanie akceleratorów obliczeniowych dostępnych w infrastrukturze HPC, w szczególności kart NVIDIA zgodnych z CUDA H100/200 oraz, o ile będą dostępne, akceleratorów AMD zgodnych z HIP/ROCm lub Intel GPU. Celem badań jest ocena przenośności opracowanych rozwiązań pomiędzy różnymi architekturami CPU i GPU.

Kontakt

ul Traugutta 75, 80-221 Gdańsk
tel.: + 48 58 347 24 11
email: office@task.gda.pl
NIP: 584-020-35-93
REGON: 000001620
Godziny otwarcia: pn-pt godz. 8:00-15:00