Это ядро, использующее два массива __restrict__
int, компилирует нормально:
__global__ void kerFoo( int* __restrict__ arr0, int* __restrict__ arr1, int num )
{
for ( /* Iterate over array */ )
arr1[i] = arr0[i]; // Copy one to other
}
Однако, те же два массива int, составленные в массив указателей, не компилируются:
__global__ void kerFoo( int* __restrict__ arr[2], int num )
{
for ( /* Iterate over array */ )
arr[1][i] = arr[0][i]; // Copy one to other
}
Ошибка, указанная компилятором:
error: invalid use of `restrict'
У меня есть определенные структуры, которые составлены в виде массива указателей на массивы. (Например, структура, переданная ядру с int* arr[16]
.) Как я могу передать их ядру и иметь возможность применить к ним __restrict__
?