Доступ к локальной памяти объединен? - PullRequest
2 голосов
/ 06 сентября 2011

Предположим, я объявляю локальную переменную в функции ядра CUDA для каждого потока:

float f = ...; // some calculations here

Предположим также, что объявленная переменная была помещена компилятором в локальную память (которая совпадает сглобальный за исключением того, что он виден только для одного потока, насколько я знаю).Мой вопрос: будет ли доступ к f слияния при его чтении?

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Я не верю, что есть официальная документация о том, как локальная память (или стек в Fermi) размещается в памяти, но я почти уверен, что доступ к мультипроцессорному доступу осуществляется «чередующимся» образом, чтобы не расходящиеся потокив этом же варпе получится объединенный доступ к локальной памяти.В Fermi локальная память также кэшируется с использованием того же механизма доступа L1 / L2, что и глобальная память.

0 голосов
/ 22 сентября 2011

На картах CUDA нет памяти, выделенной для локальных переменных.Все локальные переменные хранятся в регистрах.Сложные ядра с большим количеством переменных уменьшают количество потоков, которые могут работать одновременно, условие, известное как низкая занятость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...