Lista przedmiotów z materiałami udostępnionymi dla studentów

Dla_studentów
  • Increase font size
  • Default font size
  • Decrease font size

Rafał Patrzałek

Przetwarzanie obrazów biomedycznych z zastosowaniem technik programowania współbieżnego oraz wielordzeniowych kart graficznych


Biomedical image processing with the use of concurrent programming techniques and multicore graphics cards


Opiekun pracy dyplomowej: dr hab. inż. Artur Klepaczko
Praca dyplomowa inżynierska obroniona 2011-02-11
Streszczenie pracy dyplomowej:
Tematyka niniejszej pracy dotyczy zagadnienia wydajności obliczeniowej współczesnych procesorów wielordzeniowych. Problem ten został omówiony na przykładzie zastosowania tego typu układów w przetwarzaniu obrazów cyfrowych. W tym celu wykonano projekt dwóch aplikacji komputerowych wykorzystujących alternatywne techniki programowania współbieżnego. Po pierwsze użyto wielordzeniowych procesorów ogólnego przeznaczenia (czyli CPU, ang. Central Processing Unit), po drugie zaś procesorów graficznych (czyli GPU, ang. Graphical Processing Unit). Napisane programy wykazują wydajność poszczególnych układów w przetwarzaniu obrazów z uwzględnieniem ich architektury i zaimplementowanych technologii. Wybór właśnie takiej, a nie innej tematyki pracy wynika z obserwacji wzrostu popularności wykorzystywania układów wielordzeniowych w komputerach osobistych oraz ich stale udoskonalanych możliwości obliczeniowych. Celem projektu jest zatem ocena efektywności poszczególnych procesorów wykorzystujących różne architektury wielordzeniowe. Dzięki uzyskaniu informacji na temat wydajności poszczególnych architektur można wskazać obszary ich potencjalnego zastosowania. Istotnym elementem pracy jest również prezentacja sposobów programowania współbieżnego efektywnie wykorzystującego zasoby procesorów wielordzeniowych. Na potrzeby projektu zostały użyte procesory graficzne firmy nVidia wykorzystujące technologię CUDA oraz procesor wielordzeniowy ogólnego przeznaczenia firmy Intel. Należy podkreślić, iż procesory CPU oraz procesory graficzne posiadają różne architektury. Z tego względu, efektywne wykorzystanie zasobów obliczeniowych różnych typów procesorów musi uwzględniać odmienny sposób programowania współbieżnego. W ramach praktycznej części pracy zostały napisane programy, których zadaniem jest przefiltrowanie pewnej liczby obrazów cyfrowych o identycznych parametrach. Do filtracji został wykorzystany algorytm filtru uśredniającego. Napisane aplikacje mają dodatkowo zaimplementowany pomiarów czasów dla zadań, które wykonują. Na podstawie uzyskanych wyników porównano wydajność i efektywność poszczególnych układów. Program wykorzystujący procesor graficzny został napisany w języku wysokiego poziomu - C – z uwzględnieniem zasad programowania narzuconych przez twórców technologii CUDA. Natomiast aplikacja działająca tylko na procesorze CPU została napisana z wykorzystaniem czystego języka C. Uzyskane wyniki wykazują przewagę użytego procesora ogólnego przeznaczenia z serii Intel Core i5 nad procesorami graficznymi wykorzystanymi w projekcie. Zastosowane w testach procesory GPU miały odpowiednio po 16, 48 i 64 rdzenie. Natomiast procesor CPU korzystał z dwóch rdzeni oraz technologii Hyper-Threading. Jednakże wyniki uzyskane dla kart graficznych pozwalają na oszacowanie wydajności procesorów GPU posiadających większą liczbę rdzeni. Według tych szacunków procesor posiadający już 128 rdzeni posiada wyższą wydajność od dwurdzeniowego procesora CPU wykorzystanego w projekcie. Można zatem postawić tezę, iż układ GPU wyposażony w dużą liczbę rdzeni jest w stanie zastąpić procesor CPU i efektywniej wykonać większość zadań wymagających czasochłonnych, powtarzalnych obliczeń.
Abstract:
The topic of this paper concerns issue of processing capacity of present-day multi-core processors. This matter has been discussed on the basis of the example of application of such integrated circuits in processing digital images. To that end, there have been made projects of two applications which use alternative techniques of concurrent computing. First of all, there have been used multi-core processors of universal usage (CPU – Central Processing Unit), and, second of all, a Graphics Processing Units (GPU). The programs show efficiency of the individual integrated circuit in processing the images with their internal structure and implemented technologies taken into consideration. The choice of this specific topic results from an observation of an increase of the usage of multi-core processors in personal computers and their continuous improvements of processing capacity. Therefore, the aim of the project to evaluation the effectiveness of the individual chips which use different multi-core structures. Thanks to obtaining the information concerning the efficiency of the respective computer architecture, there can be pointed out the area of their potential application. Another essential element of the paper is also presentation of ways of concurrent computing efficiently exploiting the resources of multi-core processors. For the use of the project, there were used nVidia GPUs with CUDA technology, and Intel CPU. It is worth to mention that CPUs and GPUs have different internal structures. For this reason, effective exploitation of computational resources of different types of processors must have included different ways of concurrent computing. With the framework of practical part of the study, programs with the identical parameters were programmed in order to filter certain number of digital images with the same parameters. For the filtration, algorithm of low-pass filter was used. The programs have additionally implemented measure of the amount of time assigned for the tasks which they were set for. On the basis of the results, capacity and effectiveness of each integrated circuits were compared. The program using GPU was programmed in a high-level programming language – C – with the awareness of the rules of programming imposed by creators of CUDA technology, while the one using only CPU, was programmed with the usage of pure C programming language. The results show the advantage of Intel Core i5 CPU over GPUs used in the project. The applied GPUs had respectively 16, 48 and 64 cores, whereas CPU had only 2 cores and built-in Hyper-Threading technology. However, the outcomes for video cards allow for estimation of the capacity of Graphics Processing Units having greater amount of cores. According to the estimation, 128-core GPU is more efficient than the dual-core CPU exploited in the research. The thesis that integrated circuits with GPU equipped in high number of cores can replace CPU processor and can perform more effectively most of the tasks requiring time-consuming, repeatable calculations can be advanced.