#include <cuda_runtime.h>
#include <helper_cuda.h>
#include <stdio.h>
#include <stdlib.h>
__constant__ int a_dev[5];
__global__ void test(int *a_dev)
{
for(int i=0;i<5;i++)
{
printf("%d ",a_dev[i]);
}
}
int main()
{
int a[5]={1,2,3,4,5};
checkCudaErrors(cudaMemcpyToSymbol(a_dev,a,sizeof(int)*5));
printf("\n");
for(int i=0;i<5;i++)
{
printf("%d ",a[i]);
}
printf("\n");
for(int i=0;i<5;i++)
{
printf("%d ",a_dev[i]);
}
printf("\n");
test<<<1,1>>>(a_dev);
cudaDeviceSynchronize();
return 0;
}
结果如下:
1 2 3 4 5
0 0 0 0 0
请按任意键继续. . .
问题1
为什么我把a数据拷贝到常量内存中,打印出来全是0。。。?(如果是拷贝到全局存储器里,打印就没问题。。。)
问题2
为什么在test()函数里面打印的常量存储器a_dev不显示呢?我已经把计算能力参数改了,显卡计算能力为2.1
之前试过全局存储器,可以打印出来的