为什么我收到错误消息:“限制”不允许?

时间:2013-12-04 14:54:21

标签: c++ cuda compiler-errors restrict-qualifier

我正在写一个CUDA内核,想要__restrict__我的一些参数。我收到错误消息:

  

"restrict" is not allowed

某些变量类型是否不允许?对于某些参数组合?因为有些编译器标志?因为我一直很顽皮?

简化内核签名:

template <typename T> foo(
    const T a[],
    __restrict__ SomeType b[],
    const T c
) {
    /* etc. */
}

2 个答案:

答案 0 :(得分:7)

您只能在指针类型上使用__restrict__。这也是__restrict__有意义的唯一背景。

答案 1 :(得分:0)

如果您在函数的指针参数上使用了 __restrict__,但顺序错误,也会发生这种情况,例如:

__device__ int bar(float * __restrict__ x);