Cuda optim для Максвелла
Я пытаюсь понять параллельный пост по профилированию на уровне инструкций. И особенно следующие строки в разделе " Сокращение зависимости от памяти":
Графические процессоры NVIDIA не имеют индексированных файлов регистров, поэтому если доступ к массиву стека осуществляется с помощью динамических индексов, компилятор должен разместить массив в локальной памяти. В архитектуре Maxwell локальные хранилища памяти не кэшируются в L1, и, следовательно, задержка загрузки локальной памяти после хранилищ является значительной.
Я понимаю, что такое файлы реестра, но что это значит, что они не проиндексированы? И почему это мешает компилятору хранить массив стека, доступ к которому осуществляется с помощью динамических индексов?
Цитата говорит, что массив будет храниться в локальной памяти. Какому блоку соответствует эта локальная память в архитектуре ниже?
1 ответ
... что это значит, что они не проиндексированы
Это означает, что косвенная адресация регистров не поддерживается. Таким образом, невозможно индексировать один регистр (теоретически регистр, содержащий первый элемент массива) в другой произвольный регистр. В результате компилятор не может сгенерировать код для нестатической индексации массива, хранящегося в регистрах.
Какому блоку соответствует эта локальная память в архитектуре ниже?
Это не соответствует ни одному из них. Локальная память хранится в DRAM, а не в самом GPU.