XIV International PhD Workshop OWD 2012, October 2012 NOWOCZESNE TECHNIKI WYKONYWANIA ZAAWANSOWANYCH OBLICZEŃ NUMERYCZNYCH

Podobne dokumenty
i3: internet - infrastruktury - innowacje

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

XIV International PhD Workshop OWD 2012, October 2012

Obliczenia Wysokiej Wydajności

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Programowanie procesorów graficznych GPGPU

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Podsystem graficzny. W skład podsystemu graficznego wchodzą: karta graficzna monitor

MESco. Testy skalowalności obliczeń mechanicznych w oparciu o licencje HPC oraz kartę GPU nvidia Tesla c2075. Stanisław Wowra

Obliczenia Wysokiej Wydajności

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Algorytmy i Struktury Danych

Raport Hurtownie Danych

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Klaster obliczeniowy

Składowanie, archiwizacja i obliczenia modelowe dla monitorowania środowiska Morza Bałtyckiego

Tesla. Architektura Fermi

Pisząc okienkowy program w Matlabie wykorzystujemy gotowe obiekty graficzne, lub możemy tworzyć własne obiekty dziedzicząc już zdefiniowane.

INŻYNIERIA OPROGRAMOWANIA

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Moc płynąca z kart graficznych

Załącznik nr 6 do SIWZ nr postępowania II MJ Zaoferowany. sprzęt L P. Parametry techniczne

Komputer VIPER i x4,2ghz 8GB GTX 1050TI 4GB 1TB USB 3.0

Architektura komputerów

1. Serwer. 2. Komputer desktop 9szt. Załącznik nr 1 do SIWZ

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Większe możliwości dzięki LabVIEW 2009: programowanie równoległe, technologie bezprzewodowe i funkcje matematyczne w systemach czasu rzeczywistego

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Kierownik Katedry: Prof. dr hab. inż. Tadeusz BURCZYŃSKI

Programowanie współbieżne Wykład 1. Rafał Skinderowicz

LIDERZY DATA SCIENCE CENTRUM TECHNOLOGII ICM CENTRUM TECHNOLOGII ICM ICM UW TO NAJNOWOCZEŚNIEJSZY OŚRODEK DATA SCIENCE W EUROPIE ŚRODKOWEJ.

AMD Ryzen recenzja procesora. Wpisany przez Mateusz Ponikowski Piątek, 11 Październik :47

która metoda jest najlepsza

Wyniki testów PassMark

Programowanie współbieżne Wykład 2. Iwona Kochańska

Zasoby i usługi Wrocławskiego Centrum Sieciowo-Superkomputerowego

INŻYNIERIA OPROGRAMOWANIA

1. KOMPUTEROWA STACJA ROBOCZA - konfiguracja wzorcowa lub inny równoważny

2 099,00 PLN OPIS PRZEDMIOTU AMIGO CORE I7 8X3,7GHZ 8GB 1TB USB3.0 WIN amigopc.pl CENA: CZAS WYSYŁKI: 24H

CZYM JEST KARTA GRAFICZNA.

Budowa Mikrokomputera

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Kierunek: Informatyka Stosowana Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne. audytoryjne. Wykład Ćwiczenia

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

GRIDY OBLICZENIOWE. Piotr Majkowski

Wysokowydajna implementacja kodów nadmiarowych typu "erasure codes" z wykorzystaniem architektur wielordzeniowych

Wersje desktopowe (Kaby Lake-S)

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

SYSTEMY OPERACYJNE WYKŁAD 1 INTEGRACJA ZE SPRZĘTEM

20. Czy serwerownia spełnia standardowe wymagania techniczne dla takich pomieszczeń?

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

EDGE BASIC. Dane Techniczne

WIDMOWA I FALKOWA ANALIZA PRĄDU SILNIKA LSPMSM Z WYKORZYSTANIEM OPENCL

Praca dyplomowa magisterska

Dostawa oprogramowania. Nr sprawy: ZP /15

Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W E, 2L PRZEWODNIK PO PRZEDMIOCIE

Zegar - układ wysyłający regularne impulsy o stałej szerokości (J) i częstotliwości (f)

Zastosowanie technologii nvidia CUDA do zrównoleglenia algorytmu genetycznego dla problemu komiwojażera

NOWE TRENDY ROZWOJU MIKROPROCESORÓW

Dane Techniczne TH ALPLAST ADS-S25

