Paměťový model CUDA

Hierarchie pamětí CUDA

paměťlatence
registry1 takt
L1 při cache miss400 taktu
shared32 taktů
L1 | LL400
LC400
texture400

Paměťový subsystém z HW pohledu

Princip práce s pamětí

  1. Minimalizovat přístupy do globální paměti
  2. Udržovat data pro výpočet co nejblíže procesoru – sdílená paměť/registry
  3. Provádět nad daty uvnitř procesoru co nejvíce výpočtů pro překrytí latence způsobené čtením dat z globální paměti
  1. Eliminovat nezarovnané přístupy
  2. Eliminovat přístupy s rozestupem
  3. Zužitkovat všechna data z paměťové transakce (128–512 B)

Alokace globální CUDA paměti

Alokace paměti na straně Host (CPU)

Zero-copy

SDRUŽOVÁNÍ PAMĚŤOVÝCH PŘÍSTUPŮ DO GLOBÁLNÍ PAMĚTI

Správný přístup do globální paměti

Sdružené přístupy a využití cache

blockDim.x * blockDim.x + threadIdx.x i += blockDim.x * gridDim.x

Struktury a objekty

Registrové pole a lokální paměť