所有发布的代码示例中的 CUDA 常量内存似乎都是数组,但我在文档中找不到它作为要求。那么为什么 cudaMemcpyToSymbol 在以下情况中会因 cudaErrorInvalidSymbol 而失败:
__constant__ int dev;
int main()
{
int host = 2;
cudaError_t error = cudaMemcpyToSymbol(&dev, &host, sizeof(host));
printf(cudaGetErrorString(error));
}
Run Code Online (Sandbox Code Playgroud)
而以下成功?
__constant__ int dev[1];
int main()
{
int host = 2;
cudaError_t error = cudaMemcpyToSymbol(dev, &host, sizeof(host));
printf(cudaGetErrorString(error));
}
Run Code Online (Sandbox Code Playgroud) cuda ×1