Welcome to the waitless world. Inteligentna infrastruktura systemów Power S812LC i S822LC

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Kierunek: Informatyka Stosowana Poziom studiów: Studia I stopnia Forma studiów: Stacjonarne. audytoryjne. Wykład Ćwiczenia

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie. dr inż. Adam Piórkowski. Jakub Osiadacz Marcin Wróbel

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

565,00 PLN OPIS PRZEDMIOTU AMIGO AMD APU GBHD7480D amigopc.pl CENA: CZAS WYSYŁKI: 24H PRODUCENT: AMIGOPC

Nowinki technologiczne procesorów

Numeryczna algebra liniowa

Dane Techniczne TH ALPLAST ADS-S25

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Dydaktyka Informatyki budowa i zasady działania komputera

Chipset i magistrala Chipset Mostek północny (ang. Northbridge) Mostek południowy (ang. Southbridge) -

dr inż. Michał Michna WSPOMAGANIE OBLICZEŃ MATEMATYCZNYCH

Technika mikroprocesorowa. Linia rozwojowa procesorów firmy Intel w latach

Kurs wybieralny: Zastosowanie technik informatycznych i metod numerycznych w elektronice

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Laboratorium Chmur obliczeniowych. Paweł Świątek, Łukasz Falas, Patryk Schauer, Radosław Adamkiewicz

Płyty główne rodzaje. 1. Płyta główna w formacie AT

PRZEWODNIK PO PRZEDMIOCIE

Test dysku Intel SSD DC S GB. Wpisany przez Mateusz Ponikowski Wtorek, 22 Październik :22

2,4 razy. 3 razy. 2,3 razy EKSTREMALNA MEGAZADANIOWOŚĆ NAWET NAWET NAWET

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

1. Wprowadzenie Opis sytuacyjny Specyfikacja techniczna... 3

Parametry techniczne. Testy

Budowa i użytkowanie klastrów w opaciu o układy Cell BE oraz GPU

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Infrastruktura PLGrid Nowa jakość usług informatycznych w służbie nauki

Gamingowy Fujitsu Esprimo P720 z grafiką nvidia ASUS GTX 1050Ti na pokładzie

Bibliografia: pl.wikipedia.org Historia i rodzaje procesorów w firmy Intel

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Kierunek: Informatyka Stosowana Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne. audytoryjne. Wykład Ćwiczenia

Transkrypt:

XIV International PhD Workshop OWD 2012, 20 23 October 2012 NOWOCZESNE TECHNIKI WYKONYWANIA ZAAWANSOWANYCH OBLICZEŃ NUMERYCZNYCH MODERN ADVANCED COMPUTATIONAL METHOD Konrad Andrzej Markowski, Warsaw University of Technology Abstract In different areas of science appears more and more numerical problems which cannot be solved analytically by hand. In this paper a new computational method for solving numerical problem using GPGPU will be presented. The presented method is illustrated by numerical examples. Streszczenie W wielu obszarach nauki pojawia się coraz więcej złożonych problemów obliczeniowych, które możemy rozwiązać tylko i wyłącznie za pomocą odpowiednich metod numerycznych wykorzystując komputer. Głównym celem artykułu jest uporządkowanie wiedzy na temat nowoczesnych technik wykonywania zaawansowanych obliczeń numerycznych oraz pokazanie możliwości jakie one za sobą niosą. 1. Wprowadzenie W ostatnich dekadach rozwój technologiczny oraz informatyzacja wielu dziedzin życia doprowadziła do gromadzenia coraz większej liczby informacji. Dodatkowo pojawia się coraz więcej złożonych problemów, których nie sposób rozwiązać bez pomocy komputera. Czynniki te spowodowały dynamiczny rozwój różnorodnych technik wykonywania obliczeń numerycznych. Historycznie wszystko rozpoczęło się od pojedynczych komputerów odpowiednio oprogramowanych. Następnie komputery te połączono w klastry obliczeniowe. Obecnie od kilku lat najszybciej rozwijającymi się technikami obliczeniowymi są metody oparte o obliczenia na jednostkach graficznych GPU wyposażonych w szybkie procesory strumieniowe. Coraz bardzie popularne stają się rozwiązania dające możliwość wykorzystania jednostek CPU i GPU w postaci klastrów obliczeniowych. 2. Procesory CPU Wszystkie współczesne procesory mają podobną architekturę oparta na superskalarnym jądrze RISC. RISC-owa konstrukcja umożliwia stosowanie wysokich częstotliwości zegara. Ze względu na stosunkowo małą liczbę równoległych rdzeni pojedynczego procesora dedykowane algorytmy CPU są sekwencyjne. Oznacza to wykonywanie kolejnych instrukcji w porządku chronologicznym zgodnie z zapisaną sekwencją. Algorytmy pozwalające na równoległe obliczenia mogą być w pełni wykorzystane dopiero przez procesory wielordzeniowe lub systemy typu GRID. Główną miarą wydajności, stosowaną obecnie dla współczesnych systemów komputerowych, jest liczba wykonywanych w ciągu sekundy operacji na liczbach zmiennoprzecinkowych (FLOPS). Mierzy się ją za pomocą odpowiednich testów wzorcowych. Najpopularniejszym takim testem jest LINPACK, mierzący szybkość rozwiązywania gęstych układów równań liniowych za pomocą metody Gaussa. Ponieważ wiele problemów stawianych superkomputerom daje się sprowadzić do rozwiązywania takich równań, test ten jest wygodną abstrakcją pomiaru efektywności w rozwiązywaniu takich problemów. Inną miarą wydajności superkomputerów jest miara FLOPS/wat, uwzględniająca oprócz szybkości wykonywania obliczeń również zużycie prądu przez superkomputery. Więcej informacji na temat obliczeń za pomocą procesorów CPU można znaleźć w pozycji: [4]. 3. Procesory GPU Najnowsze układy CPU i GPU są układami wielordzeniowymi. Ideą przewodnią dla technologii obliczeń na GPU jest współpraca procesora centralnego (CPU) z układem GPU w ramach środowiska obliczeniowego o heterogenicznym modelu przetwarzania. Sekwencyjna część aplikacji 515

