Мне нужно заставить компилятор Metal развернуть цикл в моей функции вычисления ядра. До сих пор я пытался поставить #pragma unroll(num_times)
перед for
циклом, но компилятор игнорирует этот оператор.
Кажется, что компилятор не разворачивает циклы автоматически - я сравнил время выполнения для 1) кода с for
циклом 2) того же кода, но с циклом, развернутым вручную. Развернутая вручную версия была в 3 раза быстрее.
Например: я хочу уйти от этого:
for (int i=0; i<3; i++) {
do_stuff();
}
к этому:
do_stuff();
do_stuff();
do_stuff();
Есть ли вообще что-то вроде разворачивания цикла в языке Metal C ++? Если да, как я могу сообщить компилятору, что я хочу развернуть цикл?