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