2014-09-24 4 views
0

Если у меня общая память 48 КБ на каждый SM, и я создаю ядро, в котором я выделяю 32 КБ в общей памяти, это означает, что только один блок может работать на одном SM одновременно.CUDA разделяемая память

ответ

2

Да, это правильно.

Общая память должна поддерживать «след» всех «резидентных» блоков резьбы. Для того, чтобы потоковый блок запускался на SM, для его поддержки должно быть достаточно разделяемой памяти. Если нет, он будет ждать завершения текущего исполняемого потокаблока.

Существует несколько нюансов для этого прибытия с Maxwell GPUs (cc 5.0, 5.2). Эти графические процессоры поддерживают 64 КБ (cc 5.0) или 96 КБ (cc 5.2) разделяемой памяти. В этом случае максимальная общая память, доступная для одного блока потоков, по-прежнему ограничена 48 КБ, но несколько блоков потоков могут использовать более 48 Кбайт в совокупности на одном SM. Это означает, что cc 5.2 SM может поддерживать 2 потоковых блока, даже если оба используют общую память 32 КБ.

+0

Почему нет 3 резьбовых блока в этом случае? – Seltymar

+0

Возможно 3 резьбовых блока. –

Смежные вопросы