У меня есть ядро CUDA с кучей циклов, которые я хочу развернуть. Прямо сейчас я делаю:
void mykernel(int* in, int* out, int baz) {
#pragma unroll
for(int i = 0; i < 4; i++) {
foo();
}
/* ... */
#pragma unroll
for(int i = 0; i < 6; i++) {
bar();
}
}
и так далее. Я хочу сказать (намекнуть) моему компилятору C/C++ развернуть все эти циклы, не требуя отдельной подсказки для каждого цикла. Однако я не хочу разворачивать все циклы во всем коде в файле, только в этой функции.
Если бы это был GCC, я мог бы сделать:
__attribute__((optimize("unroll-loops")))
void mykernel(int* in, int* out, int baz) {
for(int i = 0; i < 4; i++) {
foo();
}
/* ... */
for(int i = 0; i < 6; i++) {
bar();
}
}
Или используйте опцию push-and-popping. Есть ли что-то эквивалентное, что я могу сделать с CUDA?