PL EN


Preferencje help
Widoczny [Schowaj] Abstrakt
Liczba wyników
Tytuł artykułu

Evolutionary GPGPU compilers and execution time measurements

Autorzy
Treść / Zawartość
Identyfikatory
Warianty tytułu
PL
Ewolucyjne kompilatory dla GPGPU i pomiar czasu wykonywania kodu
Języki publikacji
EN
Abstrakty
EN
The problems of measurements of the execution time for CUDA kernels are considered in this paper. A few estimators are compared for different execution times. The proper measurements are important for code optimization using evolutionary compilers. The best estimator for fast time kernels (ms) is the minimal value estimator. The single run value is applicable for long time kernels (seconds). The disturbances of measurements are also related to the time between kernel runs, which is an unexpected result.
PL
Kompilatory ewolucyjne pozwalają na optymalizację kodu źródłowego i uzyskanie bardziej optymalnego (szybszego) kodu wynikowego. Wykorzystując metody optymalizacji nieliniowej możliwe jest znalezienie lepszej kombinacji instrukcji (rys. 3). Jest to istotne dla układów z nieznaną metryką wykonywania kodu. Tego typu sytuacja ma miejsce dla kart GPGPU z platformą CUDA, gdzie możliwe jest programowanie na poziomie języka C (CUDA) lub kodu pośredniego (PTX [3]) – rys. 1. Z uwagi na niemożność programowania na poziomie procesora GPU i brak informacji na temat architektury, konieczna jest optymalizacja na wyższym poziomie. W tym celu należy wykorzystać pomiary czasu wykonywania (rys. 2), jednak jest to trudne z uwagi na zakłócenia pomiaru ze strony systemu operacyjnego i innych urządzeń komputera. Sugerowany pomiar średniego czasu dla kilkunastu uruchomień jest nieadekwatny w wielu sytuacjach. O ile dla długich czasów wykonywania kodu GPGPU rzędu sekund jest to akceptowalne (rys. 6), to nie jest to prawidłowe dla krótkich czasów rzędu ms. Wykorzystując estymatory (2-5) można poszukiwać lepszego rozwiązania. Najbardziej nieoczekiwanym jest to, że istnieje silny wpływ opóźnienia między kolejnymi uruchomieniami kodu GPGPU na wynik (rys. 7). Estymator średniej jest lepszy od mediany, która potrafi fałszować wyniki, ale najlepszym jest wartość minimalna dla wielu uruchomień. Niestety także wartość minimalna zależy od czasu opóźnienia między uruchomieniami, przy błędzie 15%.
Słowa kluczowe
Wydawca
Rocznik
Strony
833--835
Opis fizyczny
Bibliogr. 6 poz., rys., schem., wzory
Twórcy
autor
  • Zachodniopomorski Uniwersytet Technologiczny w Szczecinie, Katedra Przetwarzania Sygnałów i Inżynierii Multimedialnej, 26. Kwietnia 10, 71-126 Szczecin
Bibliografia
  • [1] NVIDIA CUDA C Programming Guide v.4.0, NVidia, 2011.
  • [2] NVIDIA CUDA, CUDA C Best Practices Guide v.4.0, NVidia, 2011.
  • [3] NVIDIA PTX: Parallel Thread Execution. ISA Version 2.3. NVIDIA, 2011.
  • [4] Cooper K. D., Schielke P. J., Subrarnanian D.: Optimizing for reduced code space using genetic algorithms, Proceedings of the Symposium on Languages, Compilers and Tool Support for Embedded Systems, 1999.
  • [5] Cooper K. D., Subramaniam D., Torczon L.: Adaptive compilers of the 21th century. Journal of Supercomputing 23, 7-22, 2002.
  • [6] Joseph P. J., Jacob M. T., Srikant Y. N., Vaswani K.: Statistical and Machine Learning Techniques in Compiler Design, in: Srikant Y. ., Shankar P. (eds.), The Compiler Design Handbook, Optimization and Machine Code Generation, CRC Press 2008.
Typ dokumentu
Bibliografia
Identyfikator YADDA
bwmeta1.element.baztech-4f75902a-c45f-4e6b-8116-b80b5cae6df6
JavaScript jest wyłączony w Twojej przeglądarce internetowej. Włącz go, a następnie odśwież stronę, aby móc w pełni z niej korzystać.