Moc płynąca z kart graficznych

Podobne dokumenty
Programowanie procesorów graficznych GPGPU

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 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 NVIDIA (rdzenie CUDA) Wykład nr 1

i3: internet - infrastruktury - innowacje

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

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

Tesla. Architektura Fermi

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

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Organizacja pamięci w procesorach graficznych

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

Przetwarzanie Równoległe i Rozproszone

INŻYNIERIA OPROGRAMOWANIA

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

Raport Hurtownie Danych

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

Programowanie obiektowe

MMX i SSE. Zbigniew Koza. Wydział Fizyki i Astronomii Uniwersytet Wrocławski. Wrocław, 10 marca Zbigniew Koza (WFiA UWr) MMX i SSE 1 / 16

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

JCuda Czy Java i CUDA mogą się polubić? Konrad Szałkowski

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

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

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

ROZPROSZONY SYSTEM DO KRYPTOANALIZY SZYFRÓW OPARTYCH NA KRZYWYCH ELIPTYCZNYCH

I N S T Y T U T I N F O R M A T Y K I S T O S O W A N E J 2016

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1

Klaster obliczeniowy

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

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

Numeryczna algebra liniowa

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

Karta przedmiotu. Podstawy programowania procesorów graficznych. realizowanego w ramach projektu PO WER

Programowanie Rozproszone i Równoległe. Edward Görlich goerlich@th.if.uj.edu.pl

Praca dyplomowa magisterska

Programowanie kart graficznych

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

CUDA część 1. platforma GPGPU w obliczeniach naukowych. Maciej Matyka

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

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

Obliczenia Wysokiej Wydajności

Programowanie aplikacji równoległych i rozproszonych

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

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

CUDA. cudniejsze przyk ady

Programowanie Równoległe Wykład, CUDA praktycznie 1. Maciej Matyka Instytut Fizyki Teoretycznej

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

Programowanie sterowników przemysłowych / Jerzy Kasprzyk. wyd. 2 1 dodr. (PWN). Warszawa, Spis treści

Obliczenia Wysokiej Wydajności

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Literatura. 3/26/2018 Przetwarzanie równoległe - wstęp 1

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Wstęp do OpenCL. Czyli jak wykorzystać moc drzemiącą w GPU. Marek Zając 2013r. zajacmarek.com

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Programowanie w języku C++ Grażyna Koba

Szkolenia specjalistyczne

Programowanie obiektowe zastosowanie języka Java SE

Larrabee GPGPU. Zastosowanie, wydajność i porównanie z innymi układami

Libra.cs.put.poznan.pl/mailman/listinfo/skisrkolo.

Podstawy języka Java. przygotował:

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Programowanie procesorów graficznych GPGPU

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych)

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Podstawy i języki programowania

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Wstęp do obliczeń równoległych na GPU

NAZWA PRZEDMIOTU/MODUŁU KSZTAŁCENIA:

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

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Rok akademicki: 2013/2014 Kod: STC s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

INŻYNIERIA OPROGRAMOWANIA

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Metody optymalizacji soft-procesorów NIOS

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Karty graficzne możemy podzielić na:

Java jako język programowania

Grafika komputerowa i wizualizacja

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Task Parallel Library

Programowanie obiektowe 1 - opis przedmiotu

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

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

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

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.

Wprowadzenie do programowania w środowisku CUDA. Środowisko CUDA

Julia 4D - raytracing

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

Karta graficzna karta rozszerzeo odpowiedzialna generowanie sygnału graficznego dla ekranu monitora. Podstawowym zadaniem karty graficznej jest

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

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

Transkrypt:

Moc płynąca z kart graficznych Cuda za darmo! Czyli programowanie generalnego przeznaczenia na kartach graficznych (GPGPU) 22 października 2013 Paweł Napieracz /20

Poruszane aspekty Przetwarzanie równoległe Obliczenia na kartach graficznych: kiedyś/dziś, pokaz wydajności, zastosowania; Architektura GPU Zalety i wady OpenCL Aparapi 22 października 2013 2/20

Przetwarzanie równoległe przetwarzanie wielu instrukcji równocześnie, konieczność wytworzenia kodu współbieżnego: dla czasochłonnych fragmentów programu, kosztowne: inne podejście do programowania, występowanie błędów (np. wyścigi), synchronizacja, dostęp do pamięci; najszybciej zrównolegla się obliczenia niezależne. 22 października 2013 3/20

