Cuda optim для Максвелла

Я пытаюсь понять параллельный пост по профилированию на уровне инструкций. И особенно следующие строки в разделе " Сокращение зависимости от памяти":

Графические процессоры NVIDIA не имеют индексированных файлов регистров, поэтому если доступ к массиву стека осуществляется с помощью динамических индексов, компилятор должен разместить массив в локальной памяти. В архитектуре Maxwell локальные хранилища памяти не кэшируются в L1, и, следовательно, задержка загрузки локальной памяти после хранилищ является значительной.

Я понимаю, что такое файлы реестра, но что это значит, что они не проиндексированы? И почему это мешает компилятору хранить массив стека, доступ к которому осуществляется с помощью динамических индексов?

Цитата говорит, что массив будет храниться в локальной памяти. Какому блоку соответствует эта локальная память в архитектуре ниже?

введите описание изображения здесь

1 ответ

... что это значит, что они не проиндексированы

Это означает, что косвенная адресация регистров не поддерживается. Таким образом, невозможно индексировать один регистр (теоретически регистр, содержащий первый элемент массива) в другой произвольный регистр. В результате компилятор не может сгенерировать код для нестатической индексации массива, хранящегося в регистрах.

Какому блоку соответствует эта локальная память в архитектуре ниже?

Это не соответствует ни одному из них. Локальная память хранится в DRAM, а не в самом GPU.

Другие вопросы по тегам