wykonywana jest przez układ CPU, zaś za złożone obliczeniowo fragmenty odpowiada układ GPU. Z punktu widzenia użytkownika aplikacja działa po prostu szybciej, ponieważ dzięki wykorzystaniu wysokowydajnego układu GPU wydajność przetwarzania wzrasta. Więcej informacji na temat obliczeń za pomocą procesorów GPU można znaleźć w pozycji [5]. 3.1 Jednostki nvidia Akceleratory z serii Tesla zostały wprowadzone na rynek jesienią 2006 r. Opierały się na zmodernizowanych układach graficznych 8800 GTX, a ich procesory GPGPU oznaczone były symbolem Tesla T8P. Najnowsze akceleratory obliczeniowe nvidii opierają się wyłącznie na układach GF100 zgodnych z architekturą Fermi. W sprzedaży dostępne są akceleratory obliczeniowe z wyjściem graficznym DVI, które przeznaczone są do budowy wysokowydajnych obliczeniowych stacji roboczych Tesla C2050 i Tesla C2070 (modele te różnią się wielkością wbudowanej pamięci odpowiednio 3 i 6 GB). Dzięki nim standardowy pecet dysponuje mocą obliczeniową zarezerwowaną do niedawna dla superkomputerów i klastrów obliczeniowych Akceleratory Tesla zgodne z architekturą Fermi cechują się wydajnością obliczeń zmiennoprzecinkowych o podwójnej precyzji na poziomie 515 GFLOPS (FLOPS FLoating point Operations Per Second, operacji zmiennoprzecinkowych na sekundę) i ok. 1 TFLOPS w trybie z pojedynczą precyzją. Dla porównania, moc obliczeniowa czterordzeniowego procesora Intel Core i7 965 XE to zaledwie 70 gigaflopów dla obliczeń zmiennoprzecinkowych o podwójnej precyzji i to mniej więcej przy porównywalnej wielkości układu graficznego i tradycyjnego czterordzeniowego procesora. Procesory Tesla [8] są na tyle szybkie i na tyle dobrze uzupełniają tradycyjne CPU, że coraz częściej wykorzystuje się je do budowy najszybszych na świecie superkomputerów. I tak, zajmujący obecnie na liście TOP 500 drugie miejsce (do niedawna był to najszybszy superkomputer na świecie), znajdujący się od 2010 roku w National Supercomputing Center in Tianjin w Chinach superkomputer Tianhe-1A zbudowany został na podstawie 7168 procesorów Nvidia Tesla M2050 oraz 14336 procesorów Intel Xeon X5670 2,93 GHz. Jego łączna moc obliczeniowa to 2,507 petaflopsa. 3.2 Jednostki AMD Podobną, ale znacznie mniej popularną konstrukcją jest przygotowana przez firmę AMD seria pecetowych kart akceleratorów graficznoobliczeniowych AMD FireStream, oparta na układach graficznych z serii Radeon HD. Pierwszym akceleratorem, jeszcze pod nazwą ATI FireStrem, czyli przed przejęciem firmy ATI prze AMD, był FireStream 580 oparty na układzie RV580 (Radeon X1900 XTX). Obecnie w sprzedaży dostępna jest już czwarta generacja akceleratorów AMD FireStream. Są to AMD FireStream 9350 i 9370, które opierają się na układzie graficznym Cypress (RV870) karty graficzne Radeon HD 5850 i HD 5870. Składają się one odpowiednio z 1440 i 1600 prostych procesorów strumieniowych. Ich moc obliczeniowa to 2016 i 403,2 GFLOPS przy obliczeniach zmiennoprzecinkowych pojedynczej i podwójnej precyzji dla AMD FireStream 9350 oraz odpowiednio 2640 i 528 GFLOPS dla modelu 9370. 4. Architektura CUDA i OpenCL 4.1 nvidia CUDA CUDA [1,2] to opracowana przez firmę Nvidia uniwersalna architektura procesorów wielordzeniowych (głównie kart graficznych) umożliwiająca wykorzystanie ich mocy obliczeniowej do rozwiązywania ogólnych problemów numerycznych w sposób wydajniejszy niż w tradycyjnych, sekwencyjnych procesorach ogólnego zastosowania. Integralną częścią architektury CUDA jest oparte na języku programowania C środowisko programistyczne wysokiego poziomu, w którego skład wchodzą m.in. specjalny kompilator, debugger, profiler oraz interfejs programowania aplikacji. Dostępne są również biblioteki, które można wykorzystać w językach Python, Fortran, Java, C# oraz Matlab. W przeciwieństwie do języka OpenCL, CUDA jest dostępna tylko dla kart graficznych produkowanych przez nvidia począwszy od serii GeForce 8 w tym Quadro oraz Tesla. 4.2 OpenCL OpenCL [3] to zbiór standardów pomagających w programowaniu na heterogeniczne platformy obliczeniowe. Definiuje on standardowy, abstrakcyjny model heterogenicznej platformy obliczeniowej i zależne od niego modele dla kodu źródłowego programu, wykonania i hierarchii pamięci. Kod źródłowy składa się z programu hosta, który używając API OpenCL, uruchamia na urządzeniach obliczeniowych kernele obliczeniowe. Takie podejście standaryzuje to, co producenci kart graficznych udostępniali przez swoje specyficzne narzędzia i języki programowania. Z jednej strony dzięki standaryzacji, a z drugiej odpowiednim sterownikom, program napisany w OpenCL powinien być przenośny nie tylko między kartami graficznymi różnych producentów, ale między urządzeniami obliczeniowymi różnych typów W standardzie tym specyficzne jest definiowanie jedno-, dwu-, lub trójwymiarowej przestrzeni indeksów pozwalających odróżniać poszczególne instancje 516