Obliczenia na kartach graficznych? Kiedyś: wykorzystanie interfejsów do wyświetlania grafiki, tworzenie tekstur i obliczenia przy użyciu DirectX i OpenGL; Dziś: wyspecjalizowane narzędzia programistyczne, kompilacja i uruchomienie własnych programów z użyciem karty graficznej. 22 października 2013 4/20

Ale gdzie te CUDA? Programowanie na karty graficzne umożliwia architektura i zestaw narzędzi, nazwany przez firmę nvidia, CUDA. Alternatywą dla układów graficznych od AMD jest AMD APP. 22 października 2013 5/20

Ale gdzie te CUDA? Moc obliczeń z wykorzystaniem architektury CUDA [1] 22 października 2013 6/20

Ale gdzie te CUDA? Algorytm Floyd Warshall (minimalny dystans w grafie), o złożoności O(n 3 ) dla drzewa z 4096 wierzchołkami [2] Mnożenie macierzy [2] 22 października 2013 7/20

Ale gdzie te CUDA? Algorytm wyliczania ilości dzielników podanych liczb [2] Sprawdzanie czy liczba (19 cyfrowa) jest liczbą pierwszą [2] 22 października 2013 8/20

Gdzie się wykorzystuje? mathlab, PhotoShop's plugins, rendering video, projekty naukowe (Folding@home, GIMPS), symulacje, gry komputerowe (obliczenia fizyki). 22 października 2013 9/20

Architektura GPU Porównanie liczby rdzeni w CPU a GPU [3] 22 października 2013 10/20

Architektura GPU Zasięg pamięci i przedstawienie architektury [4] 22 października 2013 11/20

Schemat przetwarzania Podział pracy CPU i GPU w typowym programie z przetwarzaniem masowo-równoległym [5] 22 października 2013 12/20

Zalety i wady... odciążenie CPU, przyśpieszenie obliczeń, dodatkowa pamięć na obliczenia, trudna architektura koszta wytworzenia wysokie, tylko wybrane obliczenia na GPU, kosztowne przesyły danych z pamięci RAM komputera do pamięci RAM karty graficznej, zachowanie kompatybilności wstecznej czasochłonne, wytworzenie szybkiej aplikacji wymaga bardzo dużego doświadczenia. 22 października 2013 13/20

OpenCL otwarty standard dla programowania równoległego, oparty na języku c z dodatkowymi definicjami, między platformowy: nvidia, AMD, Intel, arm, GPU, CPU, alternatywa dla zamkniętych standardów (nvidia CUDA), obecnie wszystkie platformy zaangażowane są w jego rozwój. 22 października 2013 14/20

Aparapi biblioteka napisana w języku Java, tłumaczy w runtime'ie kod Javy na język OpenCL: maksymalnie upraszcza pisanie kodu na GPGPU (z założenia nie musimy nawet o tym pamiętać, że piszemy pod OpenCL'a), Pozwala na uruchamianie kodu na GPU i CPU, wersja rozwojowa wspiera wyrażenia lambda (Java 8). 22 października 2013 15/20

Aparapi Standardowy, sekwencyjny kod w j. Java Przetwarzania masywno-równoległe przy użyciu Aparapi final float ina[] =... final float inb[] =... //(ina.length==inb.length) final float result = new float[ina.length]; for (int i=0;i<array.length;i++){ result[i]=ina[i]+inb[i]; } Kernel kernel = new Kernel() { @Override public void run() { int i= getglobalid(); result[i]=inta[i]+inb[i]; } }; Range range = Range.create(result.length); kernel.execute(range); 22 października 2013 16/20

Aparapi zarządzanie pamięcią (host device): kernel.setexplicit(true); get(data); put(data); optymalizacje (np. unikanie pętli kernela): kernel.execute(range, loopcount); przetwarzanie prostych obiektów (typy proste i tablice), używanie różnych zasięgów operacji. 22 października 2013 17/20

Aparapi Wystarczająco rozwinięta, aby przyśpieszyć obliczenia używając technologii Java. 22 października 2013 18/20

Dziękuję za uwagę! Pokaz demo :). 22 października 2013 19/20

Źródła [1] - http://www.hardwarecanucks.com/forum/hardware-canucks-reviews/24145-gpu-technology-conference-nvidias-new-focuschanging-market-2.html [2] - http://aparapi-vortex.blogspot.com/ [3] - http://blog.goldenhelix.com/?p=374 [4] - http://electronicdesign.com/embedded/programming-cuda-architecture-look-gpu-computing [5] - http://goo.gl/xc74t3 Parallel reduction example - https://github.com/archaeasoftware/cudahandbook/tree/master/reduction 22 października 2013 20/20