1 CUDA & CUDA.NET – czyli istne CUDA Piotr Ablewski
2 Co to jest CUDA? Compute Unified Device Architecture NvidiaWindows, Mac OS X, Linux
3
4
5 Może coś więcej… C / C++ Własne IDE Kompilator nvcc Debugger cuda-gdbprofiler
6 Dlaczego CUDA? ©ywilizowany język Obliczenia na GPUPamięć współdzielona (48 KB) w bloku ( wątków) Cache Dowolna alokacja pamięci w GPU Zapewniona kompatybilność wstecz w kolejnych wersjach
7
8 So sweet xD
9 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
10 A co najfajniejsze – tylko dla kart Nvidia
11 Zastosowania Fizyka NumerykaBiologia, kryptografia, obliczenia inżynierskie (QUADRO, TESLA) AI Przetwarzanie rozproszone GRY
12 A gdzie .NET? A gdzie C#?
13 CUDA.NET C# i wsparcie dla VS >= 2k8
14
15 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
16 Kompatybilność Win XP + Win Server 2003 + Linux Mac OS X.NET Framework 2.0 + Zarówno komputery 32- i 64 bit
17 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
18 And so we code…. We spend hours in the debug mode Taki drobny żarcik, podobno ostatnio jestem za poważny
19
20 int BLOCK_SIZE = 256; CUDA cuda = new CUDA(0, true); cudaint 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);
21 Kolejne morderstwo? - not found ..... - CUDAfy.NET still ALIVE!!! Co się dzieje? A gdyby tak każdy ubijał swój .NETowy projekt? Byłoby nas mniej, .NETowców….
22
23
24 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)
25 To może zobaczmy jak to działa.DEMA