kernela. Jest to wielowymiarowy i konfigurowalny system identyfikacji wątków. Wielowymiarowe indeksy pozwalają numerować wątki w zależności od dziedziny problemu. Zatem w maksymalnej konfiguracji rozwiązanie ma następująca moc obliczeniową: 84 rdzenie jakie dają nam procesory CPU oraz 32 karty graficzne wyposażone w 14 336 rdzeni CUDA. 5. Oprogramowanie inżynierskie 5.1 Matlab Matlab [7] jest środowiskiem obliczeniowym przeznaczonym dla inżynierów i naukowców, umożliwiającym przeprowadzanie obliczeń matematycznych, analizy numerycznej, wizualizacji otrzymanych wyników w postaci dwu i trójwymiarowych wykresów funkcji, wizualizację wyników obliczeń w postaci rysunków statycznych i animacji, jak również tworzenie algorytmów i programów. Matlab wiąże analizę numeryczną, obliczenia macierzowe, przetwarzanie sygnałów i grafikę w sposób przyjazny dla użytkownika, gdzie zarówno zadania jak i rozwiązania są zapisane matematycznie bez uwzględnienia zasad tradycyjnego programowania. Wykorzystując porty, możliwe jest pobieranie danych pomiarowych z urządzenia zewnętrznego w celu ich obróbki i analizy. Wszystko to powoduje, że program ten znajduje bardzo szerokie zastosowanie. Matlab zawiera wiele narzędzi zgrupowanych w pakiety (ang. toolbox), ukierunkowane na konkretne obszary zastosowań, np. pakiet symulacji Simulink, biblioteki do modelowania układów sterowania, narzędzia projektowania systemów przetwarzania sygnałów i obrazów. Z punktu widzenia zaawansowanych obliczeń numerycznych szczególna uwagę należy zwrócić na następujące toolboxy: Parallel Computing Toolbox oraz Matlab Distributed Computing Server. Parallel Computing Toolbox [6] daje możliwość: wykorzystywania do obliczeń maksymalnie do ośmiu rdzeni procesora CPU oraz wykonywanie obliczeń bezpośrednio na procesorach GPU. Wykorzystując Matlab Distributed Computing Server możemy zarządzać maksymalnie ośmioma maszynami z zainstalowanym oprogramowaniem Matlab Parallel Computing Toolbox, który jest w stanie obsłużyć do ośmiu rdzeni CPU oraz cztery karty graficzne typu nvidia [8]. Przykładowo używając ośmiordzeniowego procesora CPU typu AMD FX-8150 oraz czterech kart graficznych typu Tesla C2075 dostajemy potężną moc obliczeniową. Używane komputery 5.2 Mathematica Pakiet Mathematica [9] podobnie jak Matlab jest unikalnym środowiskiem do realizacji obliczeń matematycznych jak również publikowania wyników. Program został stworzony do prowadzenia obliczeń symbolicznych. Podstawowe cechy programu Mathematica to: oszczędność czasu, różnorodność procedur obliczeniowych, prezentacje graficzne, symboliczne rozwiązywanie problemu, dokładność obliczeń numerycznych, wszechstronność środowiska, druk publikacji, elektroniczna wymiana dokumentacji W tym miejscu należy wspomnieć, iż zarówno Matlab jak i Mathematica wspierają możliwość wykonywania obliczeń na wielu rdzeniach w obrębie jednego procesora jak również obliczeń na kartach graficznych. 6. Przykład Niech będzie dany układ m równań z n niewiadomymi opisany w postaci macierzowej Ax=b. Układ ten możemy tak przekształcić aby wyznaczyć niewiadome x w następujący sposób x=a-1b. Obliczenia przeprowadzono w środowisku Matlab. Macierze A i b generowane były w sposób losowy. Do obliczeń wykorzystano trzy takie same komputer o parametrach określonych w Tabeli 1 wyposażone w kartę graficzną GeForce nvidia 560Ti, GeForce nvidia 680 oraz PNY TeslaC2075 o parametrach określonych w Tabeli 2. Obliczenia były przeprowadzane dla danych o pojedynczej precyzji. Badane były następujące rozmiary układu: 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360, 16384, 17408, 18432, 19456, 20480, 21504 oraz 22528. Celem badan było sprawdzenie wydajności obliczeń oraz sprawdzenie szybkości obliczeń. Na Rysunku 2 przedstawiono zestawienie uzyskanych wyników natomiast Rysunek 1a oraz Rysunek 1b prezentują odpowiednio wykresy badania wydajności obliczeń oraz badanie szybkości obliczeń. Computers Nazwa Serwer 1 Serwer 2 Serwer 3 Procesor HexaCore AMD Phenom II X6 1075T, 3524 MHz (17.5 x 201) Zainstalowana pamięć RAM Karta graficzna NVIDIA GeForce GTX 560 Ti (1024 MB) Kingston 4x4GB DDR3-1333 DDR3 SDRAM NVIDIA GeForce GTX 680 (2048 MB) Tab.1. PNY Tesla C2075, 6GB GDDR5 ECC, 448 rdzeni, 517

