CUDA & CUDA.NET – czyli istne CUDA Piotr Ablewski

Slides:



Advertisements
Podobne prezentacje
Język C/C++ Funkcje.
Advertisements

Równoległe kwerendy danych
System cloud'owy Amazon EC2
Decyzje projektowe w .NET Framework
Bezpieczeństwo wyjątków w C++: OpenGL
Wydajne aplikacje na platformie .NET
Implementacja algorytmów na procesory kart graficznych
Visual Studio Codename „Orcas”, LINQ
GDB Omówienie z przykładami
Obliczenia równoległe w grafice komputerowej
PODSTAWY JĘZYKA PHP 1. czym jest 2. składnia 3. wersje 4. bazy danych
Microsoft WinFS – nowy system plików, zasada działania. Wojtek Galek.
Opcje kompilatora g77 g77 [opcje] pliki_źródłowe Opcje: -c tylko kompilacja bez linkowania -S kompilacja do kodu assemblera -E tylko pre-processing -o.
Microsoft Serwer - wprowadzenie
Systemów Operacyjnych
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
Zastosowanie technologii CUDA w sztucznej inteligencji
CUDA (Compute Unified Device Architecture)
Błażej Miśkiewicz Windows Home Server 2011 Błażej Miśkiewicz MCT MCP MCSA MCTS MCITP.
Mariusz Maleszak Za oknami chmury Mariusz Maleszak
Podstawy C# Grupa .NET PO.
Podstawy programowania II
Wprowadzenie WebMatrix: Stwórz swoją stronę od podstaw
Witold Bołt Wprowadzenie do .NET Witold Bołt
P ISZ MNIEJ, RÓB WIĘCEJ - ZASTOSOWANIE J Q UERY Kamil Szumański s4126.
Bootloader – program rozruchowy
WSPARCIE DLA BIZNESU / STR. 2 Mikołaj Gomółka UpGreat Systemy Komputerowe Sp. z o.o Poznań, ul Ostrobramska 22 Tel Faks: 0-61.
Parallel Extension czyli programowanie równoległe != współbieżne na platformie .NET Framework 4.0 Wojciech Grześkowiak
Podstawy programowania. Język C i C++– podstawy Temat: 1
KINECT – czyli z czym to się je?. O czym będziemy mówić? Obecna oferta rynkowa. Co to jest i jak działa Kinect? Jak przygotować komputer do pracy z Kinectem?
GOSPODARKA PAMIĘCIĄ, STRUMIENIE (i nie tylko)
Administracja serwerem bazy danych Oracle 11g Zarządzanie strukturą bazy danych Wykład nr 2 Michał Szkopiński.
Kompilator SDCC i Pakiet STRC52 Mgr inż. Aleksander Pruszkowski
Budowa systemu komputerowego
Dr hab. Dariusz Piwczyński Katedra Genetyki i Podstaw Hodowli Zwierząt
System operacyjny napisany w.NET (ogólnie rzecz biorąc)
Witold Bołt. Agenda W czym tkwi problem..? Po co jest oprogramowanie? Kim jest użytkownik? Zbieranie danych Co to jest design Współpraca programista-projektant.
Programowanie Windows na przykładzie C# część 1
Odwzorowywanie tekstur
Systemy operacyjne.
Oficjalne wydanie Moldex3D Viewer Moldex3D – TIPs.
Systemy plików FAT, FAT32, NTFS
Programowanie obiektowe – zastosowanie języka Java SE
Implementacja systemu
C# Platforma .NET CZ.3 Kuba Ostrowski.
KINECT Jakub Hossa Microsoft Student Partner. KINECT Jakub Hossa Microsoft Student Partner.
Architektura PC.
Rodzaje pamięci Kamiński Daniel TI s1.
Kostyantyn Doronovych, 79129, sr1640 Łukasz Marciniak, 79166, sr1640
Kostyantyn Doronovych, 79129, sr1640 Łukasz Marciniak, 79166, sr1640
Użytkowanie i programowanie Matlaba
Automatyzacja zadań administracyjnych za pomocą Windows PowerShell
Wstęp do ASP.NET Arkadiusz Popa Serwery Aplikacji
Programowanie w języku C++
Windows 8.1 dostarcza spójną platformę do tworzenia aplikacji, które potrafią dostosować się do wielu urządzeń Zaprojektowane raz, działają.
Responsywne aplikacje w Windows 8 i.NET 4.5 Jakub Binkowski.
Wprowadzenie do systemu Cracow Cloud One
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Java profiler based on byte code analysis and instrumentation for apdaptation the source code in many-core hardware accelerators Marcin Pietroń, Dominik.
Programowanie Windows (Win32/Win64 API)
1 Uzupełnienie dot. przekazywania argumentów #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct.
System Operacyjny Windows Przedstawia Mateusz Bałdyga kl. 1 „D”
.NET Core Łukasz Co to takiego? Nowy, open-sourcowy framework pozwalający na pisanie cross-platformowych aplikacji z użyciem.NET.
Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C
Aplikacje i usługi internetowe
Podstawy programowania
NEMERLE Michał Maliszewski.
Zapis prezentacji:

