У меня есть некоторые вопросы, касающиеся регистров памяти CUDAИспользование памяти Регистрация в CUDA
1) Есть ли способ свободных регистров в Cuda ядра? У меня есть переменные, 1D и 2D массивы в регистрах. (максимальный размер массива 48)
2) Если я использую функции устройства, то что произойдет с регистрами, которые я использовал в функции устройства после его выполнения? Будут ли они доступны для вызова выполнения ядра или других функций устройства?
3) Как nvcc оптимизирует использование регистров? Пожалуйста, поделитесь важными моментами, чтобы оптимизировать интенсивное ядро памяти
PS: У меня есть сложный алгоритм для порта в cuda, который занимает много регистров для вычислений, я пытаюсь выяснить, хранить ли промежуточные данные в регистре и написать одно ядро или сохранить его в глобальной памяти и разбить алгоритм в нескольких ядрах.
Я уже использую общую и постоянную память, но все же из-за интенсивного вычисления алгоритма требуется много регистров (> 255, я действительно задал эти вопросы для вычисления числа регистров, необходимых при разработке алгоритма). Если я храню промежуточные результаты в глобальной памяти и разбиваю вычисления на несколько ядер, то я уверен, что буду тратить много циклов на чтение и запись. Лучше ли выпустить регистры в локальную память? (так что если в графических процессорах следующего поколения будет поддерживаться один и тот же алгоритм, если увеличивается регистр на поток) – Adarsh
@Adarsh: вы не можете вывести количество используемых регистров из исходного кода CUDA, это выбор компилятора, который вы можете ограничить с помощью 'maxrregcount' или используя менее локальные переменные.При переносе кода с CPU на CUDA рассмотрите также возможность изменить свой алгоритм на более удобный для оборудования GPU. Разделение вашей большой задачи на несколько ядер - лучший подход для алгоритмов с привязкой к вычислению (ответ обновлен): менее используемый регистр для ядра, более активные потоки будут скрывать загрузку/сохранение. nvvp сообщит вам, попадает ли ваше ядро в эту категорию. Не будьте уверены, попробуйте. –
@Adarsh, если мой ответ удовлетворил вас, пожалуйста, подпишите его как принятое или уточните, что отсутствует. –