Nazwa Silnik GPU Pamięć Karty graficzne Graphic cards Parametr GTX 560 Tesla GTX 680 Ti C2075 CUDA Cores 384 1536 448 Częstotliwość taktowania rdzenia graficznego (MHz) 822MHZ 1006 MHz 1,15GHz Częstotliwość taktowania procesora (MHz) 1648 Brak danych Brak danych Częstotliwość taktowania pamięci (MHz) 4008 Brak danych 1,5GHz Standardowa konfiguracja pamięci 1024MB 2048MB 6GB Szerokość interfejsu pamięci 256 bit 256 bit 384 bit Przepustowość pamięci (GB/sec) 128,0 192,2 144 Tab.2. (a) (b) Rys.1. (a) Szybkość obliczeń układu równań (b) Badanie wydajności obliczeń 518

(a) (b) Rys. 2. Zestawienie uzyskanych wyników 519

Z przeprowadzonych badań można wyciągnąć następujące wnioski: Zakres obliczeń uzyskany na poszczególnych kartach graficznych (GTX 560Ti układ równań o rozmiarze 9216, GTX 680 układ równań o rozmiarze 13312 oraz tesla C2075 układ równań o rozmiarze 22528) zależy od ilości pamięci w jaką jest wyposażona karta graficzna. Karta Cuda C2075 mimo relatywnie małej liczby CUDA Cores (448) bardzo dobrze wypada w stosunku do karty GTX680 posiadającej aż 1536 CUDA Cores. Czasy obliczeń uzyskiwane na kartach graficznych zależą od: szybkości przesyłania danych na kartę graficzną oraz szybkości obliczeń. Te dwa czasy składają się na całkowity czas obliczeń wykonywanych za pomocą karty graficznej Szybkość przesyłania danych na kartę graficzną zależy od szybkości łącza PCIe x16. W związku z tym należy pamiętać, żeby kart graficznych umieszczać w gniazdach PCI-Express x16 wyposażonych w 16 linii transmisyjnych a nie w gniazda PCI-Express x16 pracujących w trybie x4 lub x1. Obliczeni na kartach graficznych GPU w stosunku do obliczeń na CPU dają bardzo dobre progresy czasowe przykładowo dla układu o rozmiarze 22528 na CPU uzyskujemy czas obliczeń równy prawie 82 sekundy a na jednostce graficznej uzyskujemy czas prawie 26 sekund co daje nam lepszy czas o 315%. 6. Podsumowanie Rozwój technologii kart graficznych doprowadził do momentu, w którym zaczęły być one wykorzystywane nie tylko do gier komputerowych ale również do rozwiązywania złożonych problemów numerycznych z różnych obszarów nauki. W artykule pokazano jak wiele możemy zyskać w obliczeniach stosując tego typu mechanizmy. Patrząc na problemy, które obecnie należą do grupy trudno rozwiązywanych analitycznie, można przypuszczać, iż technologia ta mogłaby pomóc szczególnie w tych obszarach. Z przeprowadzonych badań możemy śmiało powiedzieć iż, obliczenia na kartach graficznych warte są dokładniejszej uwadze (w obecnym okresie kiedy stawiamy na przetwarzanie coraz większej liczby danych i informacji) w aspekcie rozwiązywania złożonych problemów numerycznych oraz stanowią bardzo dużą konkurencję dla istniejących metod obliczeniowych Podziękowania Badanie zrealizowano dzięki stypendium naukowemu w ramach projektu pn. Technologie informacyjne: badania i ich interdyscyplinarne zastosowania współfinansowanego ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego, Program Operacyjny Kapitał Ludzki (Umowa nr UDA-POKL.04.01.01-00-051/10-00) Literatura 1. Farber R.: CUDA Application Design and Development, Elsevier, 2011 2. Sanders J., Kandrot E.: CUDA by Example, Addison-Wesley, 2011 3. Gaster B.: Heterogeneous Computing with OpenCL, Elsevier, 2011 4. Herlihy M., Shavit N.: The Art of Multiprocessor Programming, Elsevier, 2008 5. Sheppard A.: Programming GPUs, O'Reilly Media, 2012 6. Attaway S.: Matlab, Second Edition: A Practical Introduction to Programming and Problem Solving, Butterworth-Heinemann, 2011 7. http://www.mathworks.com Dokumentacja oprogramowania Matlab. 8. http://www.nvidia.com Strona producenta kart graficznych. 9. http://www.wolfram.com/ - Dokumentacja oprogramowania Mathematica Adres służbowy Autora: dr inż. Konrad Andrzej MARKOWSKI Politechnika Warszawska, Wydział Elektryczny, ISEP ul. Koszykowa 75 00-662 Warszawa tel. (022) 234 56 25 fax (022) 625 62 78 email: Konrad.Markowski@ee.pw.edu.pl 520