Preferencje help
Widoczny [Schowaj] Abstrakt
Liczba wyników

Znaleziono wyników: 12

Liczba wyników na stronie
first rewind previous Strona / 1 next fast forward last
Wyniki wyszukiwania
Wyszukiwano:
w słowach kluczowych:  compilers
help Sortuj według:

help Ogranicz wyniki do:
first rewind previous Strona / 1 next fast forward last
EN
The optimisation of calculations in selected virtual machines is described and non-conventional performance optimisation techniques for selected numerical expressions are proposed. The first presents mantissa expression transformation, while the second presents degrees to radians conversion. Considerations are illustrated by code and tests carried out in Java, MS.NET and Mono environments.
PL
W artykule przedstawiono dwie niestandardowe metody optymalizacji kodu dla obliczeń numerycznych w środowisku komponentowym maszyn wirtualnych. Obie techniki pozwalają na przyśpieszenie operacji matematycznych - pierwsza obliczenia mantysy liczby rzeczywistej, druga konwersji stopniowej miary kąta na łukową. Do rozważań dołączono kody źródłowe oraz testy przeprowadzone w środo-wiskach Java, MS.NET oraz Mono.
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%.
3
EN
This paper is concerned with optimizing code execution in virtual machine environments. Code motion is one of the many optimization techniques. We considered a special case of optimization – a loop containing expressions that can be effectively evaluated once. A solution for this case is discussed and two algorithms are proposed. Experimental results for Java VM, MS .NET and Mono are shown here in order to assess the performance of the proposed algorithms.
PL
W artykule zaprezentowano nowe podejście do ekstrakcji równole-głości w programach ANSI C dla architektur wieloprocesorowych polega-jące na wyznaczaniu niezależnych fragmentów obliczeń w pętlach programowych dowolnie zagnieżdżonych. Przedstawione podejście pozwala na ekstrakcję równoległości dla szerszego spektrum pętli programowych w porównaniu z transformacjami afinicznymi, uznawanymi dotychczas za najbardziej efektywne. Przedstawiono analizę zastosowania proponowanego podejścia dla wybranych źródeł języka ANSI C. Omówiono wyniki badań eksperymentalnych oraz wskazano kierunki dalszych prac.
EN
The application of embedded computer systems extends from small consumer products to complex industrial solutions. Performance critical solutions require application of more efficient controllers using parallel architectures such as VLIW or multiprocessor (multi cores) architectures. The interest in using the parallelism in embedded systems puts up new challenges for science and engineering and requires new methods and tools. The paper presents a new approach to the extraction of parallelism in ANSI C programs for multiprocessor architectures, consisting of synchronization free threads of computations (slices). The presented approach allows the extraction of parallelism on a wider range of program loops than that extracted by the affine transformation framework identified as the most efficient. Scientific results achieved are implemented as an academic source to source parallelizing compiler. The analysis of applying the approach to selected ANSI C sources is presented. Experimental results are depicted and discussed. Conclusions and future research are discussed.
PL
W artykule omówiono problem lokalności danych oraz zaprezentowano istniejące techniki zwiększania lokalności danych polegające na transformacji kodu zródłowego pętli w celu lepszego wykorzystania możliwości pamięci podręcznej procesora. Zaprezentowano również koncepcję metody zwiększania lokalności danych na poziomie pamięci podręcznej opartej na znanych transformacjach pętli programowych oraz obliczeniowo-doświadczalnej analizie metryk lokalności danych. Przedstawiono model koncepcyjny modułu programowego implementujacego uzyskiwane wyniki badań.
EN
This paper presents in outline the idea of hierarchical organization of memory, focusing on cache memory. It also discusses in brief popular software techniques and approaches which can be used in order to more greatly benefit from the specific nature and potential of cache memory. In this context, one presents herein the conception of a new method for shortening the execution time of various executable programs. The new method aims at increasing data locality at the cache memory level, based on transforms of program loops. A proposal of applying the new method in practice is described herein as well.
PL
W artykule zostało zaprezentowane narzędzie Intel® VTune™. Performance Analyzer umożliwiające pozyskiwanie i gromadzenie metryk lokalności danych aplikacji oraz jego zastosowanie do realizacji badań nad lokalnością danych programów równoległych opartych na tworzeniu niezależnych wątków obliczeń. Badania nad lokalnością danych stanowią element pracy naukowej nad metodami i algorytmami tworzenia kompilatorów równoległych prowadzonej w Katedrze Inżynierii Oprogramowania Wydziału Informatyki Zachodniopomorskiego Uniwersytetu Technologicznego z wykorzystaniem infrastruktury nowopowstałego laboratorium HPC (ang. High Performance Computing). Zastosowanie narzędzia zostało zademonstrowane na przykładzie analizy pętli programowej zawartej w UA Benchmark z zestawu NAS Parallel Benchmarks 3.2.
EN
A well-known way to speed up computations is parallelizing programs and executing them on multiprocessors. An innovative approach for extracting parallel synchronization-free threads of computations for program loops was presented in [1]. However, parallel programs representing synchronization-free threads of computations require good data locality in order to achieve an effective usage of the hierarchy of memory. Data locality of a program can be estimated based on the metrics collected from software analysis tools widespread available on the market. The usage of the modern software analysis tool Intel® VTune™ Performance Analyzer to collecting and evaluating data locality metrics is presented in the paper. An experimental parallel program running synchronization-free threads of computations, implemented in C++, assigned to parallel threads by means of OpenMP directives and executed on a target Intel SMP architecture was taken to demonstrate practical analysis based on the discussed software analysis tool.
PL
Efektywne wykorzystanie hierarchii pamięci wymaga od programów równolegle przetwarzających wydzielone sekwencje operacji dobrej lokalności danych. W artykule przedstawiono analizę i badania eksperymentalne lokalności danych L1D Cache dla trzech wybranych przypadków programów, w których przy użyciu metody wyznaczania niezależnych wątków obliczeń [1] zostały wydzielone niezależne wątki obliczeń, przetwarzane w pętlach programowych. Rozważane przypadki zostały zaimplementowane w języku C++, przydzielone do równoległych wątków za pomocą dyrektyw OpenMP i wykonane na docelowej architekturze Intel SMP. Zaprezentowano zastosowanie programowego analizatora wydajności Intel® Vtune™ Performance Analyzer do zgromadzenia metryk i oceny lokalności danych progra­mów równoległych. Na podstawie uzyskanych wyników wyprowadzono zalecenia dla programistów, aby tworzone przez nich oprogramowanie cechowała dobra lokalność danych.
EN
The effective use of hierarchical memory for parallel programs performing computations in slices requires good data locality. Analysis and experimental studies on data locality in L1D Cache for three selected cases of parallel programs representing synchronization-free threads of computations extracted by means on the method described in [1], are presented in the paper. The considered cases we re implemented in C++, assigned to parallel threads by means of OpenMP directives and executed on a target Intel SMP architecture. The usage of the software analysis tool Intel®  VTune™ Performance Analyzer to collecting and evaluating data locality metrics is presented. Finally, recommendations for software developers are concluded to develop numerical applications with good data locality metrics.
PL
Zwiększenie lokalności danych w programie jest niezbędnym elementem zwiększenia wydajności części programowych systemu osadzonego, zmniejszenia zużycia energii oraz redukcji rozmiaru pamięci w układzie. Przedstawiono komplementarne wykorzystanie metody szacowania lokalności danych wobec nowej metody ekstrakcji wątków, ich aglomeracji w celu dostosowania do możliwości docelowej architektury przy zastosowaniu różnych typów podziału iteracji pętli (mapowanie czasowo-przestrzenne) i z uwzględnieniem wpływu zastosowania znanych technik poprawy lokalności danych. Wybór najlepszej kombinacji transformacji kodu pod kątem lokalności danych umożliwia zwiększenie wydajności programu względem wskazanych czynników. Zaprezentowano podejście do analizy lokalności danych dla wybranych pętli, przedstawiono i omówiono wyniki badań eksperymentalnych a także wskazano kierunki dalszych prac.
EN
Increasing data locality in a program is a necessary factor to improve performance of software parts of embedded systems, to decrease power consumption and reduce memory on chip size. A possibility of applying a method of quantifying data locality to a novel method of extracting synchronization-free threads is introduced. It can be used to agglomerate extracted synchronization-free threads for adopting a parallel program to a target architecture of an embedded system under various loop schedule options (space-time mapping) and the influence of well known techniques to improve data locality. The choice of the best combination of loop transformation techniques regarding to data locality makes possible improving program performance. A way of an analysis of data locality is presented. Experimental results are depicted and discussed. Conclusion and future research are outlined.
EN
Increasing data locality in a program is a necessary factor to improve performance of oftware parts of embedded systems, to decrease power consumption and reduce memory on chip size. A possibility of applying a method of quantifying data locality to a novel method of extracting synchronization-free threads is introduced. It can be used to agglomerate extracted synchronization-free threads for adopting a parallel program to a target architecture of an embedded system under various loop schedule options (spacetime mapping) and the influence of well-known techniques to improve data locality. The choice of the best combination of loop transformation techniques regarding to data locality makes possible improving program performance. A way of an analysis of data locality is presented. Experimental results are depicted and discussed. Conclusion and future research are outlined.
PL
Efektywne użycie pamięci jest krytycznym warunkiem uzyskania wysokiej wydajności przez oprogramowanie wykonywane na współczesnych architekturach z hierarchią pamięci. W systemach osadzonych efektywne wykorzystanie pamięci przez aplikacje umożliwia przede wszystkim zmniejszenie wymagań dla sprzętu przy ustalonych kryteriach wydajnościowych, redukcję rozmiaru pamięci jak i zmniejszenie zużycia energii. Wskazane czynniki bezpośrednio wpływają na koszt budowy systemu osadzonego. Osiągnięcie wysokiego poziomu efektywności użycia pamięci wymaga tworzenia oprogramowania uwzględniającego lokalność danych. Oprogramowanie intensywnie eksploatujące pamięć, takie jak chociażby aplikacje multimedialne, zazwyczaj przetwarza w pętlach programowych znaczne ilości danych umieszczonych w tablicach. Sposo-bem na zwiększenie lokalności takich programów jest transformacja pętli programowych do postaci bardziej optymalnego kodu. W artykule przedstawiono aktualny stan badań w zakresie metod transformacji programów zwiększając.
EN
The effective use of memory subsystem is the critical condition for software to achieve the high performance on the contemporary architectures with hierarchy of memory. In embedded systems the effective utilization of the memory subsystem mainly enables to decrease requirements for hardware with respect to established performance criteria, reduce the size of memory and decrease the energy consumption. The indicated factors influence on cost of building an embedded system directly. The achievement of high efficiency of memory subsystem requires creating of software with high data locality. Software that intensely explores memory, such as multimedia applications, usually processes within program loops considerable quantities of data placed in arrays. The transformation of program loops to more optimal code is the way on improvement data locality. In the paper, the state of the art of loop transformation methods improving data locality was presented. Additionally, the possibility of estimating a level of data loality and improving data locality for perfectly nested loop were examined. Finally, the results of analysis investigations were introduced illustrating the efficiency of considered transformations.
PL
W przedstawionym opracowaniu zaprezentowany został sposób generowania równań boolowskich dla wielokrotnie powtarzających się mapowań na tą samą jednostkę. Algorytm ten opiera się na zapisie raz wygenerowanych równań dla mapowanej jednostki w odpowiednim metapliku. Dla każdej jednostki może istnieć wiele metaplików zawierających równania. Oprócz plików z równaniami tworzony jest dodatkowy plik zawierający informacje o mapowanych sygnałach jednostki. W omówionym algorytmie pełny proces generowania równań boolowskich dla takich samych argumentów odbywa się tylko raz.
EN
In this paper is proposed and discribed a Boolean Equation generation for multiple map. The algorithm is based on writing generated equations for map entity in meta file. There is a possibility of existing for one entity many meta files with equations. If map process on the same entity appears multiple, then full Boolean equations generation process is done only once.
EN
Increasing data locality in a program is a necessary factor to decrease its execution time. A possibility of using a method of quantifying data locality to a new method of extracting parallel threads is introduced. It can be used to the agglomeration of extracted synchronization-free threads to adopt a parallel program to a target architecture of a parallel computer under various loop schedule options (space-time mapping) and the influence of well known techniques to improve, data locality. An analysis of data locality for two loops is presented. Experimental results are discussed. Conclusion and future research are outlined.
first rewind previous Strona / 1 next fast forward last
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ć.