Czy fizyk może liczyć na CUDA? - iCSE
Czy fizyk może liczyć na CUDA? - iCSE
Czy fizyk może liczyć na CUDA? - iCSE
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Czy</strong> <strong>fizyk</strong> <strong>może</strong> <strong>liczyć</strong> <strong>na</strong><br />
<strong>CUDA</strong><br />
Marcin Kostur
<strong>CUDA</strong><br />
Compute<br />
Unified<br />
Device<br />
Architecture
(r)Ewolucja mikroprocesorów<br />
● Gry komputerowe: 65.9 mld $ w 2011.<br />
●<br />
●<br />
●<br />
Od kilku lat nie grafika, ale symulacja <strong>fizyk</strong>i<br />
jest wyzwaniem.<br />
Stymulują rozwój<br />
GPU.<br />
GPU łamią prawo<br />
Moora.
Rewolucja mikroprocesorów II<br />
●<br />
●<br />
GPU: symulacja w czasie rzeczywistym <strong>na</strong><br />
powszechnie dostępnym sprzęcie<br />
1 TFLOP:<br />
– 1 GPU z 2009, 500$.<br />
– 1 Superkomputer 1999 55mln $.<br />
=
Multi GPU = 4 TFLOPS<br />
… 1.2kW odkurzacz z sali 368<br />
15.01.10 5
GPU: architektura<br />
Nvidia G200 GPU:<br />
●<br />
●<br />
●<br />
●<br />
30 multiprocesorów<br />
240 rdzeni<br />
512 wątków/multiproc.<br />
15360 wątków/GPU<br />
15.01.10 6
GPU: architektura<br />
● 30 multiprocesorów z zegarem 1.5GHz<br />
● 1-4 GB RAM<br />
● 1 TFLOPS (single)<br />
15.01.10 7
Procesor strumieniowy:<br />
● 8 jednostek skalarnych (SP):<br />
IEEE 754 32-bit floating point<br />
32-bit float and 64-bit integer<br />
16K 32-bit rejestry<br />
GPU:Architektura<br />
● 2 SFU Special Function Units<br />
● 1 Double Precision Unit (DP)<br />
IEEE 754 64-bit floating point<br />
● Multithreaded Instruction Unit<br />
1024 wątków jednocześnie,<br />
sprzętowa wielowątkowość<br />
Sprzętowe kolejkowanie wątków<br />
● 16KB Shared Memory<br />
Uwspólnio<strong>na</strong> dla równoczesnych wątków<br />
Szybki czas dostępu<br />
(500x szybciej niż pamięć global<strong>na</strong>)
Środowisko <strong>CUDA</strong><br />
●<br />
Model programowania równoległego i środowisko<br />
software'owe dla kart graficznych firmy NVIDIA.<br />
● Działa w systemach Linux, Windows i MacOS X.<br />
● Programowanie GPU za pomocą dialektu języka C.<br />
●<br />
Wielowątkowe programy oparte <strong>na</strong> koncepcji<br />
kernela: każdy wątek wykonuje ten sam kod, ale<br />
<strong>na</strong> innym zestawie danych.<br />
15.01.10 9
<strong>CUDA</strong>: Wątki<br />
●<br />
●<br />
●<br />
Bardzo duża liczba wątków<br />
Struktura hierarchicz<strong>na</strong><br />
Block = wirtualny multiprocesor
Przykłady zastosowań GPU<br />
●<br />
●<br />
●<br />
●<br />
●<br />
Komputerowa<br />
symulacja płynów<br />
Dy<strong>na</strong>mika<br />
molekular<strong>na</strong><br />
Numerycz<strong>na</strong> algebra<br />
liniowa (blas,spvm)<br />
Kryptografia<br />
Biologia<br />
obliczeniowa<br />
15.01.10 11<br />
●<br />
●<br />
●<br />
●<br />
●<br />
A<strong>na</strong>liza obrazu<br />
Dy<strong>na</strong>mika<br />
stochastycz<strong>na</strong><br />
Data mining<br />
Chemia<br />
obliczenioawa (DFT)<br />
Elektrody<strong>na</strong>mika<br />
● Gry ;-)
<strong>CUDA</strong> w Instytucie Fizyki UŚ<br />
Intensywnie są rozwijane dwa zastosowania<br />
● Dy<strong>na</strong>mika stochastycz<strong>na</strong> (od 2008)<br />
– Potężne! przyśpieszenie obliczeń<br />
●<br />
Mechanika płynów:<br />
– Lattice Boltzmann Method,<br />
– projekt sailfish by Michał Januszewski.<br />
15.01.10 12
SDE <strong>na</strong> <strong>CUDA</strong><br />
●<br />
Implementacja symulacji dy<strong>na</strong>miki<br />
stochastycznej <strong>na</strong> GPU:<br />
przyśpieszenie do 675x<br />
15.01.10 13
Lattice Boltzmann Method<br />
●<br />
●<br />
●<br />
●<br />
Z<strong>na</strong><strong>na</strong> od ok. 20 lat.<br />
Powstała z LGA.<br />
Ma przewagę <strong>na</strong>d<br />
NS w przypadku<br />
mat. porowatych.<br />
Dosko<strong>na</strong>le skaluje<br />
się <strong>na</strong> komuterach<br />
równoległych.<br />
15.01.10 14
Lattice-Boltzmann Method<br />
15.01.10 15
Sailfish.us.edu.pl<br />
● Open Source<br />
● LGPL<br />
● LBM<br />
● Używa GPU<br />
● 100x szybszy<br />
Python + <strong>CUDA</strong><br />
15.01.10 16
15.01.10 17
Sailfish: stan projektu<br />
●<br />
Wizualizacja 2D i 3D<br />
● Wsparcie dla modeli MRT i BGK oraz 2<br />
różnych rodzajów warunków brzegowych<br />
●<br />
●<br />
●<br />
●<br />
Wydajność rzędu 1.2 GLUPS/GPU<br />
Obliczenia pojedynczej i podwójnej precyzji<br />
Wsparcie dla <strong>CUDA</strong> oraz OpenCL<br />
Więcej <strong>na</strong> - http://sailfish.us.edu.pl<br />
15.01.10 18
Sailfish: stan projektu<br />
Współczynnik oporu za sferą w rurce<br />
15.01.10 19
<strong>Czy</strong> <strong>fizyk</strong> <strong>może</strong> <strong>liczyć</strong> <strong>na</strong><br />
platformie <strong>CUDA</strong><br />
TAK<br />
15.01.10 20