我试图告诉我的编译器使用#pragma unroll
. 但是,迭代次数由编译时变量决定,因此循环需要展开那么多次。像这样:
#define ITEMS 4
#pragma unroll (ITEMS + 1)
for (unsigned int ii = 0; ii <= ITEMS; ++ii)
/* do something */;
但是,编译器不喜欢这样,因为它给了我以下警告warning: extra characters in the unroll pragma (expected a single positive integer), ignoring pragma for this loop
:我当然理解这意味着什么:它需要一个整数而不是表达式。但是,有没有办法做到这一点,而无需每次更改时都更改 unroll 参数ITEMS
?
我使用的编译器是 CUDA 的 NVCC 编译器。