Ответ 1
CUDA - это скомпилированный язык. Развертка цикла - это оптимизация компилятора. Runtime loop unrolling будет означать какой-то интерпретатор времени выполнения или генерацию динамического кода. Этого явно не может быть.
Было бы разумно, что разворачиваемый случай выполняет столько же или больше инструкций, что и наивный цикл, потому что компилятор заменит цикл на повторения содержимого цикла. Если разворачиваемый случай выполняет меньше инструкций, это подразумевает, что компилятор предварительно вычисляет некоторые или все содержимое цикла и заменяет код постоянным результатом.
Все зависит от того, что содержится в цикле.