Sobes.tech
Senior

Šta je deljena memorija i zašto je koristiti?

sobes.tech АИ

Одговор од АИ

Делена меморија у контексту ГПУ и CUDA је област меморије која је доступна свим нитима унутар једног блока нитова. Она се налази на самом ГПУ-у и много је бржа од глобалне меморије, јер има ниску латенцију и висок пропусни опсег.

Користећи делену меморију омогућава се ефикасна размена података између нитова блока без потребе за приступом спорој глобалној меморији. Ово је посебно важно за алгоритме машинског учења и паралелне рачунације, где је често потребно делити међузбируће резултате.

Пример: при имплементацији конволуција или матричних операција, прво се могу учитати подаци у делену меморију, извршити рачунања, а затим записати резултат у глобалну меморију, што значајно убрзава извршавање.

Пример CUDA кода:

__shared__ float tile[32][32];

int tx = threadIdx.x;
int ty = threadIdx.y;

// Учитавање података из глобалне у делену меморију
tile[ty][tx] = input[y * width + x];
__syncthreads();

// Коришћење података из делене меморије за рачунања
float val = tile[ty][tx] * 2.0f;

// Запис резултата назад у глобалну меморију
output[y * width + x] = val;

Овим начином, делена меморија помаже у оптимизацији перформанси смањењем броја спорих приступа глобалној меморији.