Мне хотелось бы знать, как аппаратная/временная система CUDA обрабатывает следующий случай.Как именно CUDA обрабатывает доступ к памяти?
Если инструкция warp (warp1 in following) включает доступ к глобальной памяти (загрузка/сохранение); система времени выполнения планирует следующую готовую деформацию для выполнения.
Когда новый перекос выполняется,
Будет ли «доступ к памяти» из warp1 проводиться параллельно, то есть в то время как новый перекос работает?
Будет ли система времени выполнения помещать warp1 в очередь ожидания доступа к памяти; как только запрос памяти будет завершен, деформация затем перемещается в очередь выполнения?
Будет ли указатель инструкции, связанный с исполнением warp1, автоматически увеличиваться и параллельно новому исполнению warp, чтобы аннотировать, что запрос на память завершен?
Например, рассмотрит этот псевдокод, где output=input+array[i];
output
и input
оба являются скалярным переменным, отображенной в регистры, в то время как array
сохраняется в глобальной памяти.
Для выполнения вышеуказанной инструкции нам необходимо загрузить значение array[i]
в (временный) регистр перед обновлением вывода; т.е. приведенная выше инструкция может быть переведена на 2 команды макросъемки load reg, reg=&array[i]
, output_register=input_register+reg
.
Я хотел бы знать, как аппаратные средства и выполнение системы обработки исполнения выше 2 макроса инструкции по сборке, учитывая, что нагрузка не может немедленно вернуться
Благодарим вас за ответ и извините за то, что вы не уточнили мои вопросы. Я хотел бы узнать больше о «отдельном аппаратном обеспечении для отслеживания хода доступа к памяти». вы упомянули в своем ответе. Я обновил свой первоначальный запрос, как вам было сообщено. –
Я обновил ответ, чтобы ответить на измененные вопросы. – tera
Спасибо, Тера, все поняли. У меня есть еще один вопрос. ядра LDST в SMX, они только рассчитывают эффективный адрес для извлечения? могут ли они использоваться для арифметического сложения и вычитания с фиксированной точкой? –