В графическом процессоре NVIDIA могут ли ld/st и арифметические инструкции (например, int32 fp32) выполняться одновременно в одном и том же sm?

Особенно архитектура Тьюринга и Ампера,В одном и том же планировщике sm и warp,Могут ли варпы одновременно запускать ld/st и другие арифметические инструкции?

Я хочу знать, как работает варп-планировщик

1 ответ

В одном и том же sm и одном и том же планировщике варпов могут ли варпы одновременно запускать ld/st и другие арифметические инструкции?

Нет, если «одновременно» означает «выпущено в одном и том же такте».

В современных графических процессорах CUDA, включая turing и ampere, когда планировщик варпа выдает инструкцию, он выдает одну и ту же инструкцию всем потокам в варпе в любом заданном тактовом цикле.

Разные инструкции могут выполняться в разных тактовых циклах (конечно), и разные инструкции могут выполняться в одном и том же тактовом цикле, если эти инструкции выдаются разными планировщиками деформации в SM. Это также означает, что эти инструкции выдаются отдельным/отдельным модулям SM.

Так, например, целочисленная инструкция добавления, выдаваемая планировщиком деформации 0, должна быть выдана отдельным функциональным блокам по сравнению с командой загрузки/сохранения, выдаваемой планировщиком деформации 1 в том же SM. Для этого примера, поскольку инструкции разные, в любом случае нужны разные функциональные блоки, и это само собой разумеется.

Но даже если бы оба варп-планировщика выдавали, например, FADD (для 2 разных варпов), им пришлось бы выдавать отдельные функциональные блоки с плавающей запятой в СМ.

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

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