【发布时间】:2014-08-28 07:58:50
【问题描述】:
我一直在阅读许多与恒定记忆相关的 SO 问题,但我仍然不明白为什么我的程序无法正常工作。总体看起来如下
Common.cuh
__constant__ int numElements;
__global__
void kernelFunction();
Common.cu
#include "Common.cuh"
#include <stdio.h>
__global__
kernelFunction()
{
printf("NumElements = %d", numElements);
}
Test.cu
#include "Common.cuh"
int main()
{
int N = 100;
cudaMemcpyToSymbol(numElements,&N,sizeof(int));
kernelFunction<<<1,1>>>();
cudaDeviceSynchronize();
return 0;
}
它编译时没有错误,但是当打印numElements 的值时,我只是得到一个随机值。有人可以指出我正确的方向来理解这一点吗?
【问题讨论】: