有两个cuda API 提供的函数,一直没搞明白:
(1) cudaError_t cudaMemset (void ∗ devPtr, int value, size_t count)说是将由devptr指向的存储区域中前count个字节的值设置为value. 但是我发现只能全部设置成0, 如果设置成其他的值就不对,比如:
cudaMemset(devPtr, 6, mem_size),然后写一个kernel将devptr中的每个数加上4,但返回来的就过并不是10,而是一个非常大的数,不知道为什么?不知道错在哪?
(2)关于将host中的数据拷贝到gpu的constant memory,我用的函数是cudaMemcpyToSymbol,虽然编译没错,但运行时,kernel没有启动,但是将constant memory换成device memory就没事,不知道错在那了?还请 指教。
我是这样用的:
__constant__ int *d_A=NULL;
cudaMalloc((void **)&d_A, mem_size_A);
cudaMemcpyToSymbol(d_A, A, mem_size_A, 0, cudaMemcpyHostToDevice); |