我正在写一个CUDA内核,想要__restrict__
我的一些参数。我收到错误消息:
"restrict" is not allowed
某些变量类型是否不允许?对于某些参数组合?因为有些编译器标志?因为我一直很顽皮?
简化内核签名:
template <typename T> foo(
const T a[],
__restrict__ SomeType b[],
const T c
) {
/* etc. */
}
答案 0 :(得分:7)
您只能在指针类型上使用__restrict__
。这也是__restrict__
有意义的唯一背景。
答案 1 :(得分:0)
如果您在函数的指针参数上使用了 __restrict__
,但顺序错误,也会发生这种情况,例如:
__device__ int bar(float * __restrict__ x);