$$
{ \partial u \over \partial t} = \alpha \nabla^2 u
$$
- technika konečných diferencí druhého řádu
- ,,Stencil computing’’ a iterační výpočet
$$
u_{i,j}^{n+1} = u_{i,j}^{n} + \frac{\alpha k}{h^2} (\dots - 4 \cdot u_{i,j}^{n})
$$
- smyčka
while(eps > thres) je sekveční - bude na cpu
std::swap - potřeba bariéry
- zbytek může být kernel
- typická otázka memory bound problému
- vždy když skončí kernel, tak se vymaže sdílená paměť!
return - vlákna se stane neaktivní - nemusí se účastnit bariéry
- nezarovnaný přístup do paměti - 14x14 zápis
- metoda 8. řádu - odskakuje lépe
- natahujeme více dat do sdílené paměti, jinak jsou bloky zarovnané
- nevadí nám divergence mezi warpy, ale uvnitř warpů
- proč více warpu
- mene vede na divergenci warpu, kdyz pracuje jen část, lze použít přepínání
- Jak zjistím ID Warpu?
- Kde je problém?
- změní bloky na 8x32
- asynchronní kopie
cudaMemcpy - nakopíruje na správné pozice do paměti
- rychlejší než beztexturní varianta!
- nvidia používá např pro více rozměrný fourier transform
- 64KB v glob. paměti
- při adresování používá cache
- funguje dobře, když v rámci warpu, čtou stejnou konstantu
- lepší mít AoS než SoA!
- často chceme
x y i | x y i | ...
- při větší počtu můžeme volat po fázích - prvních X světel, poté dalších X světel