04.01.2015 Views

Czy fizyk może liczyć na CUDA? - iCSE

Czy fizyk może liczyć na CUDA? - iCSE

Czy fizyk może liczyć na CUDA? - iCSE

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!