CUDA & CUDA.NET – czyli istne CUDA Piotr Ablewski

Co to jest CUDA? Compute Unified Device Architecture Nvidia Windows, Mac OS X, Linux

Może coś więcej… C / C++ Własne IDE Kompilator nvcc Debugger cuda-gdb profiler

Dlaczego CUDA? ©ywilizowany język Obliczenia na GPU Pamięć współdzielona (48 KB) w bloku (128-512 wątków) Cache Dowolna alokacja pamięci w GPU Zapewniona kompatybilność wstecz w kolejnych wersjach

So sweet xD

Ale nie całkiem…  C++ bez rekurencji i wskaźników na funkcje, nie ma zmiennych statycznych i funkcji ze zmienną liczbą parametrów Inne zaokrąglanie double Wąziutkie gardło – PCI-Express

A co najfajniejsze – tylko dla kart Nvidia 

Zastosowania Fizyka Numeryka Biologia, kryptografia, obliczenia inżynierskie (QUADRO, TESLA) AI Przetwarzanie rozproszone GRY

A gdzie .NET? A gdzie C#?

CUDA.NET C# i wsparcie dla VS >= 2k8

Co w .NET? Nakładka na C – nowe API i biblioteki do obliczeń (np. FFT, BLAS) opartych na GPU Działa na Mono – OpenSource’owcy , nie płaczcie

Kompatybilność Win XP + Win Server 2003 + Linux Mac OS X .NET Framework 2.0 + Zarówno komputery 32- i 64 bit

Jak użyć? Piszemy zwykłą Appkę Funkcje, które mają wykonać się na rdzeniu CUDA w pliku .cu Dodajemy build rule: nvcc *.cu –cubin Dodajemy do projektu referencję do CUDA.net i piszemy kod

And so we code…. We spend hours in the debug mode  Taki drobny żarcik, podobno ostatnio jestem za poważny

int BLOCK_SIZE = 256; CUDA cuda = new CUDA(0, true); cuda int BLOCK_SIZE = 256; CUDA cuda = new CUDA(0, true); cuda.LoadModule(Path.Combine(Environment.CurrentDirectory, "kernel.cubin")); CUfunction func = cuda.GetModuleFunction("hslfilter"); cuda.SetParameter(func, 0, (uint)dev_values.Pointer); cuda.SetParameter(func, (int)IntPtr.Size, ratio); cuda.SetParameterSize(func, (uint)IntPtr.Size+4); cuda.SetFunctionBlockShape(func, BLOCK_SIZE, 1, 1); cuda.Launch(func, (input.Length / 3) / BLOCK_SIZE, 1); output = new byte[input.Length]; cuda.CopyDeviceToHost(dev_values, output); cuda.Free(dev_values);

Kolejne morderstwo? http://www.hoopoe-cloud.com/Solutions/CUDA.NET/Default.aspx - not found ..... http://www.hybriddsp.com/ - CUDAfy.NET still ALIVE!!! Co się dzieje? A gdyby tak każdy ubijał swój .NETowy projekt? Byłoby nas mniej, .NETowców….

Co w CUDAfy? CUDAfy Library (GPGPU Extensions)                                                  CUDAfy Library (GPGPU Extensions) CUDAfy Translator (.NET to CUDA C) CUDAfy Host Library (Interact with GPU from Host App) CUDAfy Math Library (FFT, RAND, SPARSE, BLAS) CUDAfy Module Viewer GUI CUDAfy Command Line Tool Run on Windows or Linux (Mono)

To może zobaczmy jak to działa. DEMA